Add basic EFI building

This commit is contained in:
Mykola Grymalyuk
2020-11-26 09:54:15 -07:00
parent cf342f3c44
commit ee7675b052
6 changed files with 1400 additions and 47 deletions

573
main.py
View File

@@ -1,51 +1,533 @@
from __future__ import print_function
from shutil import copy
from shutil import rmtree
import os
import json
import subprocess
import sys
import zipfile
# Lists all models and required patches
SupportedSMBIOS = [
# MacBook
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
# MacBook Air
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"MacBookAir5,1",
"MacBookAir5,2",
# MacBook Pro
"MacBookPro3,1",
"MacBookPro4,1",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro6,1",
"MacBookPro6,2",
"MacBookPro7,1",
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3",
"MacBookPro9,1",
"MacBookPro9,2",
"MacBookPro10,1",
"MacBookPro10,2",
# Mac Mini
"Macmini3,1",
"Macmini4,1",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"Macmini6,1",
"Macmini6,2",
# iMac
"iMac7,1",
"iMac8,1",
"iMac9,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2",
"iMac13,1",
"iMac13,2",
"iMac14,1",
"iMac14,2",
"iMac14,3",
# Mac Pro
"MacPro3,1",
"MacPro4,1",
"MacPro5,1",
# Xserve
"Xserve3,1"
]
## CPU patches
MissingSSE42 = [
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookPro3,1",
"MacBookPro4,1",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro7,1",
"Macmini3,1",
"Macmini4,1",
"iMac7,1",
"iMac8,1",
"iMac9,1",
"iMac10,1",
"MacPro3,1"
]
SSEEmulator = [
"MacPro3,1"
]
DualSocket = [
"MacPro3,1",
"MacPro4,1",
"MacPro5,1",
"Xserve3,1"
]
pciSSDT = [
"MacBookPro6,1",
"MacBookPro6,2",
"iMac11,1",
"iMac11,2",
"iMac11,3"
]
## Ethernet patches
EthernetNvidia = [
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro7,1",
"Macmini3,1",
"Macmini4,1",
"iMac9,1",
"iMac10,1"
]
EthernetMarvell = [
"MacBookPro3,1",
"MacBookPro4,1",
"iMac7,1",
"iMac8,1"
]
EthernetBroadcom = [
"MacBookPro6,1",
"MacBookPro6,2",
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2"
]
## Wifi patches
WifiAtheros = [
"MacBookPro3,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2",
"MacPro3,1",
"MacPro4,1"
]
WifiBCM94328 = [
"MacBookAir2,1",
"MacBookPro4,1",
"iMac7,1",
"iMac8,1"
]
WifiBCM94322 = [
"MacBook5,1",
"MacBook5,2",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"MacBookAir5,1",
"MacBookAir5,2",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro7,1",
]
WifiBCM943224 = [
"MacBook6,1",
"MacBook7,1",
"MacBookPro6,1",
"MacBookPro6,2",
"Macmini3,1",
"Macmini4,1",
]
WifiBCM94331 = [
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3",
"MacBookPro9,1",
"MacBookPro9,2",
"MacBookPro10,1",
"MacBookPro10,2",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"Macmini6,1",
"Macmini6,2",
]
## Audio
LegacyAudio = [
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"MacBookPro3,1",
"MacBookPro4,1",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro6,1",
"MacBookPro6,2",
"MacBookPro7,1",
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3",
"Macmini3,1",
"Macmini4,1",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"iMac7,1",
"iMac8,1",
"iMac9,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2",
"iMac14,3",
"MacPro3,1"
]
## GPU
LegacyGPU = [
"MacBook5,1",
"MacBook5,2",
"MacBook6,1",
"MacBook7,1",
"MacBookAir2,1",
"MacBookAir3,1",
"MacBookAir3,2",
"MacBookAir4,1",
"MacBookAir4,2",
"MacBookPro3,1",
"MacBookPro4,1",
"MacBookPro5,1",
"MacBookPro5,2",
"MacBookPro5,3",
"MacBookPro5,4",
"MacBookPro5,5",
"MacBookPro6,1",
"MacBookPro6,2",
"MacBookPro7,1",
"MacBookPro8,1",
"MacBookPro8,2",
"MacBookPro8,3",
"Macmini3,1",
"Macmini4,1",
"Macmini5,1",
"Macmini5,2",
"Macmini5,3",
"iMac7,1",
"iMac8,1",
"iMac9,1",
"iMac10,1",
"iMac11,1",
"iMac11,2",
"iMac11,3",
"iMac12,1",
"iMac12,2"
]
# List build versions
patcher_version = "0.0.1"
opencore_version = "0.6.3"
models = json.load(open("models.json"))
lilu_version = "1.4.9"
whatevergreen_version = "1.4.4"
airportbcrmfixup_path = "2.1.1"
bcm570_version = "1.0.0"
marvel_version = "1.0.0"
nforce_version = "1.0.0"
mce_version = "1.0.0"
mousse_version = "0.93"
telemetrap_version = "1.0.0"
io80211high_sierra_version = "1.0.0"
io80211mojave_version = "1.0.0"
# Setup file locations
current_path = os.getcwd()
# Payload Location
# OpenCore
opencore_path = os.path.join(current_path, "payloads/OpenCore/" "OpenCore-v%s.zip" % opencore_version)
# Kexts
lilu_path = os.path.join(current_path, "payloads/Kexts/Acidanthera/" "Lilu-v%s.zip" % lilu_version)
whatevergreen_path = os.path.join(current_path, "payloads/Kexts/Acidanthera/" "WhateverGreen-v%s.zip" % whatevergreen_version)
airportbcrmfixup_path = os.path.join(current_path, "payloads/Kexts/Acidanthera/" "AirportBrcmFixup-v%s.zip" % airportbcrmfixup_version)
bcm570_path = os.path.join(current_path, "payloads/Kexts/Ethernet/" "CatalinaBCM5701Ethernet-v%s.zip" % bcm570_version)
marvel_path = os.path.join(current_path, "payloads/Kexts/Ethernet/" "MarvelYukonEthernet-v%s.zip" % marvel_version)
nforce_path = os.path.join(current_path, "payloads/Kexts/Ethernet/" "nForceEthernet-v%s.zip" % nforce_version)
mce_path = os.path.join(current_path, "payloads/Kexts/Misc/" "AppleMCEReporterDisabler-v%s.zip" % mce_version)
mousse_path = os.path.join(current_path, "payloads/Kexts/SSE/" "AAAMouSSE-v%s.zip" % mousse_version)
telemetrap_path = os.path.join(current_path, "payloads/Kexts/SSE/" "telemetrap-v%s.zip" % telemetrap_version)
io80211high_sierra_path = os.path.join(current_path, "payloads/Kexts/Wifi/" "IO80211HighSierra-v%s.zip" % io80211high_sierra_version)
io80211mojave_path = os.path.join(current_path, "payloads/Kexts/Wifi/" "IO80211Mojave-v%s.zip" % io80211mojave_version)
# ACPI
pci_ssdt_path = os.path.join(current_path, "payloads/ACPI/" "SSDT-CPBG.aml")
# Build Location
opencore_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s.zip" % opencore_version)
acpi_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/ACPI" % opencore_version)
kext_path_build = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s/EFI/OC/Kexts" % opencore_version)
opencore_path_done = os.path.join(current_path, "Build-Folder/" "OpenCore-v%s" % opencore_version)
# Load models.json
#models = json.load(open("models.json"))
# Find SMBIOS of machine
current_model = subprocess.Popen("system_profiler SPHardwareDataType".split(), stdout=subprocess.PIPE)
current_model = [line.strip().split(": ", 1)[1] for line in current_model.stdout.read().split("\n") if line.strip().startswith("Model Identifier")][0]
print(current_model)
#if current_model not in models:
# print("Your model is not supported by this patcher!")
# sys.exit(1)
CustomSMBIOS=False
patches = None
MainMenu=True
while MainMenu:
os.system('clear')
print("#######################################################")
print(" OpenCore Legacy patcher v%s" % patcher_version)
print(" Detected Model: %s" % current_model)
print(" Current Model: %s" % current_model)
print("#######################################################")
print("")
if current_model not in models:
# TO-DO
# Figure out why this always fails
if current_model not in SupportedSMBIOS:
print(" Your model is not supported by this patcher!")
print("")
print(" If you plan to create the USB for another machine,")
print(" please select option 5")
print("-------------------------------------------------------")
print("")
print(" 1. Create macOS Installer - Not yet implemented")
print(" 2. Install OpenCore to macOS Installer - Not yet implemented")
print(" 3. Install OpenCore to internal drive - Not yet implemented")
print(" 4. Credits")
else:
pass
print(" This model is supported")
print("-------------------------------------------------------")
print("")
print(" 1. Build OpenCore")
print(" 2. Create macOS Installer - Not yet implemented")
print(" 3. Install OpenCore to USB drive - Not yet implemented")
print(" 4. Install OpenCore to internal drive - Not yet implemented")
print(" 5. Change model")
print(" 6. Exit")
print(" 6. Credits")
print(" 7. Exit")
print("")
MainMenu = raw_input('Please select an option: ')
if MainMenu=="1":
OpenCoreBuilderMenu=True
while OpenCoreBuilderMenu:
os.system('clear')
print("#######################################################")
print(" Build OpenCore for model: %s" % current_model)
print("#######################################################")
print("")
print(" 1. Auto build OpenCore")
print(" - This script determines what patches you require")
print(" - Recommended for novices")
print(" 2. Return to main menu")
print("")
OpenCoreBuilderMenu = raw_input('Please select an option: ')
if OpenCoreBuilderMenu=="1":
AutoBuilderMenu=True
while AutoBuilderMenu:
os.system('clear')
print("#######################################################")
print(" Building OpenCore for model: %s" % current_model)
print("#######################################################")
print("")
print("The current working directory:")
print (" %s" % current_path)
print("")
build_path = os.path.join(current_path, r'Build-Folder/')
if not os.path.exists(build_path):
os.makedirs(build_path)
print("Created Build Folder")
else:
print("Build Folder already present, skipping")
# Copy OpenCore into Build Folder
if os.path.exists(opencore_path_build):
print("Deleting old copy of OpenCore zip")
os.remove(opencore_path_build)
if os.path.exists(opencore_path_done):
print("Deleting old copy of OpenCore folder")
rmtree(opencore_path_done)
print("")
print("- Adding OpenCore to build folder")
copy(opencore_path, build_path)
zipfile.ZipFile(opencore_path_build).extractall(build_path)
print("- Adding Lilu %s" % lilu_version)
copy(lilu_path, kext_path_build)
print("- Adding WhateverGreen %s" % whatevergreen_version)
copy(whatevergreen_path, kext_path_build)
# Checks for kexts
# CPU Kext Patches
if current_model in DualSocket:
print("- Adding AppleMCEReporterDisabler v%s" % mce_version)
copy(mce_path, kext_path_build)
if current_model in SSEEmulator:
print("- Adding AAAMouSSE v%s" % mousse_version)
copy(mousse_version, kext_path_build)
if current_model in MissingSSE42:
print("- Adding Teletrap %s" % telemetrap_version)
copy(telemetrap_path, kext_path_build)
# Ethernet Patches
if current_model in EthernetNvidia:
print("- Adding nForceEthernet v%s" % nforce_version)
copy(nforce_path, kext_path_build)
if current_model in EthernetMarvell:
print("- Adding MarvelYukonEthernet v%s" % marvel_version)
copy(marvel_path, kext_path_build)
if current_model in EthernetBroadcom:
print("- Adding CatalinaBCM5701Ethernet %s" % bcm570_version)
copy(bcm570_path, kext_path_build)
# Wifi Patches
if current_model in WifiAtheros:
print("- Adding IO80211HighSierra v%s" % io80211high_sierra_version)
copy(io80211high_sierra_path, kext_path_build)
if current_model in WifiBCM94328:
print("- Wifi patches currently unsupported")
# TO-DO: Add El Capitan's IO80211
if current_model in WifiBCM94322:
print("- Adding IO80211Mojave %s" % io80211mojave_version)
copy(io80211mojave_path, kext_path_build)
if current_model in WifiBCM943224:
print("- Adding IO80211Mojave %s" % io80211mojave_version)
copy(io80211mojave_path, kext_path_build)
if current_model in WifiBCM94331:
print("- Wifi patches currently unsupported")
# TO-DO: Add Fake ID and AirportBrcmFixup for native support
# Checks for ACPI
# Add SSDTs
if current_model in pciSSDT:
print("- SSDT-CPBG.aml")
copy(pci_ssdt_path, acpi_path_build)
# Add Config.plist
# Clean up Build Folder
print("")
print("Cleaning build folder")
os.chdir(kext_path_build)
extension = ".zip"
for item in os.listdir(kext_path_build): # loop through items in dir
if item.endswith(extension): # check for ".zip" extension
file_name = os.path.abspath(item) # get full path of files
zip_ref = zipfile.ZipFile(file_name) # create zipfile object
zip_ref.extractall(kext_path_build) # extract file to dir
zip_ref.close() # close file
os.remove(file_name) # delete zipped file
rmtree("__MACOSX")
os.chdir(build_path)
rmtree("__MACOSX")
os.remove(opencore_path_build)
os.chdir(current_path)
print("")
print("Your OpenCore EFI has been built at:")
print(" %s" % opencore_path_done)
AutoBuilderMenu = raw_input("Press any key to return to previous menu: ")
if AutoBuilderMenu=="1":
print("Returning to previous menu...")
AutoBuilderMenu=False
OpenCoreBuilderMenu=False
elif OpenCoreBuilderMenu=="2":
print("\n Returning to main menu...")
OpenCoreBuilderMenu=False
MainMenu=True
else:
print("\n Not Valid Choice Try again")
if MainMenu=="2":
macOSInstallerMenu=True
while macOSInstallerMenu:
os.system('clear')
@@ -57,9 +539,7 @@ while MainMenu:
print(" Supported OSes:")
print("")
print(" 1. macOS 11, Big Sur - Not yet implemented")
print(" 2. macOS 10.15, Catalina - Not yet implemented")
print(" 3. macOS 10.14, Mojave - Not yet implemented")
print(" 4. Return to main menu")
print(" 2. Return to main menu")
print("")
macOSInstallerMenu = raw_input('Please select an option: ')
@@ -67,40 +547,16 @@ while MainMenu:
if macOSInstallerMenu=="1":
print("\n Not yet implemented")
elif macOSInstallerMenu=="2":
print("\n Not yet implemented")
elif macOSInstallerMenu=="3":
print("\n Not yet implemented")
elif macOSInstallerMenu=="4":
print("\n Returning to main menu...")
macOSInstallerMenu=False
MainMenu=True
else:
print("\n Not Valid Choice Try again")
elif MainMenu=="2":
print("\n Not yet implemented")
elif MainMenu=="3":
print("\n Not yet implemented")
elif MainMenu=="4":
CreditMenu=True
while CreditMenu:
os.system('clear')
print("#######################################################")
print(" Credits")
print("#######################################################")
print("")
print(" Many thanks to the following:")
print("")
print(" - Acidanthera: OpenCore, kexts and other tools")
print(" - DhinakG: Writing and maintaining this Patcher")
print(" - Khronokernel: Writing and maintaining this Patcher")
print("")
CreditMenu = raw_input(" Press 1 to exit: ")
if CreditMenu=="1":
print("Returning to main menu...")
CreditMenu=False
MainMenu=True
print("\n Not yet implemented")
elif MainMenu=="5":
SMBIOSMenu=True
while SMBIOSMenu:
@@ -115,15 +571,40 @@ while MainMenu:
print(" system_profiler SPHardwareDataType | grep 'Model Identifier'")
print("")
SMBIOSOption = raw_input('Please enter the SMBIOS of your machine: ')
print("New SMBIOS: %s" % SMBIOSOption)
print("")
print(" New SMBIOS: %s" % SMBIOSOption)
print("")
SMBIOSMenuYN = raw_input("Is this correcy?(y/n)")
if SMBIOSMenuYN in {"y", "Y", "yes", "Yes"}:
SMBIOSMenu=False
current_model = SMBIOSOption
MainMenu=True
# Set variabel to show we're not patching the system
# Ensures we don't use logic for determining the Wifi card model
CustomSMBIOS=True
elif MainMenu=="6":
CreditMenu=True
while CreditMenu:
os.system('clear')
print("#######################################################")
print(" Credits")
print("#######################################################")
print("")
print(" Many thanks to the following:")
print("")
print(" - Acidanthera: OpenCore, kexts and other tools")
print(" - DhinakG: Writing and maintaining this Patcher")
print(" - Khronokernel: Writing and maintaining this Patcher")
print(" - Syncretic: AAAMouSSE and telemetrap")
print("")
CreditMenu = raw_input(" Press any key to exit: ")
if CreditMenu=="1":
print("Returning to main menu...")
CreditMenu=False
MainMenu=True
elif MainMenu=="7":
print("\n Closing program...")
sys.exit(1)
else:

Binary file not shown.

Binary file not shown.

BIN
payloads/Tools/gfxutil Executable file

Binary file not shown.

View File

@@ -0,0 +1,872 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ACPI</key>
<dict>
<key>Add</key>
<array>
<dict>
<key>Enabled</key>
<false/>
<key>Comment</key>
<string>Patch CPBG for Arrendale, Lynnfield and Clarkdale</string>
<key>Path</key>
<string>SSDT-CPBG.aml</string>
</dict>
</array>
<key>Delete</key>
<array/>
<key>Patch</key>
<array>
<dict>
<key>Comment</key>
<string>XHC1 to SHCI</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<false/>
<key>Find</key>
<data>WEhDMQ==</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data></data>
<key>OemTableId</key>
<data></data>
<key>Replace</key>
<data>U0hDSQ==</data>
<key>ReplaceMask</key>
<data></data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data></data>
</dict>
<dict>
<key>Comment</key>
<string>EHC1 to EH01</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<false/>
<key>Find</key>
<data>RUhDMQ==</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data></data>
<key>OemTableId</key>
<data></data>
<key>Replace</key>
<data>RUgwMQ==</data>
<key>ReplaceMask</key>
<data></data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data></data>
</dict>
<dict>
<key>Comment</key>
<string>EHC2 to EH02</string>
<key>Count</key>
<integer>0</integer>
<key>Enabled</key>
<false/>
<key>Find</key>
<data>RUhDMg==</data>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data></data>
<key>OemTableId</key>
<data></data>
<key>Replace</key>
<data>RUgwMg==</data>
<key>ReplaceMask</key>
<data></data>
<key>Skip</key>
<integer>0</integer>
<key>TableLength</key>
<integer>0</integer>
<key>TableSignature</key>
<data></data>
</dict>
</array>
<key>Quirks</key>
<dict>
<key>FadtEnableReset</key>
<false/>
<key>NormalizeHeaders</key>
<false/>
<key>RebaseRegions</key>
<false/>
<key>ResetHwSig</key>
<false/>
<key>ResetLogoStatus</key>
<false/>
</dict>
</dict>
<key>Booter</key>
<dict>
<key>MmioWhitelist</key>
<array/>
<key>Quirks</key>
<dict>
<key>AvoidRuntimeDefrag</key>
<false/>
<key>DevirtualiseMmio</key>
<false/>
<key>DisableSingleUser</key>
<false/>
<key>DisableVariableWrite</key>
<false/>
<key>DiscardHibernateMap</key>
<false/>
<key>EnableSafeModeSlide</key>
<false/>
<key>EnableWriteUnprotector</key>
<false/>
<key>ForceExitBootServices</key>
<false/>
<key>ProtectMemoryRegions</key>
<false/>
<key>ProtectSecureBoot</key>
<false/>
<key>ProtectUefiServices</key>
<false/>
<key>ProvideCustomSlide</key>
<false/>
<key>ProvideMaxSlide</key>
<integer>0</integer>
<key>RebuildAppleMemoryMap</key>
<false/>
<key>SetupVirtualMap</key>
<false/>
<key>SignalAppleOS</key>
<false/>
<key>SyncRuntimePermissions</key>
<false/>
</dict>
</dict>
<key>DeviceProperties</key>
<dict>
<key>Add</key>
<dict>
<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
<dict>
<key>layout-id</key>
<data>AQAAAA==</data>
</dict>
</dict>
<key>Delete</key>
<dict/>
</dict>
<key>Kernel</key>
<dict>
<key>Add</key>
<array>
<dict>
<key>Comment</key>
<string>Patching Engine</string>
<key>Enabled</key>
<true/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>BundlePath</key>
<string>Lilu.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/Lilu</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>GPU Patching</string>
<key>Enabled</key>
<true/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>BundlePath</key>
<string>WhateverGreen.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/WhateverGreen</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>SSE Emulator</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>18.0.0</string>
<key>BundlePath</key>
<string>AAAMouSSE.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/MouSSE</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>SSE Patcher</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>18.0.0</string>
<key>BundlePath</key>
<string>telemetrap.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/telemetrap</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>4331 Wifi Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>20.0.0</string>
<key>BundlePath</key>
<string>AirportBrcmFixup.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/AirportBrcmFixup</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>4331 Wifi Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>20.0.0</string>
<key>BundlePath</key>
<string>AirportBrcmFixup.kext/Contents/PlugIns/AirPortBrcmNIC_Injector.kext</string>
<key>ExecutablePath</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>Dual Socket Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>19.0.0</string>
<key>BundlePath</key>
<string>AppleMCEReporterDisabler.kext</string>
<key>ExecutablePath</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>BCM Ethernet patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>20.0.0</string>
<key>BundlePath</key>
<string>CatalinaBCM5701Ethernet.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/CatalinaBCM5701Ethernet</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>Atheros Wifi Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>18.0.0</string>
<key>BundlePath</key>
<string>IO80211HighSierra.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/IO80211HighSierra</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>Atheros Wifi Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>18.0.0</string>
<key>BundlePath</key>
<string>IO80211HighSierra.kext/Contents/PlugIns/AirPortAtheros40.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/AirPortAtheros40</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>Broadcom Wifi Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>19.0.0</string>
<key>BundlePath</key>
<string>IO80211Mojave.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/IO80211Mojave</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>Broadcom Wifi Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>19.0.0</string>
<key>BundlePath</key>
<string>IO80211Mojave.kext/Contents/PlugIns/AirPortBrcm4331.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/AirPortBrcm4331</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>Marvel Ethernet Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>19.0.0</string>
<key>BundlePath</key>
<string>MarvelYukonEthernet.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/MarvelYukonEthernet</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
<dict>
<key>Comment</key>
<string>Nvidia Ethernet Patch</string>
<key>Enabled</key>
<false/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>19.0.0</string>
<key>BundlePath</key>
<string>nForceEthernet.kext</string>
<key>ExecutablePath</key>
<string>Contents/MacOS/nForceEthernet</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
</array>
<key>Block</key>
<array/>
<key>Emulate</key>
<dict>
<key>DummyPowerManagement</key>
<false/>
<key>Cpuid1Data</key>
<data></data>
<key>Cpuid1Mask</key>
<data></data>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
</dict>
<key>Force</key>
<array/>
<key>Patch</key>
<array>
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>Base</key>
<string>_isSingleUser</string>
<key>Comment</key>
<string>Patch IOHIDFamily</string>
<key>Count</key>
<integer>1</integer>
<key>Enabled</key>
<false/>
<key>Find</key>
<data></data>
<key>Identifier</key>
<string>com.apple.iokit.IOHIDFamily</string>
<key>Limit</key>
<integer>0</integer>
<key>Mask</key>
<data></data>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>20.0.0</string>
<key>Replace</key>
<data>uAEAAADD</data>
<key>ReplaceMask</key>
<data></data>
<key>Skip</key>
<integer>0</integer>
</dict>
</array>
<key>Quirks</key>
<dict>
<key>AppleCpuPmCfgLock</key>
<false/>
<key>AppleXcpmCfgLock</key>
<false/>
<key>AppleXcpmExtraMsrs</key>
<false/>
<key>AppleXcpmForceBoost</key>
<false/>
<key>CustomSMBIOSGuid</key>
<false/>
<key>DisableIoMapper</key>
<false/>
<key>DisableLinkeditJettison</key>
<true/>
<key>DisableRtcChecksum</key>
<false/>
<key>ExtendBTFeatureFlags</key>
<false/>
<key>ExternalDiskIcons</key>
<false/>
<key>ForceSecureBootScheme</key>
<false/>
<key>IncreasePciBarSize</key>
<false/>
<key>LapicKernelPanic</key>
<false/>
<key>LegacyCommpage</key>
<false/>
<key>PanicNoKextDump</key>
<false/>
<key>PowerTimeoutKernelPanic</key>
<false/>
<key>ThirdPartyDrives</key>
<false/>
<key>XhciPortLimit</key>
<false/>
</dict>
<key>Scheme</key>
<dict>
<key>FuzzyMatch</key>
<true/>
<key>KernelArch</key>
<string>x86_64</string>
<key>KernelCache</key>
<string>Auto</string>
</dict>
</dict>
<key>Misc</key>
<dict>
<key>BlessOverride</key>
<array/>
<key>Boot</key>
<dict>
<key>ConsoleAttributes</key>
<integer>0</integer>
<key>HibernateMode</key>
<string>None</string>
<key>HideAuxiliary</key>
<true/>
<key>PickerAttributes</key>
<integer>1</integer>
<key>PickerAudioAssist</key>
<false/>
<key>PickerMode</key>
<string>External</string>
<key>PollAppleHotKeys</key>
<false/>
<key>ShowPicker</key>
<true/>
<key>TakeoffDelay</key>
<integer>0</integer>
<key>Timeout</key>
<integer>5</integer>
</dict>
<key>Debug</key>
<dict>
<key>AppleDebug</key>
<true/>
<key>ApplePanic</key>
<true/>
<key>DisableWatchDog</key>
<false/>
<key>DisplayDelay</key>
<integer>0</integer>
<key>DisplayLevel</key>
<integer>2147483650</integer>
<key>SerialInit</key>
<false/>
<key>SysReport</key>
<false/>
<key>Target</key>
<integer>3</integer>
</dict>
<key>Entries</key>
<array/>
<key>Security</key>
<dict>
<key>AllowNvramReset</key>
<true/>
<key>AllowSetDefault</key>
<true/>
<key>ApECID</key>
<integer>0</integer>
<key>AuthRestart</key>
<false/>
<key>BootProtect</key>
<string>Bootstrap</string>
<key>DmgLoading</key>
<string>Signed</string>
<key>EnablePassword</key>
<false/>
<key>ExposeSensitiveData</key>
<integer>6</integer>
<key>HaltLevel</key>
<integer>2147483648</integer>
<key>PasswordHash</key>
<data></data>
<key>PasswordSalt</key>
<data></data>
<key>ScanPolicy</key>
<integer>0</integer>
<key>SecureBootModel</key>
<string>x86legacy</string>
<key>Vault</key>
<string>Optional</string>
</dict>
<key>Tools</key>
<array>
<dict>
<key>Arguments</key>
<string></string>
<key>Auxiliary</key>
<true/>
<key>Name</key>
<string>BootKicker.efi</string>
<key>Comment</key>
<string>BootKicker.efi</string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>BootKicker.efi</string>
</dict>
<dict>
<key>Arguments</key>
<string></string>
<key>Auxiliary</key>
<true/>
<key>Name</key>
<string>OpenShell.efi</string>
<key>Comment</key>
<string>OpenShell.efi</string>
<key>Enabled</key>
<true/>
<key>Path</key>
<string>OpenShell.efi</string>
</dict>
</array>
</dict>
<key>NVRAM</key>
<dict>
<key>Add</key>
<dict>
<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
<dict>
<key>DefaultBackgroundColor</key>
<data>AAAAAA==</data>
<key>UIScale</key>
<data>AQ==</data>
</dict>
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
<dict>
<key>rtc-blacklist</key>
<data></data>
</dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>SystemAudioVolume</key>
<data>Rg==</data>
<key>boot-args</key>
<string>-v keepsyms=1</string>
<key>run-efi-updater</key>
<string>No</string>
<key>csr-active-config</key>
<data>AAAAAA==</data>
</dict>
</dict>
<key>Delete</key>
<dict>
<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
<array>
<string>UIScale</string>
<string>DefaultBackgroundColor</string>
</array>
<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
<array>
<string>rtc-blacklist</string>
</array>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<array>
<string>boot-args</string>
</array>
</dict>
<key>LegacyEnable</key>
<false/>
<key>LegacyOverwrite</key>
<false/>
<key>LegacySchema</key>
<dict>
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<array>
<string>EFILoginHiDPI</string>
<string>EFIBluetoothDelay</string>
<string>LocationServicesEnabled</string>
<string>SystemAudioVolume</string>
<string>SystemAudioVolumeDB</string>
<string>SystemAudioVolumeSaved</string>
<string>bluetoothActiveControllerInfo</string>
<string>bluetoothInternalControllerInfo</string>
<string>flagstate</string>
<string>fmm-computer-name</string>
<string>nvda_drv</string>
<string>prev-lang:kbd</string>
</array>
<key>8BE4DF61-93CA-11D2-AA0D-00E098032B8C</key>
<array>
<string>Boot0080</string>
<string>Boot0081</string>
<string>Boot0082</string>
<string>BootNext</string>
<string>BootOrder</string>
</array>
</dict>
<key>WriteFlash</key>
<true/>
</dict>
<key>PlatformInfo</key>
<dict>
<key>Automatic</key>
<true/>
<key>CustomMemory</key>
<false/>
<key>Generic</key>
<dict>
<key>AdviseWindows</key>
<false/>
<key>SystemMemoryStatus</key>
<string>Auto</string>
<key>MLB</key>
<string>M0000000000000001</string>
<key>ProcessorType</key>
<integer>0</integer>
<key>ROM</key>
<data>ESIzRFVm</data>
<key>SpoofVendor</key>
<true/>
<key>SystemProductName</key>
<string>iMac19,1</string>
<key>SystemSerialNumber</key>
<string>W00000000001</string>
<key>SystemUUID</key>
<string>00000000-0000-0000-0000-000000000000</string>
</dict>
<key>UpdateDataHub</key>
<true/>
<key>UpdateNVRAM</key>
<true/>
<key>UpdateSMBIOS</key>
<true/>
<key>UpdateSMBIOSMode</key>
<string>Create</string>
</dict>
<key>UEFI</key>
<dict>
<key>APFS</key>
<dict>
<key>EnableJumpstart</key>
<true/>
<key>GlobalConnect</key>
<false/>
<key>HideVerbose</key>
<true/>
<key>JumpstartHotPlug</key>
<false/>
<key>MinDate</key>
<integer>0</integer>
<key>MinVersion</key>
<integer>0</integer>
</dict>
<key>Audio</key>
<dict>
<key>AudioCodec</key>
<integer>0</integer>
<key>AudioDevice</key>
<string>PciRoot(0x0)/Pci(0x1b,0x0)</string>
<key>AudioOut</key>
<integer>0</integer>
<key>AudioSupport</key>
<false/>
<key>MinimumVolume</key>
<integer>20</integer>
<key>PlayChime</key>
<false/>
<key>VolumeAmplifier</key>
<integer>0</integer>
</dict>
<key>ConnectDrivers</key>
<true/>
<key>Drivers</key>
<array>
<string>NvmExpressDxe.efi</string>
<string>OpenCanopy.efi</string>
<string>OpenRuntime.efi</string>
</array>
<key>Input</key>
<dict>
<key>KeyFiltering</key>
<false/>
<key>KeyForgetThreshold</key>
<integer>5</integer>
<key>KeyMergeThreshold</key>
<integer>2</integer>
<key>KeySupport</key>
<false/>
<key>KeySupportMode</key>
<string>Auto</string>
<key>KeySwap</key>
<false/>
<key>PointerSupport</key>
<false/>
<key>PointerSupportMode</key>
<string>ASUS</string>
<key>TimerResolution</key>
<integer>50000</integer>
</dict>
<key>Output</key>
<dict>
<key>ClearScreenOnModeSwitch</key>
<false/>
<key>ConsoleMode</key>
<string></string>
<key>DirectGopRendering</key>
<false/>
<key>ForceResolution</key>
<false/>
<key>IgnoreTextInGraphics</key>
<false/>
<key>ProvideConsoleGop</key>
<true/>
<key>ReconnectOnResChange</key>
<false/>
<key>ReplaceTabWithSpace</key>
<false/>
<key>Resolution</key>
<string>Max</string>
<key>SanitiseClearScreen</key>
<false/>
<key>TextRenderer</key>
<string>BuiltinGraphics</string>
<key>UgaPassThrough</key>
<false/>
</dict>
<key>ProtocolOverrides</key>
<dict>
<key>AppleAudio</key>
<false/>
<key>AppleBootPolicy</key>
<false/>
<key>AppleDebugLog</key>
<false/>
<key>AppleEvent</key>
<false/>
<key>AppleFramebufferInfo</key>
<false/>
<key>AppleImageConversion</key>
<false/>
<key>AppleImg4Verification</key>
<false/>
<key>AppleKeyMap</key>
<false/>
<key>AppleRtcRam</key>
<false/>
<key>AppleSecureBoot</key>
<false/>
<key>AppleSmcIo</key>
<false/>
<key>AppleUserInterfaceTheme</key>
<false/>
<key>DataHub</key>
<false/>
<key>DeviceProperties</key>
<false/>
<key>FirmwareVolume</key>
<false/>
<key>HashServices</key>
<false/>
<key>OSInfo</key>
<false/>
<key>UnicodeCollation</key>
<false/>
</dict>
<key>Quirks</key>
<dict>
<key>DeduplicateBootOrder</key>
<true/>
<key>ExitBootServicesDelay</key>
<integer>0</integer>
<key>IgnoreInvalidFlexRatio</key>
<false/>
<key>ReleaseUsbOwnership</key>
<false/>
<key>RequestBootVarRouting</key>
<true/>
<key>TscSyncTimeout</key>
<integer>0</integer>
<key>UnblockFsConnect</key>
<false/>
</dict>
<key>ReservedMemory</key>
<array/>
</dict>
</dict>
</plist>