diff --git a/EFI/OC/Kexts/AppleALC.kext/Contents/Info.plist b/EFI/OC/Kexts/AppleALC.kext/Contents/Info.plist index 5a4955a..21ad5b5 100644 --- a/EFI/OC/Kexts/AppleALC.kext/Contents/Info.plist +++ b/EFI/OC/Kexts/AppleALC.kext/Contents/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 21G1974 + 21H1123 CFBundleDevelopmentRegion en CFBundleExecutable @@ -17,7 +17,7 @@ CFBundlePackageType KEXT CFBundleShortVersionString - 1.8.9 + 1.9.0 CFBundleSignature ???? CFBundleSupportedPlatforms @@ -25,7 +25,7 @@ MacOSX CFBundleVersion - 1.8.9 + 1.9.0 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild @@ -65,6 +65,59 @@ as.vit9696.AppleALC HDAConfigDefault + + AFGLowPowerState + + AwAAAA== + + Codec + Baio77 - ALC295 Lenovo_X1_Tablet_3°Gen + CodecID + 283902613 + ConfigData + + AUccEAFHHQABRx4XAUcfkAFHDAICFxwgAhcd + EAIXHiECFx8AAhcMAgEnHDABJx0AASceoAEn + H5ABlxxAAZcdEAGXHoEBlx8A + + FuncGroup + 1 + LayoutID + 69 + WakeConfigData + + AUcMAgIXDAI= + + WakeVerbReinit + + + + AFGLowPowerState + + AwAAAA== + + Codec + hoaug - ALC295 - Razer Blade 15 2018 Advanced + CodecID + 283902616 + ConfigData + + ASccMAEnHQABJx6gAScfkAGHHHABhx0QAYce + gQGHHwACFxwgAhcdEAIXHiECFx8AAUccEAFH + HQEBRx4XAUcfkAFHDAICBQAQAgQMIQIFACoC + BI8Y + + FuncGroup + 1 + LayoutID + 25 + WakeConfigData + + AUcMAgGHByU= + + WakeVerbReinit + + AFGLowPowerState @@ -8398,6 +8451,33 @@ WakeVerbReinit + + AFGLowPowerState + + AwAAAA== + + Codec + Lorys89 - Realtek ALC295/ALC3254 for Dell Latitude 7210 2-in-1 + CodecID + 283902613 + ConfigData + + AUccEAFHHQEBRx4XAUcfkAFHDAICFxwgAhcd + EAIXHisCFx8DAhcMAgEnHDABJx0BAScepgEn + H5ABlxxAAZcdEAGXHosBlx8DAZcHJAIFAEUC + BFKJ + + FuncGroup + 1 + LayoutID + 33 + WakeConfigData + + AUcMAgIXDAIBlwckAgUARQIEUok= + + WakeVerbReinit + + AFGLowPowerState @@ -8507,6 +8587,32 @@ WakeVerbReinit + + AFGLowPowerState + + AwAAAA== + + Codec + Piscean - Realtek ALC298 for Dell Precision 5540 + CodecID + 283902616 + ConfigData + + ASccMAEnHQEBJx6gAScfkAF3HBABdx0BAXce + FwF3H5ABhxxwAYcdIAGHHosBhx8CAhccIAIX + HRACFx4rAhcfAwF3DAIBhwclAhcIgw== + + FuncGroup + 1 + LayoutID + 15 + WakeConfigData + + AXcMAgGHByUCFwiDAScHIA== + + WakeVerbReinit + + AFGLowPowerState @@ -8813,6 +8919,35 @@ WakeVerbReinit + + AFGLowPowerState + + AwAAAA== + + Codec + Custom - Realtek ALC298 for Lenovo Yoga C940 by idalin + CodecID + 283902616 + ConfigData + + AXccEAF3HQEBdx4XAXcfkAF3DAIBRxwRAUcd + AQFHHhcBRx+QAUcMAgIXHBACFx0QAhceKwIX + HwQBJxzwAScdAAEnHgABJx9AAYccMAGHHQEB + hx6mAYcfkAHXHPAB1x0AAdceAAHXH0ABNxzw + ATcdAAE3HgABNx9AAecc8AHnHQAB5x4AAecf + QAH3HPAB9x0AAfceAAH3H0A= + + FuncGroup + 1 + LayoutID + 94 + WakeConfigData + + AXcMAgFHDAI= + + WakeVerbReinit + + AFGLowPowerState @@ -15931,6 +16066,34 @@ WakeVerbReinit + + AFGLowPowerState + + AwAAAA== + + Codec + ALC269 + CodecID + 283902569 + Comment + Ar4eR07 - ALC269VB for Tecno T1 IceLake + ConfigData + + AhccIAIXHRACFx4hAhcfBAEnHDABJx0AASce + pgEnH5ABhxxAAYcdkAGHHoEBhx8CAUccYAFH + HQABRx4XAUcfkAFHDAI= + + FuncGroup + 1 + LayoutID + 37 + WakeConfigData + + AUcMAg== + + WakeVerbReinit + + IOClass AppleALC diff --git a/EFI/OC/Kexts/AppleALC.kext/Contents/MacOS/AppleALC b/EFI/OC/Kexts/AppleALC.kext/Contents/MacOS/AppleALC index 55fe974..090b2c2 100755 Binary files a/EFI/OC/Kexts/AppleALC.kext/Contents/MacOS/AppleALC and b/EFI/OC/Kexts/AppleALC.kext/Contents/MacOS/AppleALC differ diff --git a/EFI/OC/OpenCore.efi b/EFI/OC/OpenCore.efi index f6dc8e0..fcc8558 100644 Binary files a/EFI/OC/OpenCore.efi and b/EFI/OC/OpenCore.efi differ diff --git a/EFI/OC/Resources/Font/Terminus.hex b/EFI/OC/Resources/Font/Terminus.hex new file mode 100644 index 0000000..d7422f7 --- /dev/null +++ b/EFI/OC/Resources/Font/Terminus.hex @@ -0,0 +1,1356 @@ +0000:0000EEC600C6C6C600C6C6EE00000000 +0020:00000000000000000000000000000000 +0021:00001818181818181800181800000000 +0022:00666666000000000000000000000000 +0023:00006C6C6CFE6C6CFE6C6C6C00000000 +0024:0018187EDBD8D87E1B1BDB7E18180000 +0025:000066D66C0C181830366B6600000000 +0026:0000386C6C3876DCCCCCDC7600000000 +0027:00181818000000000000000000000000 +0028:00000C18303030303030180C00000000 +0029:000030180C0C0C0C0C0C183000000000 +002A:00000000006C38FE386C000000000000 +002B:000000000018187E1818000000000000 +002C:00000000000000000000181830000000 +002D:00000000000000FE0000000000000000 +002E:00000000000000000000181800000000 +002F:000006060C0C18183030606000000000 +0030:00007CC6C6CEDEF6E6C6C67C00000000 +0031:00001838781818181818187E00000000 +0032:00007CC6C6060C183060C0FE00000000 +0033:00007CC6C6063C0606C6C67C00000000 +0034:0000060E1E3666C6FE06060600000000 +0035:0000FEC0C0C0FC060606C67C00000000 +0036:00003C60C0C0FCC6C6C6C67C00000000 +0037:0000FE06060C0C181830303000000000 +0038:00007CC6C6C67CC6C6C6C67C00000000 +0039:00007CC6C6C6C67E06060C7800000000 +003A:00000000001818000000181800000000 +003B:00000000001818000000181830000000 +003C:000000060C18306030180C0600000000 +003D:0000000000FE0000FE00000000000000 +003E:0000006030180C060C18306000000000 +003F:00007CC6C6C60C181800181800000000 +0040:00007EC3CFDBDBDBDBCFC07F00000000 +0041:00007CC6C6C6C6FEC6C6C6C600000000 +0042:0000FCC6C6C6FCC6C6C6C6FC00000000 +0043:00007CC6C6C0C0C0C0C6C67C00000000 +0044:0000F8CCC6C6C6C6C6C6CCF800000000 +0045:0000FEC0C0C0F8C0C0C0C0FE00000000 +0046:0000FEC0C0C0F8C0C0C0C0C000000000 +0047:00007CC6C6C0C0DEC6C6C67C00000000 +0048:0000C6C6C6C6FEC6C6C6C6C600000000 +0049:00003C18181818181818183C00000000 +004A:00001E0C0C0C0C0C0CCCCC7800000000 +004B:0000C6C6CCD8F0F0D8CCC6C600000000 +004C:0000C0C0C0C0C0C0C0C0C0FE00000000 +004D:000081C3E7FFDBC3C3C3C3C300000000 +004E:0000C6C6C6E6F6DECEC6C6C600000000 +004F:00007CC6C6C6C6C6C6C6C67C00000000 +0050:0000FCC6C6C6C6FCC0C0C0C000000000 +0051:00007CC6C6C6C6C6C6C6DE7C06000000 +0052:0000FCC6C6C6C6FCF0D8CCC600000000 +0053:00007CC6C0C07C0606C6C67C00000000 +0054:0000FF18181818181818181800000000 +0055:0000C6C6C6C6C6C6C6C6C67C00000000 +0056:0000C6C6C6C6C66C6C6C383800000000 +0057:0000C3C3C3C3C3DBFFE7C38100000000 +0058:0000C6C66C6C38386C6CC6C600000000 +0059:0000C3C366663C181818181800000000 +005A:0000FE06060C183060C0C0FE00000000 +005B:00003C30303030303030303C00000000 +005C:00006060303018180C0C060600000000 +005D:00003C0C0C0C0C0C0C0C0C3C00000000 +005E:00183C66000000000000000000000000 +005F:00000000000000000000000000FE0000 +0060:30180000000000000000000000000000 +0061:00000000007C067EC6C6C67E00000000 +0062:0000C0C0C0FCC6C6C6C6C6FC00000000 +0063:00000000007CC6C0C0C0C67C00000000 +0064:00000606067EC6C6C6C6C67E00000000 +0065:00000000007CC6C6FEC0C07C00000000 +0066:00001E3030FC30303030303000000000 +0067:00000000007EC6C6C6C6C67E06067C00 +0068:0000C0C0C0FCC6C6C6C6C6C600000000 +0069:00001818003818181818183C00000000 +006A:00000606000E06060606060666663C00 +006B:0000C0C0C0C6CCD8F0D8CCC600000000 +006C:00003818181818181818183C00000000 +006D:0000000000FEDBDBDBDBDBDB00000000 +006E:0000000000FCC6C6C6C6C6C600000000 +006F:00000000007CC6C6C6C6C67C00000000 +0070:0000000000FCC6C6C6C6C6FCC0C0C000 +0071:00000000007EC6C6C6C6C67E06060600 +0072:0000000000DEF0E0C0C0C0C000000000 +0073:00000000007EC0C07C0606FC00000000 +0074:0000303030FC30303030301E00000000 +0075:0000000000C6C6C6C6C6C67E00000000 +0076:0000000000C6C6C66C6C383800000000 +0077:0000000000C3C3DBDBDBDB7E00000000 +0078:0000000000C6C66C386CC6C600000000 +0079:0000000000C6C6C6C6C6C67E06067C00 +007A:0000000000FE0C183060C0FE00000000 +007B:00001C30303060303030301C00000000 +007C:00001818181818181818181800000000 +007D:0000701818180C181818187000000000 +007E:0073DBCE000000000000000000000000 +00A0:00000000000000000000000000000000 +00A1:00001818001818181818181800000000 +00A2:00000018187EDBD8D8D8DB7E18180000 +00A3:0000386C6060F860606066FE00000000 +00A4:00000000663C6666663C660000000000 +00A5:0000C3C3663C187E187E181800000000 +00A6:00001818181800001818181800000000 +00A7:003C6660386C6666361C06663C000000 +00A8:6C6C0000000000000000000000000000 +00A9:0000007E8199A5A1A599817E00000000 +00AA:003C063E663E007E0000000000000000 +00AB:00000000001B366CD86C361B00000000 +00AC:0000000000FE06060600000000000000 +00AD:000000000000007C0000000000000000 +00AE:0000007E81B9A5B9A9A5817E00000000 +00AF:7C000000000000000000000000000000 +00B0:00386C6C380000000000000000000000 +00B1:000000000018187E1818007E00000000 +00B2:00386C0C18307C000000000000000000 +00B3:00780C380C0C78000000000000000000 +00B4:18300000000000000000000000000000 +00B5:0000000000C6C6C6C6C6CEF6C0C0C000 +00B6:00007FDBDBDBDB7B1B1B1B1B00000000 +00B7:00000000000000181800000000000000 +00B8:00000000000000000000000030306000 +00B9:0018381818183C000000000000000000 +00BA:003C6666663C007E0000000000000000 +00BB:0000000000D86C361B366CD800000000 +00BC:0060E062666C183066CE9A3E06060000 +00BD:0060E062666C183060CE9B060C1F0000 +00BE:00E0306236EC183066CE9A3E06060000 +00BF:0000303000303060C6C6C67C00000000 +00C0:3018007CC6C6C6FEC6C6C6C600000000 +00C1:1830007CC6C6C6FEC6C6C6C600000000 +00C2:386C007CC6C6C6FEC6C6C6C600000000 +00C3:76DC007CC6C6C6FEC6C6C6C600000000 +00C4:6C6C007CC6C6C6FEC6C6C6C600000000 +00C5:386C387CC6C6C6FEC6C6C6C600000000 +00C6:00007FCCCCCCFFCCCCCCCCCF00000000 +00C7:00007CC6C6C0C0C0C0C6C67C30306000 +00C8:301800FEC0C0C0F8C0C0C0FE00000000 +00C9:183000FEC0C0C0F8C0C0C0FE00000000 +00CA:386C00FEC0C0C0F8C0C0C0FE00000000 +00CB:6C6C00FEC0C0C0F8C0C0C0FE00000000 +00CC:3018003C181818181818183C00000000 +00CD:0C18003C181818181818183C00000000 +00CE:386C003C181818181818183C00000000 +00CF:6666003C181818181818183C00000000 +00D0:00007C666363FB636363667C00000000 +00D1:76DC00C6C6E6F6DECEC6C6C600000000 +00D2:3018007CC6C6C6C6C6C6C67C00000000 +00D3:1830007CC6C6C6C6C6C6C67C00000000 +00D4:386C007CC6C6C6C6C6C6C67C00000000 +00D5:76DC007CC6C6C6C6C6C6C67C00000000 +00D6:6C6C007CC6C6C6C6C6C6C67C00000000 +00D7:0000000000C66C38386CC60000000000 +00D8:00007CC7C6CEDEF6E6C6C67C00000000 +00D9:3018C6C6C6C6C6C6C6C6C67C00000000 +00DA:1830C6C6C6C6C6C6C6C6C67C00000000 +00DB:386C00C6C6C6C6C6C6C6C67C00000000 +00DC:6C6C00C6C6C6C6C6C6C6C67C00000000 +00DD:0C18C3C366663C181818181800000000 +00DE:0000C0C0FCC6C6C6C6FCC0C000000000 +00DF:000078CCCCC8FCC6C6C6E6DC00000000 +00E0:00003018007C067EC6C6C67E00000000 +00E1:00001830007C067EC6C6C67E00000000 +00E2:0000386C007C067EC6C6C67E00000000 +00E3:000076DC007C067EC6C6C67E00000000 +00E4:00006C6C007C067EC6C6C67E00000000 +00E5:0000386C387C067EC6C6C67E00000000 +00E6:0000000000761B7BDFD8D86E00000000 +00E7:00000000007CC6C0C0C0C67C30306000 +00E8:00003018007CC6C6FEC0C07C00000000 +00E9:00001830007CC6C6FEC0C07C00000000 +00EA:0000386C007CC6C6FEC0C07C00000000 +00EB:00006C6C007CC6C6FEC0C07C00000000 +00EC:00003018003818181818183C00000000 +00ED:00000C18003818181818183C00000000 +00EE:0000386C003818181818183C00000000 +00EF:00006C6C003818181818183C00000000 +00F0:00006830587CC6C6C6C6C67C00000000 +00F1:000076DC00FCC6C6C6C6C6C600000000 +00F2:00003018007CC6C6C6C6C67C00000000 +00F3:00001830007CC6C6C6C6C67C00000000 +00F4:0000386C007CC6C6C6C6C67C00000000 +00F5:000076DC007CC6C6C6C6C67C00000000 +00F6:00006C6C007CC6C6C6C6C67C00000000 +00F7:000000001818007E0018180000000000 +00F8:00000000003D676E7E76E6BC00000000 +00F9:0000301800C6C6C6C6C6C67E00000000 +00FA:0000183000C6C6C6C6C6C67E00000000 +00FB:0000386C00C6C6C6C6C6C67E00000000 +00FC:00006C6C00C6C6C6C6C6C67E00000000 +00FD:0000183000C6C6C6C6C6C67E06067C00 +00FE:0000C0C0C0FCC6C6C6C6C6FCC0C0C000 +00FF:00006C6C00C6C6C6C6C6C67E06067C00 +0100:7C007CC6C6C6C6FEC6C6C6C600000000 +0101:0000007C007C067EC6C6C67E00000000 +0102:6C38007CC6C6C6FEC6C6C6C600000000 +0103:00006C38007C067EC6C6C67E00000000 +0104:00007CC6C6C6C6FEC6C6C6C6060C0700 +0105:00000000007C067EC6C6C67E060C0700 +0106:1830007CC6C6C0C0C0C6C67C00000000 +0107:00001830007CC6C0C0C0C67C00000000 +0108:386C007CC6C6C0C0C0C6C67C00000000 +0109:0000386C007CC6C0C0C0C67C00000000 +010A:1818007CC6C6C0C0C0C6C67C00000000 +010B:00001818007CC6C0C0C0C67C00000000 +010C:6C38007CC6C6C0C0C0C6C67C00000000 +010D:00006C38007CC6C0C0C0C67C00000000 +010E:6C3800F8CCC6C6C6C6C6CCF800000000 +010F:6C380606067EC6C6C6C6C67E00000000 +0110:00007C666363FB636363667C00000000 +0111:0000061F067EC6C6C6C6C67E00000000 +0112:7C00FEC0C0C0F8C0C0C0C0FE00000000 +0113:0000007C007CC6C6FEC0C07C00000000 +0114:6C3800FEC0C0C0F8C0C0C0FE00000000 +0115:00006C38007CC6C6FEC0C07C00000000 +0116:181800FEC0C0C0F8C0C0C0FE00000000 +0117:00001818007CC6C6FEC0C07C00000000 +0118:0000FEC0C0C0F8C0C0C0C0FE060C0700 +0119:00000000007CC6C6FEC0C07C18301C00 +011A:6C3800FEC0C0C0F8C0C0C0FE00000000 +011B:00006C38007CC6C6FEC0C07C00000000 +011C:386C007CC6C0C0DEC6C6C67C00000000 +011D:0000386C007EC6C6C6C6C67E06067C00 +011E:6C38007CC6C0C0DEC6C6C67C00000000 +011F:00006C38007EC6C6C6C6C67E06067C00 +0120:1818007CC6C0C0DEC6C6C67C00000000 +0121:00001818007EC6C6C6C6C67E06067C00 +0122:00007CC6C6C0C0DEC6C6C67C00303060 +0123:000C1818007EC6C6C6C6C67E06067C00 +0124:386C00C6C6C6C6FEC6C6C6C600000000 +0125:1C36C0C0C0FCC6C6C6C6C6C600000000 +0126:000066FF66667E666666666600000000 +0127:000060F8607E63636363636300000000 +0128:76DC003C181818181818183C00000000 +0129:000076DC003818181818183C00000000 +012A:7E003C18181818181818183C00000000 +012B:0000007C003818181818183C00000000 +012C:6C38003C181818181818183C00000000 +012D:00006C38003818181818183C00000000 +012E:00003C18181818181818183C18301C00 +012F:00001818003818181818183C18301C00 +0130:1818003C181818181818183C00000000 +0131:00000000003818181818183C00000000 +0132:0000CFC6C6C6C6C6C6F6F6DC00000000 +0133:0000C6C600C6C6C6C6C6C6C636361C00 +0134:1C36001E0C0C0C0C0CCCCC7800000000 +0135:00000E1B000E06060606060666663C00 +0136:0000C6C6CCD8F0F0D8CCC6C600303060 +0137:0000C0C0C0C6CCD8F0D8CCC600303060 +0138:0000000000C6CCD8F0D8CCC600000000 +0139:60C000C0C0C0C0C0C0C0C0FE00000000 +013A:0C180038181818181818183C00000000 +013B:0000C0C0C0C0C0C0C0C0C0FE00303060 +013C:00003818181818181818183C00181830 +013D:6C38C0C0C0C0C0C0C0C0C0FE00000000 +013E:6C380038181818181818183C00000000 +013F:0000C0C0C0C0CCCCC0C0C0FE00000000 +0140:0000381818181B1B1818183C00000000 +0141:00006060606070E06060607F00000000 +0142:0000381818181C381818183C00000000 +0143:1830C6C6C6E6F6DECEC6C6C600000000 +0144:0000183000FCC6C6C6C6C6C600000000 +0145:0000C6C6C6E6F6DECEC6C6C600303060 +0146:0000000000FCC6C6C6C6C6C600303060 +0147:6C38C6C6C6E6F6DECEC6C6C600000000 +0148:00006C3800FCC6C6C6C6C6C600000000 +0149:006060C000FCC6C6C6C6C6C600000000 +014A:0000C6C6C6E6F6DECEC6C6C606061C00 +014B:0000000000FCC6C6C6C6C6C606061C00 +014C:7C007CC6C6C6C6C6C6C6C67C00000000 +014D:0000007C007CC6C6C6C6C67C00000000 +014E:6C38007CC6C6C6C6C6C6C67C00000000 +014F:00006C38007CC6C6C6C6C67C00000000 +0150:366C007CC6C6C6C6C6C6C67C00000000 +0151:0000366C007CC6C6C6C6C67C00000000 +0152:00007FCCCCCCCFCCCCCCCC7F00000000 +0153:00000000007EDBDBDFD8D87E00000000 +0154:183000FCC6C6C6FCF0D8CCC600000000 +0155:0000183000DEF0E0C0C0C0C000000000 +0156:0000FCC6C6C6C6FCF0D8CCC600303060 +0157:00000000006F787060606060006060C0 +0158:6C3800FCC6C6C6FCF0D8CCC600000000 +0159:00006C3800DEF0E0C0C0C0C000000000 +015A:1830007CC6C0C07C0606C67C00000000 +015B:00000C18007EC0C07C0606FC00000000 +015C:386C007CC6C0C07C0606C67C00000000 +015D:0000386C007EC0C07C0606FC00000000 +015E:00007CC6C0C07C0606C6C67C30306000 +015F:00000000007EC0C07C0606FC30306000 +0160:6C38007CC6C0C07C0606C67C00000000 +0161:00006C38007EC0C07C0606FC00000000 +0162:0000FF1818181818181818180C0C1800 +0163:0000303030FC30303030301E0C0C1800 +0164:6C3800FF181818181818181800000000 +0165:6C38003030FC30303030301E00000000 +0166:0000FF1818187E181818181800000000 +0167:0000303030FC30783030301E00000000 +0168:76DC00C6C6C6C6C6C6C6C67C00000000 +0169:000076DC00C6C6C6C6C6C67E00000000 +016A:7C00C6C6C6C6C6C6C6C6C67C00000000 +016B:0000007C00C6C6C6C6C6C67E00000000 +016C:6C38C6C6C6C6C6C6C6C6C67C00000000 +016D:00006C3800C6C6C6C6C6C67E00000000 +016E:386C38C6C6C6C6C6C6C6C67C00000000 +016F:0000386C38C6C6C6C6C6C67E00000000 +0170:366C00C6C6C6C6C6C6C6C67C00000000 +0171:0000366C00C6C6C6C6C6C67E00000000 +0172:0000C6C6C6C6C6C6C6C6C67C18301C00 +0173:0000000000C6C6C6C6C6C67E060C0700 +0174:386C00C3C3C3C3DBFFE7C38100000000 +0175:0000386C00C3C3DBDBDBDB7E00000000 +0176:386C00C3C366663C1818181800000000 +0177:0000386C00C6C6C6C6C6C67E06067C00 +0178:666600C3C366663C1818181800000000 +0179:183000FE060C183060C0C0FE00000000 +017A:0000183000FE0C183060C0FE00000000 +017B:181800FE060C183060C0C0FE00000000 +017C:0000181800FE0C183060C0FE00000000 +017D:6C3800FE060C183060C0C0FE00000000 +017E:00006C3800FE0C183060C0FE00000000 +017F:00001E30303030303030303000000000 +0186:00007CC6C606060606C6C67C00000000 +018E:0000FE0606063E06060606FE00000000 +018F:00007CC60606FEC6C6C6C67C00000000 +0190:00007CC6C6C078C0C0C6C67C00000000 +0192:00000E1B18187E181818181818D87000 +019D:0000636363737B6F676363636060C000 +019E:0000000000FCC6C6C6C6C6C606060600 +01B5:0000FE060C18FE3060C0C0FE00000000 +01B6:0000000000FE0C18FC3060FE00000000 +01B7:0000FE060C183C0606C6C67C00000000 +01CD:6C38007CC6C6C6FEC6C6C6C600000000 +01CE:00006C38007C067EC6C6C67E00000000 +01CF:6C38003C181818181818183C00000000 +01D0:00006C38003818181818183C00000000 +01D1:6C38007CC6C6C6C6C6C6C67C00000000 +01D2:00006C38007CC6C6C6C6C67C00000000 +01D3:6C38C6C6C6C6C6C6C6C6C67C00000000 +01D4:00006C3800C6C6C6C6C6C67E00000000 +01E2:7E007FCCCCCCFFCCCCCCCCCF00000000 +01E3:0000007E00761B7BDFD8D86E00000000 +01E4:00007CC6C6C0C0DEC6DFC67C00000000 +01E5:00000000007EC6C6DFC6C67E06067C00 +01E6:6C38007CC6C0C0DEC6C6C67C00000000 +01E7:00006C38007EC6C6C6C6C67E06067C00 +01E8:6C38C6C6CCD8F0F0D8CCC6C600000000 +01E9:6C38C0C0C0C6CCD8F0D8CCC600000000 +01EA:00007CC6C6C6C6C6C6C6C67C18301C00 +01EB:00000000007CC6C6C6C6C67C18301C00 +01EC:7C007CC6C6C6C6C6C6C6C67C18301C00 +01ED:0000007C007CC6C6C6C6C67C18301C00 +01EE:6C3800FE0C183C0606C6C67C00000000 +01EF:00006C3800FE060C183C0606C6C67C00 +01F0:00001B0E000E06060606060666663C00 +01F4:1830007CC6C0C0DEC6C6C67C00000000 +01F5:00000C18007EC6C6C6C6C67E06067C00 +01FC:0C18007FCCCCCCFFCCCCCCCF00000000 +01FD:00000C1800761B7BDFD8D86E00000000 +01FE:1830007CC7C6CEDEF6E6C67C00000000 +01FF:00001830003D676E7E76E6BC00000000 +0218:00007CC6C0C07C0606C6C67C00303060 +0219:00000000007EC0C07C0606FC00303060 +021A:0000FF18181818181818181800181830 +021B:0000303030FC30303030301E000C0C18 +0232:7E00C3C366663C181818181800000000 +0233:0000007C00C6C6C6C6C6C67E06067C00 +0237:00000000000E06060606060666663C00 +0254:00000000007CC6060606C67C00000000 +0258:00000000007CC6C6FE06067C00000000 +0259:00000000007C0606FEC6C67C00000000 +025B:00000000007CC6C078C0C67C00000000 +0272:00000000007E6363636363636060C000 +0292:0000000000FE060C183C0606C6C67C00 +02BB:18303000000000000000000000000000 +02BC:18183000000000000000000000000000 +02BD:30301800000000000000000000000000 +02C6:386C0000000000000000000000000000 +02C7:6C380000000000000000000000000000 +02D8:6C380000000000000000000000000000 +02D9:18180000000000000000000000000000 +02DB:00000000000000000000000018301C00 +02DC:76DC0000000000000000000000000000 +02DD:366C0000000000000000000000000000 +0300:30180000000000000000000000000000 +0301:18300000000000000000000000000000 +0302:386C0000000000000000000000000000 +0303:76DC0000000000000000000000000000 +0304:7C000000000000000000000000000000 +0305:FE000000000000000000000000000000 +0306:6C380000000000000000000000000000 +0307:18180000000000000000000000000000 +0308:6C6C0000000000000000000000000000 +030A:386C3800000000000000000000000000 +030B:366C0000000000000000000000000000 +030C:6C380000000000000000000000000000 +0329:00000000000000000000000000181800 +0384:60C00000000000000000000000000000 +0385:1830006C000000000000000000000000 +0386:60C07CC6C6C6C6FEC6C6C6C600000000 +0387:00000000001818000000000000000000 +0388:60C000FEC0C0C0F8C0C0C0FE00000000 +0389:60C000C6C6C6C6FEC6C6C6C600000000 +038A:60C03C18181818181818183C00000000 +038C:60C07CC6C6C6C6C6C6C6C67C00000000 +038E:60C000C3C366663C1818181800000000 +038F:60C07CC6C6C6C6C6C66C6CEE00000000 +0390:1830D8D8007030303030301C00000000 +0391:00007CC6C6C6C6FEC6C6C6C600000000 +0392:0000FCC6C6C6FCC6C6C6C6FC00000000 +0393:0000FEC0C0C0C0C0C0C0C0C000000000 +0394:000018183C3C666666C3C3FF00000000 +0395:0000FEC0C0C0F8C0C0C0C0FE00000000 +0396:0000FE06060C183060C0C0FE00000000 +0397:0000C6C6C6C6FEC6C6C6C6C600000000 +0398:00007CC6C6C6D6D6C6C6C67C00000000 +0399:00003C18181818181818183C00000000 +039A:0000C6C6CCD8F0F0D8CCC6C600000000 +039B:000018183C3C666666C3C3C300000000 +039C:000081C3E7FFDBC3C3C3C3C300000000 +039D:0000C6C6C6E6F6DECEC6C6C600000000 +039E:0000FE0000007C00000000FE00000000 +039F:00007CC6C6C6C6C6C6C6C67C00000000 +03A0:0000FEC6C6C6C6C6C6C6C6C600000000 +03A1:0000FCC6C6C6C6FCC0C0C0C000000000 +03A3:0000FEC0603018183060C0FE00000000 +03A4:0000FF18181818181818181800000000 +03A5:0000C3C366663C181818181800000000 +03A6:0000187EDBDBDBDBDBDB7E1800000000 +03A7:0000C6C66C6C38386C6CC6C600000000 +03A8:0000DBDBDBDBDBDBDB7E181800000000 +03A9:00007CC6C6C6C6C6C66C6CEE00000000 +03AA:6666003C181818181818183C00000000 +03AB:666600C3C366663C1818181800000000 +03AC:00001830007BCECCCCCCCE7B00000000 +03AD:00001830007CC6C078C0C67C00000000 +03AE:0000183000FCC6C6C6C6C6C606060600 +03AF:00001830007030303030301C00000000 +03B0:1830006C00C6C6C6C6C6C67C00000000 +03B1:00000000007BCECCCCCCCE7B00000000 +03B2:000078CCCCC8FCC6C6C6C6FCC0C0C000 +03B3:0000000000C3C366663C3C1818181800 +03B4:00007E30187CC6C6C6C6C67C00000000 +03B5:00000000007CC6C078C0C67C00000000 +03B6:0000FE0C183060C0C0C0C07C06060C00 +03B7:0000000000FCC6C6C6C6C6C606060600 +03B8:00003C6666667E666666663C00000000 +03B9:00000000007030303030301C00000000 +03BA:0000000000C6CCD8F0D8CCC600000000 +03BB:0000303018183C3C6666C3C300000000 +03BC:0000000000C6C6C6C6C6CEF6C0C0C000 +03BD:0000000000C6C6C66C6C383800000000 +03BE:00007EC0C0C07CC0C0C0C07C06060C00 +03BF:00000000007CC6C6C6C6C67C00000000 +03C0:0000000000FEC6C6C6C6C6C600000000 +03C1:00000000007CC6C6C6C6C6FCC0C0C000 +03C2:00000000007CC6C0C0C0C07C06060C00 +03C3:00000000003F66666666663C00000000 +03C4:0000000000FF18181818180E00000000 +03C5:0000000000C6C6C6C6C6C67C00000000 +03C6:00000000004EDBDBDBDBDB7E18181800 +03C7:0000000000C6C66C6C38386C6CC6C600 +03C8:0000000000DBDBDBDBDBDB7E18181800 +03C9:000000000066C3DBDBDBFF6600000000 +03CA:0000D8D8007030303030301C00000000 +03CB:00006C6C00C6C6C6C6C6C67C00000000 +03CC:00001830007CC6C6C6C6C67C00000000 +03CD:0000183000C6C6C6C6C6C67C00000000 +03CE:00000C180066C3DBDBDBFF6600000000 +03D1:00003C6666663F06E666663C00000000 +03D5:00000000187EDBDBDBDBDB7E18000000 +03F0:0000000000E3361C18386CC700000000 +03F1:00000000007CC6C6C6C6C6FCC0C07C00 +03F2:00000000007CC6C0C0C0C67C00000000 +03F3:00000606000E06060606060666663C00 +03F4:00007CC6C6C6FEC6C6C6C67C00000000 +03F5:00000000003E60C0FCC0603E00000000 +03F6:0000000000F80C067E060CF800000000 +0400:301800FEC0C0C0F8C0C0C0FE00000000 +0401:6C6C00FEC0C0C0F8C0C0C0FE00000000 +0402:0000FC30303E33333333333600000000 +0403:183000FEC0C0C0C0C0C0C0C000000000 +0404:00007CC6C0C0F8C0C0C0C67C00000000 +0405:00007CC6C0C07C0606C6C67C00000000 +0406:00003C18181818181818183C00000000 +0407:6666003C181818181818183C00000000 +0408:00001E0C0C0C0C0C0CCCCC7800000000 +0409:00003878D8DEDBDBDBDBDB9E00000000 +040A:0000D8D8D8DEFBDBDBDBDBDE00000000 +040B:0000FC30303E33333333333300000000 +040C:1830C6C6CCD8F0F0D8CCC6C600000000 +040D:3018C6C6C6CEDEF6E6C6C6C600000000 +040E:6C38C6C6C6C6C67E0606067C00000000 +040F:0000C6C6C6C6C6C6C6C6C6FE38380000 +0410:00007CC6C6C6C6FEC6C6C6C600000000 +0411:0000FCC0C0FCC6C6C6C6C6FC00000000 +0412:0000FCC6C6C6FCC6C6C6C6FC00000000 +0413:0000FEC0C0C0C0C0C0C0C0C000000000 +0414:00003E6666666666666666FFC3000000 +0415:0000FEC0C0C0F8C0C0C0C0FE00000000 +0416:0000DBDBDB7E3C7EDBDBDBDB00000000 +0417:00007CC6C6063C0606C6C67C00000000 +0418:0000C6C6C6CEDEF6E6C6C6C600000000 +0419:6C38C6C6C6CEDEF6E6C6C6C600000000 +041A:0000C6C6CCD8F0F0D8CCC6C600000000 +041B:00001E3666666666666666C600000000 +041C:000081C3E7FFDBC3C3C3C3C300000000 +041D:0000C6C6C6C6FEC6C6C6C6C600000000 +041E:00007CC6C6C6C6C6C6C6C67C00000000 +041F:0000FEC6C6C6C6C6C6C6C6C600000000 +0420:0000FCC6C6C6C6FCC0C0C0C000000000 +0421:00007CC6C6C0C0C0C0C6C67C00000000 +0422:0000FF18181818181818181800000000 +0423:0000C6C6C6C6C67E0606067C00000000 +0424:00187EDBDBDBDBDBDBDBDB7E18000000 +0425:0000C6C66C6C38386C6CC6C600000000 +0426:0000C6C6C6C6C6C6C6C6C67F03030000 +0427:0000C6C6C6C6C67E0606060600000000 +0428:0000DBDBDBDBDBDBDBDBDB7F00000000 +0429:0000D6D6D6D6D6D6D6D6D67F03030000 +042A:0000E060607E63636363637E00000000 +042B:0000C3C3C3F3DBDBDBDBDBF300000000 +042C:00006060607E63636363637E00000000 +042D:00007CC606063E060606C67C00000000 +042E:0000CEDBDBDBDBFBDBDBDBCE00000000 +042F:00007EC6C6C6C67E1E3666C600000000 +0430:00000000007C067EC6C6C67E00000000 +0431:00007CC0C0FCC6C6C6C6C6FC00000000 +0432:000078CCCCC8FCC6C6C6C6FC00000000 +0433:0000000000FEC0C0C0C0C0C000000000 +0434:00000000007EC6C6C6C6C67E06067C00 +0435:00000000007CC6C6FEC0C07C00000000 +0436:0000000000DBDB7E3C7EDBDB00000000 +0437:00000000007CC6063C06C67C00000000 +0438:0000000000C6C6C6C6C6C67E00000000 +0439:00006C3800C6C6C6C6C6C67E00000000 +043A:0000000000C6CCD8F0D8CCC600000000 +043B:00000000003E6666666666C600000000 +043C:0000000000C3E7FFDBC3C3C300000000 +043D:0000000000C6C6C6FEC6C6C600000000 +043E:00000000007CC6C6C6C6C67C00000000 +043F:0000000000FEC6C6C6C6C6C600000000 +0440:0000000000FCC6C6C6C6C6FCC0C0C000 +0441:00000000007CC6C0C0C0C67C00000000 +0442:0000000000FF18181818181800000000 +0443:0000000000C6C6C6C6C6C67E06067C00 +0444:00000000187EDBDBDBDBDB7E18000000 +0445:0000000000C6C66C386CC6C600000000 +0446:0000000000C6C6C6C6C6C67F03030000 +0447:0000000000C6C6C67E06060600000000 +0448:0000000000DBDBDBDBDBDB7F00000000 +0449:0000000000D6D6D6D6D6D67F03030000 +044A:0000000000E0607C6666667C00000000 +044B:0000000000C3C3F3DBDBDBF300000000 +044C:000000000060607C6666667C00000000 +044D:00000000007CC6063E06C67C00000000 +044E:0000000000CEDBDBFBDBDBCE00000000 +044F:00000000007EC6C67E3666C600000000 +0450:00003018007CC6C6FEC0C07C00000000 +0451:00006C6C007CC6C6FEC0C07C00000000 +0452:000060F8607E63636363636303030E00 +0453:0000183000FEC0C0C0C0C0C000000000 +0454:00000000007CC6C0F8C0C67C00000000 +0455:00000000007EC0C07C0606FC00000000 +0456:00001818003818181818183C00000000 +0457:00006C6C003818181818183C00000000 +0458:00000606000E06060606060666663C00 +0459:000000000078D8DEDBDBDB9E00000000 +045A:0000000000D8D8DEFBDBDBDE00000000 +045B:000060F8607E63636363636300000000 +045C:0000183000C6CCD8F0D8CCC600000000 +045D:0000301800C6C6C6C6C6C67E00000000 +045E:00006C3800C6C6C6C6C6C67E06067C00 +045F:0000000000C6C6C6C6C6C6FE38380000 +0462:000060F8607E63636363637E00000000 +0463:00006060F860607C6666667C00000000 +046A:0000FFC366663C7EDBDBDBDB00000000 +046B:0000000000FF663C3C7EDBDB00000000 +0490:0606FEC0C0C0C0C0C0C0C0C000000000 +0491:0000000606FEC0C0C0C0C0C000000000 +0492:00007F606060FC606060606000000000 +0493:00000000007F6060FC60606000000000 +0494:0000FEC0C0C0C0FCC6C6C6C6060C0000 +0495:0000000000FEC0C0F8CCCCCC0C180000 +0496:0000D6D6D67C387CD6D6D6D703030000 +0497:0000000000D6D67C387CD6D703030000 +0498:00007CC6C6063C0606C6C67C30303000 +0499:00000000007CC6063C06C67C30303000 +049A:0000C6C6CCD8F0F0D8CCC6C703030000 +049B:0000000000C6CCD8F0D8CCC703030000 +049C:0000C6C6D6DCF8F8DCD6C6C600000000 +049D:0000000000C6D6DCF8DCD6C600000000 +04A0:0000E3E3666C78786C66636300000000 +04A1:0000000000E3666C786C666300000000 +04A2:0000C6C6C6C6FEC6C6C6C6C703030000 +04A3:0000000000C6C6C6FEC6C6C703030000 +04A4:0000CFCCCCCCFCCCCCCCCCCC00000000 +04A5:0000000000CFCCCCFCCCCCCC00000000 +04AA:00007CC6C6C0C0C0C0C6C67C30303000 +04AB:00000000007CC6C0C0C0C67C30303000 +04AE:0000C3C366663C181818181800000000 +04AF:0000000000C3C366663C3C1818181800 +04B0:0000C3C366663C187E18181800000000 +04B1:0000000000C3C366663C3C187E181800 +04B2:0000C6C66C6C38386C6CC6C703030000 +04B3:0000000000C6C66C386CC6C703030000 +04B6:0000C6C6C6C6C67E0606060703030000 +04B7:0000000000C6C6C67E06060703030000 +04B8:0000C6C6C6D6D67E1616060600000000 +04B9:0000000000C6D6D67E16060600000000 +04BA:0000C0C0C0C0FCC6C6C6C6C600000000 +04BB:0000000000C0C0FCC6C6C6C600000000 +04C0:00003C18181818181818183C00000000 +04C1:6C3800DBDBDB7E3C7EDBDBDB00000000 +04C2:00006C3800DBDB7E3C7EDBDB00000000 +04CF:00003818181818181818183C00000000 +04D0:6C38007CC6C6C6FEC6C6C6C600000000 +04D1:00006C38007C067EC6C6C67E00000000 +04D2:6C6C007CC6C6C6FEC6C6C6C600000000 +04D3:00006C6C007C067EC6C6C67E00000000 +04D4:00007FCCCCCCFFCCCCCCCCCF00000000 +04D5:0000000000761B7BDFD8D86E00000000 +04D6:6C3800FEC0C0C0F8C0C0C0FE00000000 +04D7:00006C38007CC6C6FEC0C07C00000000 +04D8:00007CC60606FEC6C6C6C67C00000000 +04D9:00000000007C0606FEC6C67C00000000 +04DA:6C6C007CC60606FEC6C6C67C00000000 +04DB:00006C6C007C0606FEC6C67C00000000 +04DC:666600DBDBDB7E3C7EDBDBDB00000000 +04DD:0000666600DBDB7E3C7EDBDB00000000 +04DE:6C6C007CC6C6063C06C6C67C00000000 +04DF:00006C6C007CC6063C06C67C00000000 +04E2:7C00C6C6C6CEDEF6E6C6C6C600000000 +04E3:0000007C00C6C6C6C6C6C67E00000000 +04E4:6C6C00C6C6C6CEDEF6E6C6C600000000 +04E5:00006C6C00C6C6C6C6C6C67E00000000 +04E6:6C6C007CC6C6C6C6C6C6C67C00000000 +04E7:00006C6C007CC6C6C6C6C67C00000000 +04E8:00007CC6C6C6FEC6C6C6C67C00000000 +04E9:00000000007CC6C6FEC6C67C00000000 +04EA:6C6C007CC6C6C6FEC6C6C67C00000000 +04EB:00006C6C007CC6C6FEC6C67C00000000 +04EC:6C6C007CC606063E0606C67C00000000 +04ED:00006C6C007CC6063E06C67C00000000 +04EE:7C00C6C6C6C6C67E0606067C00000000 +04EF:0000007C00C6C6C6C6C6C67E06067C00 +04F0:6C6C00C6C6C6C67E0606067C00000000 +04F1:00006C6C00C6C6C6C6C6C67E06067C00 +04F2:366C00C6C6C6C67E0606067C00000000 +04F3:0000366C00C6C6C6C6C6C67E06067C00 +04F4:6C6C00C6C6C6C67E0606060600000000 +04F5:00006C6C00C6C6C67E06060600000000 +04F8:6C6C00C3C3C3F3DBDBDBDBF300000000 +04F9:00006C6C00C3C3F3DBDBDBF300000000 +05D0:0000C6C666663C78CCCCC6C600000000 +05D1:0000FC0606060606060606FF00000000 +05D2:0000780C0C0C0C0C1E3663C300000000 +05D3:0000FF06060606060606060600000000 +05D4:0000FC0606C6C6C6C6C6C6C600000000 +05D5:00007018181818181818181800000000 +05D6:00007E0C181818181818181800000000 +05D7:0000FCC6C6C6C6C6C6C6C6C600000000 +05D8:0000CCCEC6C6C6C6C6C6C67C00000000 +05D9:00007018181818000000000000000000 +05DA:0000FC06060606060606060606060600 +05DB:0000FC0606060606060606FC00000000 +05DC:C0C0FE060606060C1830303000000000 +05DD:0000FCC6C6C6C6C6C6C6C6FE00000000 +05DE:0000DE73636363636363636700000000 +05DF:0000F018181818181818181800000000 +05E0:0000780C0C0C0C0C0C0C0C7C00000000 +05E1:0000FE63636363636363633E00000000 +05E2:0000C6C6C6666636361C38E000000000 +05E3:00007CC6C6C666060606060606060600 +05E4:00007CC6C6C66606060606FC00000000 +05E5:0000636333361C181818181818181800 +05E6:0000C6C6666C383018180CFC00000000 +05E7:0000FE0606C6C6CCD8D8D8D8C0C0C000 +05E8:0000FC06060606060606060600000000 +05E9:0000DBDBDBDBDBF3E3C3C6FC00000000 +05EA:0000FE6363636363636363C300000000 +1E0C:0000F8CCC6C6C6C6C6C6CCF800303000 +1E0D:00000606067EC6C6C6C6C67E00181800 +1E34:0000C6C6CCD8F0F0D8CCC6C6007C0000 +1E35:0000C0C0C0C6CCD8F0D8CCC6007C0000 +1E36:0000C0C0C0C0C0C0C0C0C0FE00181800 +1E37:00003818181818181818183C00181800 +1E40:181881C3E7FFDBC3C3C3C3C300000000 +1E41:0000181800FEDBDBDBDBDBDB00000000 +1E42:000081C3E7FFDBC3C3C3C3C300181800 +1E43:0000000000FEDBDBDBDBDBDB00181800 +1E44:1818C6C6C6E6F6DECEC6C6C600000000 +1E45:0000303000FCC6C6C6C6C6C600000000 +1E46:0000C6C6C6E6F6DECEC6C6C600181800 +1E47:0000000000FCC6C6C6C6C6C600181800 +1E6C:0000FF18181818181818181800181800 +1E6D:0000303030FC30303030301E000C0C00 +1EB8:0000FEC0C0C0F8C0C0C0C0FE00181800 +1EB9:00000000007CC6C6FEC0C07C00181800 +1EBC:76DC00FEC0C0C0F8C0C0C0FE00000000 +1EBD:000076DC007CC6C6FEC0C07C00000000 +1ECA:00003C18181818181818183C00181800 +1ECB:00001818003818181818183C00181800 +1ECC:00007CC6C6C6C6C6C6C6C67C00181800 +1ECD:00000000007CC6C6C6C6C67C00181800 +1EE4:0000C6C6C6C6C6C6C6C6C67C00181800 +1EE5:0000000000C6C6C6C6C6C67E00181800 +1EF8:76DC00C3C366663C1818181800000000 +1EF9:000076DC00C6C6C6C6C6C67E06067C00 +2000:00000000000000000000000000000000 +2001:00000000000000000000000000000000 +2002:00000000000000000000000000000000 +2003:00000000000000000000000000000000 +2004:00000000000000000000000000000000 +2005:00000000000000000000000000000000 +2006:00000000000000000000000000000000 +2007:00000000000000000000000000000000 +2008:00000000000000000000000000000000 +2009:00000000000000000000000000000000 +200A:00000000000000000000000000000000 +200B:00000000000000000000000000000000 +200C:00000000000000000000000000000000 +200D:00000000000000000000000000000000 +200E:00000000000000000000000000000000 +200F:00000000000000000000000000000000 +2010:000000000000007C0000000000000000 +2011:000000000000007C0000000000000000 +2012:00000000000000FE0000000000000000 +2013:00000000000000FE0000000000000000 +2014:00000000000000FF0000000000000000 +2015:00000000000000FF0000000000000000 +2016:00006C6C6C6C6C6C6C6C6C6C00000000 +2017:00000000000000000000000000FE00FE +2018:00183030000000000000000000000000 +2019:00181830000000000000000000000000 +201A:00000000000000000000181830000000 +201B:00303018000000000000000000000000 +201C:0066CCCC000000000000000000000000 +201D:00333366000000000000000000000000 +201E:000000000000000000006666CC000000 +201F:00CCCC66000000000000000000000000 +2020:000018187E1818181818181800000000 +2021:000018187E181818187E181800000000 +2022:000000000000183C3C18000000000000 +2026:00000000000000000000DBDB00000000 +2030:0000ECACF8183030607FD5DF00000000 +2032:00181818180000000000000000000000 +2033:00666666660000000000000000000000 +2039:00000000000C18306030180C00000000 +203A:00000000006030180C18306000000000 +203C:00006666666666666600666600000000 +203E:FE000000000000000000000000000000 +2070:00386C6C6C6C38000000000000000000 +2071:1800381818183C000000000000000000 +2074:000C1C347E0C0C000000000000000000 +2075:007860780C0C78000000000000000000 +2076:003860786C6C38000000000000000000 +2077:007C0C18183030000000000000000000 +2078:00386C386C6C38000000000000000000 +2079:00386C6C3C0C38000000000000000000 +207A:000018187E1818000000000000000000 +207B:000000007C0000000000000000000000 +207C:0000007C007C00000000000000000000 +207D:00183030303018000000000000000000 +207E:00301818181830000000000000000000 +207F:0000786C6C6C6C000000000000000000 +2080:00000000000000386C6C6C6C38000000 +2081:0000000000000018381818183C000000 +2082:00000000000000386C0C18307C000000 +2083:00000000000000780C380C0C78000000 +2084:000000000000000C1C347E0C0C000000 +2085:000000000000007860780C0C78000000 +2086:000000000000003860786C6C38000000 +2087:000000000000007C0C18183030000000 +2088:00000000000000386C386C6C38000000 +2089:00000000000000386C6C3C0C38000000 +208A:000000000000000018187E1818000000 +208B:000000000000000000007C0000000000 +208C:0000000000000000007C007C00000000 +208D:00000000000000183030303018000000 +208E:00000000000000301818181830000000 +2090:0000000000000000380C3C6C3C000000 +2091:0000000000000000386C7C603C000000 +2092:0000000000000000386C6C6C38000000 +2093:0000000000000000663C183C66000000 +2094:0000000000000000780C7C6C38000000 +2095:0000000000006060786C6C6C6C000000 +2096:0000000000006060666C786C66000000 +2097:0000000000003818181818183C000000 +2098:0000000000000000FCD6D6D6D6000000 +209A:0000000000000000786C6C6C78606000 +20A7:0000F8CCCCCCFAC6CFC6C6C300000000 +20AA:0000F28A8AAAAAAAAAA2A2BC00000000 +20AC:0000001E3360FC60FC60331E00000000 +20AE:0000FF18181E781E7818181800000000 +2102:00003C52525050505052523C00000000 +210E:0000C0C0C0FCC6C6C6C6C6C600000000 +210F:000060F8607E63636363636300000000 +2115:0000424262526A564A46424200000000 +2116:0000969696D0F0F0B096909600000000 +211A:00003C525252525252525A3C06000000 +211D:0000F8A4A4A4A4B8A8B4AAE600000000 +2122:0000FB55555100000000000000000000 +2124:00007E02060A14285060407E00000000 +2126:00007CC6C6C6C6C6C66C6CEE00000000 +2135:0000666633333E7CCCCCC66600000000 +2190:00000000002060FEFE60200000000000 +2191:0000183C7E1818181818181800000000 +2192:0000000000080CFEFE0C080000000000 +2193:0000181818181818187E3C1800000000 +2194:00000000002466FFFF66240000000000 +2195:0000183C7E181818187E3C1800000000 +21A4:00000000002262FEFE62220000000000 +21A6:0000000000888CFEFE8C880000000000 +21A8:0000183C7E1818187E3C187E00000000 +21B2:0000060606062666FEFE602000000000 +21B3:0000C0C0C0C0C8CCFEFE0C0800000000 +21B5:0000000006062666FEFE602000000000 +21BB:000000F83868CBC3C3663C0000000000 +21CB:0000002060FEFE00FEFE0C0800000000 +21CC:000000080CFEFE00FEFE602000000000 +21D0:00000000103E7EE07E3E100000000000 +21D1:000010387CEE6C6C6C6C6C6C00000000 +21D2:0000000010F8FC0EFCF8100000000000 +21D3:00006C6C6C6C6C6CEE7C381000000000 +21D4:00000000247EFFC3FF7E240000000000 +21D5:000010387CEE6C6CEE7C381000000000 +2200:0000C3C3C37E6666243C181800000000 +2203:000000FE060606FE060606FE00000000 +2204:00000CFE1E1636FE366666FEC0000000 +2205:000003067ECFDBDBF37E60C000000000 +2206:000018183C3C666666C3C3FF00000000 +2207:0000FFC3C36666663C3C181800000000 +2208:0000003E60C0C0FEC0C0603E00000000 +2209:0000063E6CCCD8FED8F0707E60000000 +220A:000000003E60C0FEC0603E0000000000 +220B:000000F80C0606FE06060CF800000000 +220C:0000C0F86C6636FE361E1CFC0C000000 +220D:00000000F80C06FE060CF80000000000 +2212:00000000000000FE0000000000000000 +2213:00000000007E0018187E181800000000 +2214:0000000018180018187E181800000000 +2215:0000000002060C183060C08000000000 +2216:0000000080C06030180C060200000000 +2219:00000000000038383800000000000000 +221A:000E0C0C0C0CCCCCCC6C3C1C00000000 +221E:000000000076DBDBDB6E000000000000 +221F:00000000C0C0C0C0C0FE000000000000 +2225:00006C6C6C6C6C6C6C6C6C6C00000000 +2227:0000000018183C3C6666C3C300000000 +2228:00000000C3C366663C3C181800000000 +2229:000000007CC6C6C6C6C6C6C600000000 +222A:00000000C6C6C6C6C6C6C67C00000000 +2248:000000000076DC0076DC000000000000 +2260:0000000006FE1830FEC0000000000000 +2261:00000000FE0000FE0000FE0000000000 +2264:0000000C18306030180C007E00000000 +2265:00000030180C060C1830007E00000000 +226A:000000091B366CD86C361B0900000000 +226B:00000090D86C361B366CD89000000000 +2282:000000007EC0C0C0C0C07E0000000000 +2283:00000000FC0606060606FC0000000000 +2286:0000007EC0C0C0C0C07E00FE00000000 +2287:000000FC0606060606FC00FE00000000 +22A5:0000000018181818181818FF00000000 +22C2:00007CC6C6C6C6C6C6C6C6C600000000 +22C3:0000C6C6C6C6C6C6C6C6C67C00000000 +2300:000003067ECFDBDBF37E60C000000000 +2302:00000000183C66C3C3C3C3FF00000000 +2308:00003C30303030303030303000000000 +2309:00003C0C0C0C0C0C0C0C0C0C00000000 +230A:00003030303030303030303C00000000 +230B:00000C0C0C0C0C0C0C0C0C3C00000000 +2310:0000000000FEC0C0C000000000000000 +2319:0000000000C0C0C0FE00000000000000 +2320:00000E1B1B1818181818181818181818 +2321:181818181818181818D8D87000000000 +239B:060C1818303030606060606060606060 +239C:60606060606060606060606060606060 +239D:60606060606060606030303018180C06 +239E:603018180C0C0C060606060606060606 +239F:06060606060606060606060606060606 +23A0:0606060606060606060C0C0C18183060 +23A1:7E606060606060606060606060606060 +23A2:60606060606060606060606060606060 +23A3:6060606060606060606060606060607E +23A4:7E060606060606060606060606060606 +23A5:06060606060606060606060606060606 +23A6:0606060606060606060606060606067E +23A7:0F183030303030303030303030303030 +23A8:30303030303030E0E030303030303030 +23A9:3030303030303030303030303030180F +23AB:F0180C0C0C0C0C0C0C0C0C0C0C0C0C0C +23AC:0C0C0C0C0C0C0C07070C0C0C0C0C0C0C +23AD:0C0C0C0C0C0C0C0C0C0C0C0C0C0C18F0 +23AE:18181818181818181818181818181818 +23AF:00000000000000FFFF00000000000000 +23BA:FFFF0000000000000000000000000000 +23BB:00000000FFFF00000000000000000000 +23BC:00000000000000000000FFFF00000000 +23BD:0000000000000000000000000000FFFF +23D0:18181818181818181818181818181818 +2409:00CCCCFCCCCCCC003F0C0C0C0C0C0000 +240A:00C0C0C0C0C0F8003F303C3030300000 +240B:00CCCCCCCC7830003F0C0C0C0C0C0000 +240C:00FCC0F0C0C0C0003F303C3030300000 +240D:0078CCC0C0CC78003E33333E36330000 +2424:00CCECFCDCCCCC0030303030303F0000 +2500:00000000000000FFFF00000000000000 +2501:000000000000FFFFFF00000000000000 +2502:18181818181818181818181818181818 +2503:38383838383838383838383838383838 +2508:00000000000000AAAA00000000000000 +2509:000000000000AAAAAA00000000000000 +250A:18181800181818001818180018181800 +250B:38383800383838003838380038383800 +250C:000000000000001F1F18181818181818 +250D:0000000000001F1F1F18181818181818 +250E:000000000000003F3F38383838383838 +250F:0000000000003F3F3F38383838383838 +2510:00000000000000F8F818181818181818 +2511:000000000000F8F8F818181818181818 +2512:00000000000000F8F838383838383838 +2513:000000000000F8F8F838383838383838 +2514:181818181818181F1F00000000000000 +2515:1818181818181F1F1F00000000000000 +2516:383838383838383F3F00000000000000 +2517:3838383838383F3F3F00000000000000 +2518:18181818181818F8F800000000000000 +2519:181818181818F8F8F800000000000000 +251A:38383838383838F8F800000000000000 +251B:383838383838F8F8F800000000000000 +251C:181818181818181F1F18181818181818 +251D:1818181818181F1F1F18181818181818 +251E:383838383838383F3F18181818181818 +251F:181818181818183F3F38383838383838 +2520:383838383838383F3F38383838383838 +2521:3838383838383F3F3F18181818181818 +2522:1818181818183F3F3F38383838383838 +2523:3838383838383F3F3F38383838383838 +2524:18181818181818F8F818181818181818 +2525:181818181818F8F8F818181818181818 +2526:38383838383838F8F818181818181818 +2527:18181818181818F8F838383838383838 +2528:38383838383838F8F838383838383838 +2529:383838383838F8F8F818181818181818 +252A:181818181818F8F8F838383838383838 +252B:383838383838F8F8F838383838383838 +252C:00000000000000FFFF18181818181818 +252D:000000000000F8FFFF18181818181818 +252E:0000000000001FFFFF18181818181818 +252F:000000000000FFFFFF18181818181818 +2530:00000000000000FFFF38383838383838 +2531:000000000000F8FFFF38383838383838 +2532:0000000000003FFFFF38383838383838 +2533:000000000000FFFFFF38383838383838 +2534:18181818181818FFFF00000000000000 +2535:181818181818F8FFFF00000000000000 +2536:1818181818181FFFFF00000000000000 +2537:181818181818FFFFFF00000000000000 +2538:38383838383838FFFF00000000000000 +2539:383838383838F8FFFF00000000000000 +253A:3838383838383FFFFF00000000000000 +253B:383838383838FFFFFF00000000000000 +253C:18181818181818FFFF18181818181818 +253D:181818181818F8FFFF18181818181818 +253E:1818181818181FFFFF18181818181818 +253F:181818181818FFFFFF18181818181818 +2540:38383838383838FFFF18181818181818 +2541:18181818181818FFFF38383838383838 +2542:38383838383838FFFF38383838383838 +2543:383838383838F8FFFF18181818181818 +2544:3838383838383FFFFF18181818181818 +2545:181818181818F8FFFF38383838383838 +2546:1818181818181FFFFF38383838383838 +2547:383838383838FFFFFF18181818181818 +2548:181818181818FFFFFF38383838383838 +2549:383838383838F8FFFF38383838383838 +254A:3838383838383FFFFF38383838383838 +254B:383838383838FFFFFF38383838383838 +2550:0000000000FFFF00FFFF000000000000 +2551:6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C +2552:00000000001F1F181F1F181818181818 +2553:000000000000007F7F6C6C6C6C6C6C6C +2554:00000000007F7F606F6F6C6C6C6C6C6C +2555:0000000000F8F818F8F8181818181818 +2556:00000000000000FCFC6C6C6C6C6C6C6C +2557:0000000000FCFC0CECEC6C6C6C6C6C6C +2558:18181818181F1F181F1F000000000000 +2559:6C6C6C6C6C6C6C7F7F00000000000000 +255A:6C6C6C6C6C6F6F607F7F000000000000 +255B:1818181818F8F818F8F8000000000000 +255C:6C6C6C6C6C6C6CFCFC00000000000000 +255D:6C6C6C6C6CECEC0CFCFC000000000000 +255E:18181818181F1F181F1F181818181818 +255F:6C6C6C6C6C6C6C6F6F6C6C6C6C6C6C6C +2560:6C6C6C6C6C6F6F606F6F6C6C6C6C6C6C +2561:1818181818F8F818F8F8181818181818 +2562:6C6C6C6C6C6C6CECEC6C6C6C6C6C6C6C +2563:6C6C6C6C6CECEC0CECEC6C6C6C6C6C6C +2564:0000000000FFFF00FFFF181818181818 +2565:00000000000000FFFF6C6C6C6C6C6C6C +2566:0000000000FFFF00EFEF6C6C6C6C6C6C +2567:1818181818FFFF00FFFF000000000000 +2568:6C6C6C6C6C6C6CFFFF00000000000000 +2569:6C6C6C6C6CEFEF00FFFF000000000000 +256A:1818181818FFFF18FFFF181818181818 +256B:6C6C6C6C6C6C6CFFFF6C6C6C6C6C6C6C +256C:6C6C6C6C6CEFEF00EFEF6C6C6C6C6C6C +256D:00000000000000070F1C181818181818 +256E:00000000000000E0F038181818181818 +256F:18181818181838F0E000000000000000 +2570:1818181818181C0F0700000000000000 +2571:0101030206040C08181030206040C080 +2572:80C0406020301018080C040602030101 +2573:81C1436226341C18181C34266243C181 +2574:00000000000000F8F800000000000000 +2575:18181818181818181800000000000000 +2576:000000000000001F1F00000000000000 +2577:00000000000000181818181818181818 +2578:000000000000F8F8F800000000000000 +2579:38383838383838383800000000000000 +257A:0000000000001F1F1F00000000000000 +257B:00000000000000383838383838383838 +257C:0000000000001FFFFF00000000000000 +257D:18181818181818383838383838383838 +257E:000000000000F8FFFF00000000000000 +257F:38383838383838383818181818181818 +2580:FFFFFFFFFFFFFFFF0000000000000000 +2581:0000000000000000000000000000FFFF +2582:000000000000000000000000FFFFFFFF +2583:00000000000000000000FFFFFFFFFFFF +2584:0000000000000000FFFFFFFFFFFFFFFF +2585:000000000000FFFFFFFFFFFFFFFFFFFF +2586:00000000FFFFFFFFFFFFFFFFFFFFFFFF +2587:0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF +2588:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +2589:FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +258A:FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +258B:F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +258C:F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +258D:E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0 +258E:C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 +258F:80808080808080808080808080808080 +2590:0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F +2591:88228822882288228822882288228822 +2592:AA55AA55AA55AA55AA55AA55AA55AA55 +2593:EEBBEEBBEEBBEEBBEEBBEEBBEEBBEEBB +2596:0000000000000000F0F0F0F0F0F0F0F0 +2597:00000000000000000F0F0F0F0F0F0F0F +2598:F0F0F0F0F0F0F0F00000000000000000 +2599:F0F0F0F0F0F0F0F0FFFFFFFFFFFFFFFF +259A:F0F0F0F0F0F0F0F00F0F0F0F0F0F0F0F +259B:FFFFFFFFFFFFFFFFF0F0F0F0F0F0F0F0 +259C:FFFFFFFFFFFFFFFF0F0F0F0F0F0F0F0F +259D:0F0F0F0F0F0F0F0F0000000000000000 +259E:0F0F0F0F0F0F0F0FF0F0F0F0F0F0F0F0 +259F:0F0F0F0F0F0F0F0FFFFFFFFFFFFFFFFF +25A0:00000000007C7C7C7C7C7C0000000000 +25AC:0000000000000000FEFEFEFE00000000 +25AE:0000FEFEFEFEFEFEFEFEFEFE00000000 +25B2:0000000018183C3C7E7EFFFF00000000 +25B6:00000000C0F0FCFFFFFCF0C000000000 +25BA:00000000C0F0FCFFFFFCF0C000000000 +25BC:00000000FFFF7E7E3C3C181800000000 +25C0:00000000030F3FFFFF3F0F0300000000 +25C4:00000000030F3FFFFF3F0F0300000000 +25C6:00000000183C7EFF7E3C180000000000 +25CA:00000000183C66C3663C180000000000 +25CB:00000000003C664242663C0000000000 +25CF:00000000003C7E7E7E7E3C0000000000 +25D8:FFFFFFFFFFFFE7C3C3E7FFFFFFFFFFFF +25D9:FFFFFFFFFFC399BDBD99C3FFFFFFFFFF +263A:00007E81A58181BD9981817E00000000 +263B:00007EFFDBFFFFC3E7FFFF7E00000000 +263C:00000018DB7E3CE73C7EDB1800000000 +2640:00003C666666663C187E181800000000 +2642:00003E0E1A3278CCCCCCCC7800000000 +2660:000018183C7EFFFF7E18183C00000000 +2663:0000183C3C185AFFFF5A183C00000000 +2665:0000000066FFFFFFFF7E3C1800000000 +2666:00000000183C7EFF7E3C180000000000 +266A:00003F333F3030303030F0E000000000 +266B:00007F637F636363636367E6C0000000 +2713:000003030606CCCC7878303000000000 +2714:000007070E0EDCFC7878303000000000 +2717:00000CCC7838383C6660C0C000000000 +2718:00000EEE7C3C3C3E7773E0E000000000 +27E8:00000C0C1818303018180C0C00000000 +27E9:0000303018180C0C1818303000000000 +27EA:000036366C6CD8D86C6C363600000000 +27EB:0000D8D86C6C36366C6CD8D800000000 +2800:00000000000000000000000000000000 +2801:00606000000000000000000000000000 +2802:00000000006060000000000000000000 +2803:00606000006060000000000000000000 +2804:00000000000000000060600000000000 +2805:00606000000000000060600000000000 +2806:00000000006060000060600000000000 +2807:00606000006060000060600000000000 +2808:00060600000000000000000000000000 +2809:00666600000000000000000000000000 +280A:00060600006060000000000000000000 +280B:00666600006060000000000000000000 +280C:00060600000000000060600000000000 +280D:00666600000000000060600000000000 +280E:00060600006060000060600000000000 +280F:00666600006060000060600000000000 +2810:00000000000606000000000000000000 +2811:00606000000606000000000000000000 +2812:00000000006666000000000000000000 +2813:00606000006666000000000000000000 +2814:00000000000606000060600000000000 +2815:00606000000606000060600000000000 +2816:00000000006666000060600000000000 +2817:00606000006666000060600000000000 +2818:00060600000606000000000000000000 +2819:00666600000606000000000000000000 +281A:00060600006666000000000000000000 +281B:00666600006666000000000000000000 +281C:00060600000606000060600000000000 +281D:00666600000606000060600000000000 +281E:00060600006666000060600000000000 +281F:00666600006666000060600000000000 +2820:00000000000000000006060000000000 +2821:00606000000000000006060000000000 +2822:00000000006060000006060000000000 +2823:00606000006060000006060000000000 +2824:00000000000000000066660000000000 +2825:00606000000000000066660000000000 +2826:00000000006060000066660000000000 +2827:00606000006060000066660000000000 +2828:00060600000000000006060000000000 +2829:00666600000000000006060000000000 +282A:00060600006060000006060000000000 +282B:00666600006060000006060000000000 +282C:00060600000000000066660000000000 +282D:00666600000000000066660000000000 +282E:00060600006060000066660000000000 +282F:00666600006060000066660000000000 +2830:00000000000606000006060000000000 +2831:00606000000606000006060000000000 +2832:00000000006666000006060000000000 +2833:00606000006666000006060000000000 +2834:00000000000606000066660000000000 +2835:00606000000606000066660000000000 +2836:00000000006666000066660000000000 +2837:00606000006666000066660000000000 +2838:00060600000606000006060000000000 +2839:00666600000606000006060000000000 +283A:00060600006666000006060000000000 +283B:00666600006666000006060000000000 +283C:00060600000606000066660000000000 +283D:00666600000606000066660000000000 +283E:00060600006666000066660000000000 +283F:00666600006666000066660000000000 +2840:00000000000000000000000000606000 +2841:00606000000000000000000000606000 +2842:00000000006060000000000000606000 +2843:00606000006060000000000000606000 +2844:00000000000000000060600000606000 +2845:00606000000000000060600000606000 +2846:00000000006060000060600000606000 +2847:00606000006060000060600000606000 +2848:00060600000000000000000000606000 +2849:00666600000000000000000000606000 +284A:00060600006060000000000000606000 +284B:00666600006060000000000000606000 +284C:00060600000000000060600000606000 +284D:00666600000000000060600000606000 +284E:00060600006060000060600000606000 +284F:00666600006060000060600000606000 +2850:00000000000606000000000000606000 +2851:00606000000606000000000000606000 +2852:00000000006666000000000000606000 +2853:00606000006666000000000000606000 +2854:00000000000606000060600000606000 +2855:00606000000606000060600000606000 +2856:00000000006666000060600000606000 +2857:00606000006666000060600000606000 +2858:00060600000606000000000000606000 +2859:00666600000606000000000000606000 +285A:00060600006666000000000000606000 +285B:00666600006666000000000000606000 +285C:00060600000606000060600000606000 +285D:00666600000606000060600000606000 +285E:00060600006666000060600000606000 +285F:00666600006666000060600000606000 +2860:00000000000000000006060000606000 +2861:00606000000000000006060000606000 +2862:00000000006060000006060000606000 +2863:00606000006060000006060000606000 +2864:00000000000000000066660000606000 +2865:00606000000000000066660000606000 +2866:00000000006060000066660000606000 +2867:00606000006060000066660000606000 +2868:00060600000000000006060000606000 +2869:00666600000000000006060000606000 +286A:00060600006060000006060000606000 +286B:00666600006060000006060000606000 +286C:00060600000000000066660000606000 +286D:00666600000000000066660000606000 +286E:00060600006060000066660000606000 +286F:00666600006060000066660000606000 +2870:00000000000606000006060000606000 +2871:00606000000606000006060000606000 +2872:00000000006666000006060000606000 +2873:00606000006666000006060000606000 +2874:00000000000606000066660000606000 +2875:00606000000606000066660000606000 +2876:00000000006666000066660000606000 +2877:00606000006666000066660000606000 +2878:00060600000606000006060000606000 +2879:00666600000606000006060000606000 +287A:00060600006666000006060000606000 +287B:00666600006666000006060000606000 +287C:00060600000606000066660000606000 +287D:00666600000606000066660000606000 +287E:00060600006666000066660000606000 +287F:00666600006666000066660000606000 +2880:00000000000000000000000000060600 +2881:00606000000000000000000000060600 +2882:00000000006060000000000000060600 +2883:00606000006060000000000000060600 +2884:00000000000000000060600000060600 +2885:00606000000000000060600000060600 +2886:00000000006060000060600000060600 +2887:00606000006060000060600000060600 +2888:00060600000000000000000000060600 +2889:00666600000000000000000000060600 +288A:00060600006060000000000000060600 +288B:00666600006060000000000000060600 +288C:00060600000000000060600000060600 +288D:00666600000000000060600000060600 +288E:00060600006060000060600000060600 +288F:00666600006060000060600000060600 +2890:00000000000606000000000000060600 +2891:00606000000606000000000000060600 +2892:00000000006666000000000000060600 +2893:00606000006666000000000000060600 +2894:00000000000606000060600000060600 +2895:00606000000606000060600000060600 +2896:00000000006666000060600000060600 +2897:00606000006666000060600000060600 +2898:00060600000606000000000000060600 +2899:00666600000606000000000000060600 +289A:00060600006666000000000000060600 +289B:00666600006666000000000000060600 +289C:00060600000606000060600000060600 +289D:00666600000606000060600000060600 +289E:00060600006666000060600000060600 +289F:00666600006666000060600000060600 +28A0:00000000000000000006060000060600 +28A1:00606000000000000006060000060600 +28A2:00000000006060000006060000060600 +28A3:00606000006060000006060000060600 +28A4:00000000000000000066660000060600 +28A5:00606000000000000066660000060600 +28A6:00000000006060000066660000060600 +28A7:00606000006060000066660000060600 +28A8:00060600000000000006060000060600 +28A9:00666600000000000006060000060600 +28AA:00060600006060000006060000060600 +28AB:00666600006060000006060000060600 +28AC:00060600000000000066660000060600 +28AD:00666600000000000066660000060600 +28AE:00060600006060000066660000060600 +28AF:00666600006060000066660000060600 +28B0:00000000000606000006060000060600 +28B1:00606000000606000006060000060600 +28B2:00000000006666000006060000060600 +28B3:00606000006666000006060000060600 +28B4:00000000000606000066660000060600 +28B5:00606000000606000066660000060600 +28B6:00000000006666000066660000060600 +28B7:00606000006666000066660000060600 +28B8:00060600000606000006060000060600 +28B9:00666600000606000006060000060600 +28BA:00060600006666000006060000060600 +28BB:00666600006666000006060000060600 +28BC:00060600000606000066660000060600 +28BD:00666600000606000066660000060600 +28BE:00060600006666000066660000060600 +28BF:00666600006666000066660000060600 +28C0:00000000000000000000000000666600 +28C1:00606000000000000000000000666600 +28C2:00000000006060000000000000666600 +28C3:00606000006060000000000000666600 +28C4:00000000000000000060600000666600 +28C5:00606000000000000060600000666600 +28C6:00000000006060000060600000666600 +28C7:00606000006060000060600000666600 +28C8:00060600000000000000000000666600 +28C9:00666600000000000000000000666600 +28CA:00060600006060000000000000666600 +28CB:00666600006060000000000000666600 +28CC:00060600000000000060600000666600 +28CD:00666600000000000060600000666600 +28CE:00060600006060000060600000666600 +28CF:00666600006060000060600000666600 +28D0:00000000000606000000000000666600 +28D1:00606000000606000000000000666600 +28D2:00000000006666000000000000666600 +28D3:00606000006666000000000000666600 +28D4:00000000000606000060600000666600 +28D5:00606000000606000060600000666600 +28D6:00000000006666000060600000666600 +28D7:00606000006666000060600000666600 +28D8:00060600000606000000000000666600 +28D9:00666600000606000000000000666600 +28DA:00060600006666000000000000666600 +28DB:00666600006666000000000000666600 +28DC:00060600000606000060600000666600 +28DD:00666600000606000060600000666600 +28DE:00060600006666000060600000666600 +28DF:00666600006666000060600000666600 +28E0:00000000000000000006060000666600 +28E1:00606000000000000006060000666600 +28E2:00000000006060000006060000666600 +28E3:00606000006060000006060000666600 +28E4:00000000000000000066660000666600 +28E5:00606000000000000066660000666600 +28E6:00000000006060000066660000666600 +28E7:00606000006060000066660000666600 +28E8:00060600000000000006060000666600 +28E9:00666600000000000006060000666600 +28EA:00060600006060000006060000666600 +28EB:00666600006060000006060000666600 +28EC:00060600000000000066660000666600 +28ED:00666600000000000066660000666600 +28EE:00060600006060000066660000666600 +28EF:00666600006060000066660000666600 +28F0:00000000000606000006060000666600 +28F1:00606000000606000006060000666600 +28F2:00000000006666000006060000666600 +28F3:00606000006666000006060000666600 +28F4:00000000000606000066660000666600 +28F5:00606000000606000066660000666600 +28F6:00000000006666000066660000666600 +28F7:00606000006666000066660000666600 +28F8:00060600000606000006060000666600 +28F9:00666600000606000006060000666600 +28FA:00060600006666000006060000666600 +28FB:00666600006666000006060000666600 +28FC:00060600000606000066660000666600 +28FD:00666600000606000066660000666600 +28FE:00060600006666000066660000666600 +28FF:00666600006666000066660000666600 +2E2C:0000000000C6C6000000C6C600000000 +E0A0:C0C0CCDEFFCCCCCC983060C0C0C0C0C0 +E0A1:00C0C0C0C0C0FC00333B3F3733330000 +E0A2:003C66666666FFFFE7C3E7FFFFFF0000 +E0B0:80C0E0F0F8FCFEFFFFFEFCF8F0E0C080 +E0B1:80C06030180C060303060C183060C080 +E0B2:0103070F1F3F7FFFFF7F3F1F0F070301 +E0B3:0103060C183060C0C06030180C060301 +F6BE:00000000000E06060606060666663C00 +FFFD:0000FEC6C6C6C6C6C6C6C6FE00000000 diff --git a/EFI/OC/Resources/Font/TerminusCore.hex b/EFI/OC/Resources/Font/TerminusCore.hex new file mode 100644 index 0000000..bab8976 --- /dev/null +++ b/EFI/OC/Resources/Font/TerminusCore.hex @@ -0,0 +1,1356 @@ +0000:0000EEC600C6C6C600C6C6EE00000000 +0020:00000000000000000000000000000000 +0021:00001818181818181800181800000000 +0022:00666666000000000000000000000000 +0023:00006C6C6CFE6C6CFE6C6C6C00000000 +0024:0018187EDBD8D87E1B1BDB7E18180000 +0025:000066D66C0C181830366B6600000000 +0026:0000386C6C3876DCCCCCDC7600000000 +0027:00181818000000000000000000000000 +0028:00000C18303030303030180C00000000 +0029:000030180C0C0C0C0C0C183000000000 +002A:00000000006C38FE386C000000000000 +002B:000000000018187E1818000000000000 +002C:00000000000000000000181830000000 +002D:00000000000000FE0000000000000000 +002E:00000000000000000000181800000000 +002F:000006060C0C18183030606000000000 +0030:00007CC6C6CEDEF6E6C6C67C00000000 +0031:00001838781818181818187E00000000 +0032:00007CC6C6060C183060C0FE00000000 +0033:00007CC6C6063C0606C6C67C00000000 +0034:0000060E1E3666C6FE06060600000000 +0035:0000FEC0C0C0FC060606C67C00000000 +0036:00003C60C0C0FCC6C6C6C67C00000000 +0037:0000FE06060C0C181830303000000000 +0038:00007CC6C6C67CC6C6C6C67C00000000 +0039:00007CC6C6C6C67E06060C7800000000 +003A:00000000001818000000181800000000 +003B:00000000001818000000181830000000 +003C:000000060C18306030180C0600000000 +003D:0000000000FE0000FE00000000000000 +003E:0000006030180C060C18306000000000 +003F:00007CC6C6C60C181800181800000000 +0040:00003E63CFDBDBDBDBCE603E00000000 +0041:00007CC6C6C6C6FEC6C6C6C600000000 +0042:0000FCC6C6C6FCC6C6C6C6FC00000000 +0043:00007CC6C6C0C0C0C0C6C67C00000000 +0044:0000F8CCC6C6C6C6C6C6CCF800000000 +0045:0000FEC0C0C0F8C0C0C0C0FE00000000 +0046:0000FEC0C0C0F8C0C0C0C0C000000000 +0047:00007CC6C6C0C0DEC6C6C67C00000000 +0048:0000C6C6C6C6FEC6C6C6C6C600000000 +0049:00003C18181818181818183C00000000 +004A:00001E0C0C0C0C0C0CCCCC7800000000 +004B:0000C6CCD8F0E0E0F0D8CCC600000000 +004C:0000C0C0C0C0C0C0C0C0C0FE00000000 +004D:0000C6C6EEFED6D6C6C6C6C600000000 +004E:0000C6C6C6E6F6DECEC6C6C600000000 +004F:00007CC6C6C6C6C6C6C6C67C00000000 +0050:0000FCC6C6C6C6FCC0C0C0C000000000 +0051:00007CC6C6C6C6C6C6C6DE7C06000000 +0052:0000FCC6C6C6C6FCF8CCC6C600000000 +0053:00007CC6C0C07C060606C67C00000000 +0054:00007E18181818181818181800000000 +0055:0000C6C6C6C6C6C6C6C6C67C00000000 +0056:0000C6C6C6C6C66C6C38381000000000 +0057:0000C6C6C6C6D6D6FEEE6C6C00000000 +0058:0000C6C66C6C38386C6CC6C600000000 +0059:0000C3C366663C181818181800000000 +005A:0000FE06060C183060C0C0FE00000000 +005B:00003C30303030303030303C00000000 +005C:00006060303018180C0C060600000000 +005D:00003C0C0C0C0C0C0C0C0C3C00000000 +005E:00183C66000000000000000000000000 +005F:00000000000000000000000000FE0000 +0060:30180000000000000000000000000000 +0061:00000000007C067EC6C6C67E00000000 +0062:0000C0C0C0FCC6C6C6C6C6FC00000000 +0063:00000000007CC6C0C0C0C67C00000000 +0064:00000606067EC6C6C6C6C67E00000000 +0065:00000000007CC6C6FEC0C07C00000000 +0066:00001E3030FC30303030303000000000 +0067:00000000007EC6C6C6C6C67E06067C00 +0068:0000C0C0C0FCC6C6C6C6C6C600000000 +0069:00003030007030303030307800000000 +006A:00000606000E06060606060666663C00 +006B:0000C0C0C0C6CCD8F0D8CCC600000000 +006C:00003818181818181818183C00000000 +006D:0000000000FCD6D6D6D6D6D600000000 +006E:0000000000FCC6C6C6C6C6C600000000 +006F:00000000007CC6C6C6C6C67C00000000 +0070:0000000000FCC6C6C6C6C6FCC0C0C000 +0071:00000000007EC6C6C6C6C67E06060600 +0072:0000000000DCE6C0C0C0C0C000000000 +0073:00000000007CC2C07C06867C00000000 +0074:0000303030FC30303030301E00000000 +0075:0000000000C6C6C6C6C6C67E00000000 +0076:0000000000C6C6C66C6C383800000000 +0077:0000000000C6C6D6D6D6D67C00000000 +0078:0000000000C6C66C386CC6C600000000 +0079:0000000000C6C6C6C6C6C67E06067C00 +007A:0000000000FE0C183060C0FE00000000 +007B:00001C30303060303030301C00000000 +007C:00001818181818181818181800000000 +007D:0000701818180C181818187000000000 +007E:0073DBCE000000000000000000000000 +00A0:00000000000000000000000000000000 +00A1:00001818001818181818181800000000 +00A2:00000018187EDBD8D8D8DB7E18180000 +00A3:0000386C6060F860606066FE00000000 +00A4:00000000663C6666663C660000000000 +00A5:0000C3C3663C187E187E181800000000 +00A6:00001818181800001818181800000000 +00A7:003C6660386C6666361C06663C000000 +00A8:6C6C0000000000000000000000000000 +00A9:0000007E8199A5A1A599817E00000000 +00AA:003C063E663E007E0000000000000000 +00AB:00000000001B366CD86C361B00000000 +00AC:0000000000FE06060600000000000000 +00AD:000000000000007C0000000000000000 +00AE:0000007E81B9A5B9A9A5817E00000000 +00AF:7C000000000000000000000000000000 +00B0:00386C6C380000000000000000000000 +00B1:000000000018187E1818007E00000000 +00B2:00386C0C18307C000000000000000000 +00B3:00780C380C0C78000000000000000000 +00B4:18300000000000000000000000000000 +00B5:0000000000C6C6C6C6C6CEF6C0C0C000 +00B6:00007FDBDBDBDB7B1B1B1B1B00000000 +00B7:00000000000000181800000000000000 +00B8:00000000000000000000000030306000 +00B9:0018381818183C000000000000000000 +00BA:003C6666663C007E0000000000000000 +00BB:0000000000D86C361B366CD800000000 +00BC:0060E062666C183066CE9A3E06060000 +00BD:0060E062666C183060CE9B060C1F0000 +00BE:00E0306236EC183066CE9A3E06060000 +00BF:0000303000303060C6C6C67C00000000 +00C0:3018007CC6C6C6FEC6C6C6C600000000 +00C1:1830007CC6C6C6FEC6C6C6C600000000 +00C2:386C007CC6C6C6FEC6C6C6C600000000 +00C3:76DC007CC6C6C6FEC6C6C6C600000000 +00C4:6C6C007CC6C6C6FEC6C6C6C600000000 +00C5:386C387CC6C6C6FEC6C6C6C600000000 +00C6:00007FCCCCCCFFCCCCCCCCCF00000000 +00C7:00007CC6C6C0C0C0C0C6C67C30306000 +00C8:301800FEC0C0C0F8C0C0C0FE00000000 +00C9:183000FEC0C0C0F8C0C0C0FE00000000 +00CA:386C00FEC0C0C0F8C0C0C0FE00000000 +00CB:6C6C00FEC0C0C0F8C0C0C0FE00000000 +00CC:3018003C181818181818183C00000000 +00CD:0C18003C181818181818183C00000000 +00CE:386C003C181818181818183C00000000 +00CF:6666003C181818181818183C00000000 +00D0:00007C666363FB636363667C00000000 +00D1:76DC00C6C6E6F6DECEC6C6C600000000 +00D2:3018007CC6C6C6C6C6C6C67C00000000 +00D3:1830007CC6C6C6C6C6C6C67C00000000 +00D4:386C007CC6C6C6C6C6C6C67C00000000 +00D5:76DC007CC6C6C6C6C6C6C67C00000000 +00D6:6C6C007CC6C6C6C6C6C6C67C00000000 +00D7:0000000000C66C38386CC60000000000 +00D8:00007CC7C6CEDEF6E6C6C67C00000000 +00D9:3018C6C6C6C6C6C6C6C6C67C00000000 +00DA:1830C6C6C6C6C6C6C6C6C67C00000000 +00DB:386C00C6C6C6C6C6C6C6C67C00000000 +00DC:6C6C00C6C6C6C6C6C6C6C67C00000000 +00DD:0C18C3C366663C181818181800000000 +00DE:0000C0C0FCC6C6C6C6FCC0C000000000 +00DF:000078CCCCC8FCC6C6C6E6DC00000000 +00E0:00003018007C067EC6C6C67E00000000 +00E1:00001830007C067EC6C6C67E00000000 +00E2:0000386C007C067EC6C6C67E00000000 +00E3:000076DC007C067EC6C6C67E00000000 +00E4:00006C6C007C067EC6C6C67E00000000 +00E5:0000386C387C067EC6C6C67E00000000 +00E6:0000000000761B7BDFD8D86E00000000 +00E7:00000000007CC6C0C0C0C67C30306000 +00E8:00003018007CC6C6FEC0C07C00000000 +00E9:00001830007CC6C6FEC0C07C00000000 +00EA:0000386C007CC6C6FEC0C07C00000000 +00EB:00006C6C007CC6C6FEC0C07C00000000 +00EC:00003018003818181818183C00000000 +00ED:00000C18003818181818183C00000000 +00EE:0000386C003818181818183C00000000 +00EF:00006C6C003818181818183C00000000 +00F0:00006830587CC6C6C6C6C67C00000000 +00F1:000076DC00FCC6C6C6C6C6C600000000 +00F2:00003018007CC6C6C6C6C67C00000000 +00F3:00001830007CC6C6C6C6C67C00000000 +00F4:0000386C007CC6C6C6C6C67C00000000 +00F5:000076DC007CC6C6C6C6C67C00000000 +00F6:00006C6C007CC6C6C6C6C67C00000000 +00F7:000000001818007E0018180000000000 +00F8:00000000003D676E7E76E6BC00000000 +00F9:0000301800C6C6C6C6C6C67E00000000 +00FA:0000183000C6C6C6C6C6C67E00000000 +00FB:0000386C00C6C6C6C6C6C67E00000000 +00FC:00006C6C00C6C6C6C6C6C67E00000000 +00FD:0000183000C6C6C6C6C6C67E06067C00 +00FE:0000C0C0C0FCC6C6C6C6C6FCC0C0C000 +00FF:00006C6C00C6C6C6C6C6C67E06067C00 +0100:7C007CC6C6C6C6FEC6C6C6C600000000 +0101:0000007C007C067EC6C6C67E00000000 +0102:6C38007CC6C6C6FEC6C6C6C600000000 +0103:00006C38007C067EC6C6C67E00000000 +0104:00007CC6C6C6C6FEC6C6C6C6060C0700 +0105:00000000007C067EC6C6C67E060C0700 +0106:1830007CC6C6C0C0C0C6C67C00000000 +0107:00001830007CC6C0C0C0C67C00000000 +0108:386C007CC6C6C0C0C0C6C67C00000000 +0109:0000386C007CC6C0C0C0C67C00000000 +010A:1818007CC6C6C0C0C0C6C67C00000000 +010B:00001818007CC6C0C0C0C67C00000000 +010C:6C38007CC6C6C0C0C0C6C67C00000000 +010D:00006C38007CC6C0C0C0C67C00000000 +010E:6C3800F8CCC6C6C6C6C6CCF800000000 +010F:6C380606067EC6C6C6C6C67E00000000 +0110:00007C666363FB636363667C00000000 +0111:0000061F067EC6C6C6C6C67E00000000 +0112:7C00FEC0C0C0F8C0C0C0C0FE00000000 +0113:0000007C007CC6C6FEC0C07C00000000 +0114:6C3800FEC0C0C0F8C0C0C0FE00000000 +0115:00006C38007CC6C6FEC0C07C00000000 +0116:181800FEC0C0C0F8C0C0C0FE00000000 +0117:00001818007CC6C6FEC0C07C00000000 +0118:0000FEC0C0C0F8C0C0C0C0FE060C0700 +0119:00000000007CC6C6FEC0C07C18301C00 +011A:6C3800FEC0C0C0F8C0C0C0FE00000000 +011B:00006C38007CC6C6FEC0C07C00000000 +011C:386C007CC6C0C0DEC6C6C67C00000000 +011D:0000386C007EC6C6C6C6C67E06067C00 +011E:6C38007CC6C0C0DEC6C6C67C00000000 +011F:00006C38007EC6C6C6C6C67E06067C00 +0120:1818007CC6C0C0DEC6C6C67C00000000 +0121:00001818007EC6C6C6C6C67E06067C00 +0122:00007CC6C6C0C0DEC6C6C67C00303060 +0123:000C1818007EC6C6C6C6C67E06067C00 +0124:386C00C6C6C6C6FEC6C6C6C600000000 +0125:1C36C0C0C0FCC6C6C6C6C6C600000000 +0126:000066FF66667E666666666600000000 +0127:000060F8607E63636363636300000000 +0128:76DC003C181818181818183C00000000 +0129:000076DC003818181818183C00000000 +012A:7E003C18181818181818183C00000000 +012B:0000007C003818181818183C00000000 +012C:6C38003C181818181818183C00000000 +012D:00006C38003818181818183C00000000 +012E:00003C18181818181818183C18301C00 +012F:00001818003818181818183C18301C00 +0130:1818003C181818181818183C00000000 +0131:00000000003818181818183C00000000 +0132:0000CFC6C6C6C6C6C6F6F6DC00000000 +0133:0000C6C600C6C6C6C6C6C6C636361C00 +0134:1C36001E0C0C0C0C0CCCCC7800000000 +0135:00000E1B000E06060606060666663C00 +0136:0000C6C6CCD8F0F0D8CCC6C600303060 +0137:0000C0C0C0C6CCD8F0D8CCC600303060 +0138:0000000000C6CCD8F0D8CCC600000000 +0139:60C000C0C0C0C0C0C0C0C0FE00000000 +013A:0C180038181818181818183C00000000 +013B:0000C0C0C0C0C0C0C0C0C0FE00303060 +013C:00003818181818181818183C00181830 +013D:6C38C0C0C0C0C0C0C0C0C0FE00000000 +013E:6C380038181818181818183C00000000 +013F:0000C0C0C0C0CCCCC0C0C0FE00000000 +0140:0000381818181B1B1818183C00000000 +0141:00006060606070E06060607F00000000 +0142:0000381818181C381818183C00000000 +0143:1830C6C6C6E6F6DECEC6C6C600000000 +0144:0000183000FCC6C6C6C6C6C600000000 +0145:0000C6C6C6E6F6DECEC6C6C600303060 +0146:0000000000FCC6C6C6C6C6C600303060 +0147:6C38C6C6C6E6F6DECEC6C6C600000000 +0148:00006C3800FCC6C6C6C6C6C600000000 +0149:006060C000FCC6C6C6C6C6C600000000 +014A:0000C6C6C6E6F6DECEC6C6C606061C00 +014B:0000000000FCC6C6C6C6C6C606061C00 +014C:7C007CC6C6C6C6C6C6C6C67C00000000 +014D:0000007C007CC6C6C6C6C67C00000000 +014E:6C38007CC6C6C6C6C6C6C67C00000000 +014F:00006C38007CC6C6C6C6C67C00000000 +0150:366C007CC6C6C6C6C6C6C67C00000000 +0151:0000366C007CC6C6C6C6C67C00000000 +0152:00007FCCCCCCCFCCCCCCCC7F00000000 +0153:00000000007EDBDBDFD8D87E00000000 +0154:183000FCC6C6C6FCF8CCC6C600000000 +0155:0000183000DCE6C0C0C0C0C000000000 +0156:0000FCC6C6C6C6FCF8CCC6C600303060 +0157:00000000006E736060606060006060C0 +0158:6C3800FCC6C6C6FCF8CCC6C600000000 +0159:00006C3800DCE6C0C0C0C0C000000000 +015A:1830007CC6C0C07C0606C67C00000000 +015B:00000C18007CC2C07C06867C00000000 +015C:386C007CC6C0C07C0606C67C00000000 +015D:0000386C007CC2C07C06867C00000000 +015E:00007CC6C0C07C060606C67C30306000 +015F:00000000007CC2C07C06867C30306000 +0160:6C38007CC6C0C07C0606C67C00000000 +0161:00006C38007CC2C07C06867C00000000 +0162:00007E1818181818181818180C0C1800 +0163:0000303030FC30303030301E0C0C1800 +0164:6C38007E181818181818181800000000 +0165:6C38003030FC30303030301E00000000 +0166:00007E1818187E181818181800000000 +0167:0000303030FC30783030301E00000000 +0168:76DC00C6C6C6C6C6C6C6C67C00000000 +0169:000076DC00C6C6C6C6C6C67E00000000 +016A:7C00C6C6C6C6C6C6C6C6C67C00000000 +016B:0000007C00C6C6C6C6C6C67E00000000 +016C:6C38C6C6C6C6C6C6C6C6C67C00000000 +016D:00006C3800C6C6C6C6C6C67E00000000 +016E:386C38C6C6C6C6C6C6C6C67C00000000 +016F:0000386C38C6C6C6C6C6C67E00000000 +0170:366C00C6C6C6C6C6C6C6C67C00000000 +0171:0000366C00C6C6C6C6C6C67E00000000 +0172:0000C6C6C6C6C6C6C6C6C67C18301C00 +0173:0000000000C6C6C6C6C6C67E060C0700 +0174:386C00C6C6C6D6D6FEEE6C6C00000000 +0175:0000386C00C6C6D6D6D6D67C00000000 +0176:386C00C3C366663C1818181800000000 +0177:0000386C00C6C6C6C6C6C67E06067C00 +0178:666600C3C366663C1818181800000000 +0179:183000FE060C183060C0C0FE00000000 +017A:0000183000FE0C183060C0FE00000000 +017B:181800FE060C183060C0C0FE00000000 +017C:0000181800FE0C183060C0FE00000000 +017D:6C3800FE060C183060C0C0FE00000000 +017E:00006C3800FE0C183060C0FE00000000 +017F:00001E30303030303030303000000000 +0186:00007CC6C606060606C6C67C00000000 +018E:0000FE0606063E06060606FE00000000 +018F:00007CC60606FEC6C6C6C67C00000000 +0190:00007CC6C6C078C0C0C6C67C00000000 +0192:00000E1B18187E181818181818D87000 +019D:0000636363737B6F676363636060C000 +019E:0000000000FCC6C6C6C6C6C606060600 +01B5:0000FE060C18FE3060C0C0FE00000000 +01B6:0000000000FE0C18FC3060FE00000000 +01B7:0000FE060C183C0606C6C67C00000000 +01CD:6C38007CC6C6C6FEC6C6C6C600000000 +01CE:00006C38007C067EC6C6C67E00000000 +01CF:6C38003C181818181818183C00000000 +01D0:00006C38003818181818183C00000000 +01D1:6C38007CC6C6C6C6C6C6C67C00000000 +01D2:00006C38007CC6C6C6C6C67C00000000 +01D3:6C38C6C6C6C6C6C6C6C6C67C00000000 +01D4:00006C3800C6C6C6C6C6C67E00000000 +01E2:7E007FCCCCCCFFCCCCCCCCCF00000000 +01E3:0000007E00761B7BDFD8D86E00000000 +01E4:00007CC6C6C0C0DEC6DFC67C00000000 +01E5:00000000007EC6C6DFC6C67E06067C00 +01E6:6C38007CC6C0C0DEC6C6C67C00000000 +01E7:00006C38007EC6C6C6C6C67E06067C00 +01E8:6C38C6C6CCD8F0F0D8CCC6C600000000 +01E9:6C38C0C0C0C6CCD8F0D8CCC600000000 +01EA:00007CC6C6C6C6C6C6C6C67C18301C00 +01EB:00000000007CC6C6C6C6C67C18301C00 +01EC:7C007CC6C6C6C6C6C6C6C67C18301C00 +01ED:0000007C007CC6C6C6C6C67C18301C00 +01EE:6C3800FE0C183C0606C6C67C00000000 +01EF:00006C3800FE060C183C0606C6C67C00 +01F0:00001B0E000E06060606060666663C00 +01F4:1830007CC6C0C0DEC6C6C67C00000000 +01F5:00000C18007EC6C6C6C6C67E06067C00 +01FC:0C18007FCCCCCCFFCCCCCCCF00000000 +01FD:00000C1800761B7BDFD8D86E00000000 +01FE:1830007CC7C6CEDEF6E6C67C00000000 +01FF:00001830003D676E7E76E6BC00000000 +0218:00007CC6C0C07C0606C6C67C00303060 +0219:00000000007CC2C07C06867C00303060 +021A:00007E18181818181818181800181830 +021B:0000303030FC30303030301E000C0C18 +0232:7E00C3C366663C181818181800000000 +0233:0000007C00C6C6C6C6C6C67E06067C00 +0237:00000000000E06060606060666663C00 +0254:00000000007CC6060606C67C00000000 +0258:00000000007CC6C6FE06067C00000000 +0259:00000000007C0606FEC6C67C00000000 +025B:00000000007CC6C078C0C67C00000000 +0272:00000000007E6363636363636060C000 +0292:0000000000FE060C183C0606C6C67C00 +02BB:18303000000000000000000000000000 +02BC:18183000000000000000000000000000 +02BD:30301800000000000000000000000000 +02C6:386C0000000000000000000000000000 +02C7:6C380000000000000000000000000000 +02D8:6C380000000000000000000000000000 +02D9:18180000000000000000000000000000 +02DB:00000000000000000000000018301C00 +02DC:76DC0000000000000000000000000000 +02DD:366C0000000000000000000000000000 +0300:30180000000000000000000000000000 +0301:18300000000000000000000000000000 +0302:386C0000000000000000000000000000 +0303:76DC0000000000000000000000000000 +0304:7C000000000000000000000000000000 +0305:FE000000000000000000000000000000 +0306:6C380000000000000000000000000000 +0307:18180000000000000000000000000000 +0308:6C6C0000000000000000000000000000 +030A:386C3800000000000000000000000000 +030B:366C0000000000000000000000000000 +030C:6C380000000000000000000000000000 +0329:00000000000000000000000000181800 +0384:60C00000000000000000000000000000 +0385:1830006C000000000000000000000000 +0386:60C07CC6C6C6C6FEC6C6C6C600000000 +0387:00000000001818000000000000000000 +0388:60C000FEC0C0C0F8C0C0C0FE00000000 +0389:60C000C6C6C6C6FEC6C6C6C600000000 +038A:60C03C18181818181818183C00000000 +038C:60C07CC6C6C6C6C6C6C6C67C00000000 +038E:60C000C3C366663C1818181800000000 +038F:60C07CC6C6C6C6C6C66C6CEE00000000 +0390:1830D8D8007030303030301C00000000 +0391:00007CC6C6C6C6FEC6C6C6C600000000 +0392:0000FCC6C6C6FCC6C6C6C6FC00000000 +0393:0000FEC0C0C0C0C0C0C0C0C000000000 +0394:000018183C3C666666C3C3FF00000000 +0395:0000FEC0C0C0F8C0C0C0C0FE00000000 +0396:0000FE06060C183060C0C0FE00000000 +0397:0000C6C6C6C6FEC6C6C6C6C600000000 +0398:00007CC6C6C6D6D6C6C6C67C00000000 +0399:00003C18181818181818183C00000000 +039A:0000C6C6CCD8F0F0D8CCC6C600000000 +039B:000018183C3C666666C3C3C300000000 +039C:0000C6C6EEFED6D6C6C6C6C600000000 +039D:0000C6C6C6E6F6DECEC6C6C600000000 +039E:0000FE0000007C00000000FE00000000 +039F:00007CC6C6C6C6C6C6C6C67C00000000 +03A0:0000FEC6C6C6C6C6C6C6C6C600000000 +03A1:0000FCC6C6C6C6FCC0C0C0C000000000 +03A3:0000FEC0603018183060C0FE00000000 +03A4:0000FF18181818181818181800000000 +03A5:0000C3C366663C181818181800000000 +03A6:0000187EDBDBDBDBDBDB7E1800000000 +03A7:0000C6C66C6C38386C6CC6C600000000 +03A8:0000DBDBDBDBDBDBDB7E181800000000 +03A9:00007CC6C6C6C6C6C66C6CEE00000000 +03AA:6666003C181818181818183C00000000 +03AB:666600C3C366663C1818181800000000 +03AC:00001830007BCECCCCCCCE7B00000000 +03AD:00001830007CC6C078C0C67C00000000 +03AE:0000183000FCC6C6C6C6C6C606060600 +03AF:00001830007030303030301C00000000 +03B0:1830006C00C6C6C6C6C6C67C00000000 +03B1:00000000007BCECCCCCCCE7B00000000 +03B2:000078CCCCC8FCC6C6C6C6FCC0C0C000 +03B3:0000000000C3C366663C3C1818181800 +03B4:00007E30187CC6C6C6C6C67C00000000 +03B5:00000000007CC6C078C0C67C00000000 +03B6:0000FE0C183060C0C0C0C07C06060C00 +03B7:0000000000FCC6C6C6C6C6C606060600 +03B8:00003C6666667E666666663C00000000 +03B9:00000000007030303030301C00000000 +03BA:0000000000C6CCD8F0D8CCC600000000 +03BB:0000303018183C3C6666C3C300000000 +03BC:0000000000C6C6C6C6C6CEF6C0C0C000 +03BD:0000000000C6C6C66C6C383800000000 +03BE:00007EC0C0C07CC0C0C0C07C06060C00 +03BF:00000000007CC6C6C6C6C67C00000000 +03C0:0000000000FEC6C6C6C6C6C600000000 +03C1:00000000007CC6C6C6C6C6FCC0C0C000 +03C2:00000000007CC6C0C0C0C07C06060C00 +03C3:00000000003F66666666663C00000000 +03C4:0000000000FF18181818180E00000000 +03C5:0000000000C6C6C6C6C6C67C00000000 +03C6:00000000004EDBDBDBDBDB7E18181800 +03C7:0000000000C6C66C6C38386C6CC6C600 +03C8:0000000000DBDBDBDBDBDB7E18181800 +03C9:000000000066C3DBDBDBFF6600000000 +03CA:0000D8D8007030303030301C00000000 +03CB:00006C6C00C6C6C6C6C6C67C00000000 +03CC:00001830007CC6C6C6C6C67C00000000 +03CD:0000183000C6C6C6C6C6C67C00000000 +03CE:00000C180066C3DBDBDBFF6600000000 +03D1:00003C6666663F06E666663C00000000 +03D5:00000000187EDBDBDBDBDB7E18000000 +03F0:0000000000E3361C18386CC700000000 +03F1:00000000007CC6C6C6C6C6FCC0C07C00 +03F2:00000000007CC6C0C0C0C67C00000000 +03F3:00000606000E06060606060666663C00 +03F4:00007CC6C6C6FEC6C6C6C67C00000000 +03F5:00000000003E60C0FCC0603E00000000 +03F6:0000000000F80C067E060CF800000000 +0400:301800FEC0C0C0F8C0C0C0FE00000000 +0401:6C6C00FEC0C0C0F8C0C0C0FE00000000 +0402:0000FC30303E33333333333600000000 +0403:183000FEC0C0C0C0C0C0C0C000000000 +0404:00007CC6C0C0F8C0C0C0C67C00000000 +0405:00007CC6C0C07C0606C6C67C00000000 +0406:00003C18181818181818183C00000000 +0407:6666003C181818181818183C00000000 +0408:00001E0C0C0C0C0C0CCCCC7800000000 +0409:00003878D8DEDBDBDBDBDB9E00000000 +040A:0000D8D8D8DEFBDBDBDBDBDE00000000 +040B:0000FC30303E33333333333300000000 +040C:1830C6C6CCD8F0F0D8CCC6C600000000 +040D:3018C6C6C6CEDEF6E6C6C6C600000000 +040E:6C38C6C6C6C6C67E0606067C00000000 +040F:0000C6C6C6C6C6C6C6C6C6FE38380000 +0410:00007CC6C6C6C6FEC6C6C6C600000000 +0411:0000FCC0C0FCC6C6C6C6C6FC00000000 +0412:0000FCC6C6C6FCC6C6C6C6FC00000000 +0413:0000FEC0C0C0C0C0C0C0C0C000000000 +0414:00003E6666666666666666FFC3000000 +0415:0000FEC0C0C0F8C0C0C0C0FE00000000 +0416:0000DBDBDB7E3C7EDBDBDBDB00000000 +0417:00007CC6C6063C0606C6C67C00000000 +0418:0000C6C6C6CEDEF6E6C6C6C600000000 +0419:6C38C6C6C6CEDEF6E6C6C6C600000000 +041A:0000C6C6CCD8F0F0D8CCC6C600000000 +041B:00001E3666666666666666C600000000 +041C:000081C3E7FFDBC3C3C3C3C300000000 +041D:0000C6C6C6C6FEC6C6C6C6C600000000 +041E:00007CC6C6C6C6C6C6C6C67C00000000 +041F:0000FEC6C6C6C6C6C6C6C6C600000000 +0420:0000FCC6C6C6C6FCC0C0C0C000000000 +0421:00007CC6C6C0C0C0C0C6C67C00000000 +0422:0000FF18181818181818181800000000 +0423:0000C6C6C6C6C67E0606067C00000000 +0424:00187EDBDBDBDBDBDBDBDB7E18000000 +0425:0000C6C66C6C38386C6CC6C600000000 +0426:0000C6C6C6C6C6C6C6C6C67F03030000 +0427:0000C6C6C6C6C67E0606060600000000 +0428:0000DBDBDBDBDBDBDBDBDB7F00000000 +0429:0000D6D6D6D6D6D6D6D6D67F03030000 +042A:0000E060607E63636363637E00000000 +042B:0000C3C3C3F3DBDBDBDBDBF300000000 +042C:00006060607E63636363637E00000000 +042D:00007CC606063E060606C67C00000000 +042E:0000CEDBDBDBDBFBDBDBDBCE00000000 +042F:00007EC6C6C6C67E1E3666C600000000 +0430:00000000007C067EC6C6C67E00000000 +0431:00007CC0C0FCC6C6C6C6C6FC00000000 +0432:000078CCCCC8FCC6C6C6C6FC00000000 +0433:0000000000FEC0C0C0C0C0C000000000 +0434:00000000007EC6C6C6C6C67E06067C00 +0435:00000000007CC6C6FEC0C07C00000000 +0436:0000000000DBDB7E3C7EDBDB00000000 +0437:00000000007CC6063C06C67C00000000 +0438:0000000000C6C6C6C6C6C67E00000000 +0439:00006C3800C6C6C6C6C6C67E00000000 +043A:0000000000C6CCD8F0D8CCC600000000 +043B:00000000003E6666666666C600000000 +043C:0000000000C3E7FFDBC3C3C300000000 +043D:0000000000C6C6C6FEC6C6C600000000 +043E:00000000007CC6C6C6C6C67C00000000 +043F:0000000000FEC6C6C6C6C6C600000000 +0440:0000000000FCC6C6C6C6C6FCC0C0C000 +0441:00000000007CC6C0C0C0C67C00000000 +0442:0000000000FF18181818181800000000 +0443:0000000000C6C6C6C6C6C67E06067C00 +0444:00000000187EDBDBDBDBDB7E18000000 +0445:0000000000C6C66C386CC6C600000000 +0446:0000000000C6C6C6C6C6C67F03030000 +0447:0000000000C6C6C67E06060600000000 +0448:0000000000DBDBDBDBDBDB7F00000000 +0449:0000000000D6D6D6D6D6D67F03030000 +044A:0000000000E0607C6666667C00000000 +044B:0000000000C3C3F3DBDBDBF300000000 +044C:000000000060607C6666667C00000000 +044D:00000000007CC6063E06C67C00000000 +044E:0000000000CEDBDBFBDBDBCE00000000 +044F:00000000007EC6C67E3666C600000000 +0450:00003018007CC6C6FEC0C07C00000000 +0451:00006C6C007CC6C6FEC0C07C00000000 +0452:000060F8607E63636363636303030E00 +0453:0000183000FEC0C0C0C0C0C000000000 +0454:00000000007CC6C0F8C0C67C00000000 +0455:00000000007EC0C07C0606FC00000000 +0456:00001818003818181818183C00000000 +0457:00006C6C003818181818183C00000000 +0458:00000606000E06060606060666663C00 +0459:000000000078D8DEDBDBDB9E00000000 +045A:0000000000D8D8DEFBDBDBDE00000000 +045B:000060F8607E63636363636300000000 +045C:0000183000C6CCD8F0D8CCC600000000 +045D:0000301800C6C6C6C6C6C67E00000000 +045E:00006C3800C6C6C6C6C6C67E06067C00 +045F:0000000000C6C6C6C6C6C6FE38380000 +0462:000060F8607E63636363637E00000000 +0463:00006060F860607C6666667C00000000 +046A:0000FFC366663C7EDBDBDBDB00000000 +046B:0000000000FF663C3C7EDBDB00000000 +0490:0606FEC0C0C0C0C0C0C0C0C000000000 +0491:0000000606FEC0C0C0C0C0C000000000 +0492:00007F606060FC606060606000000000 +0493:00000000007F6060FC60606000000000 +0494:0000FEC0C0C0C0FCC6C6C6C6060C0000 +0495:0000000000FEC0C0F8CCCCCC0C180000 +0496:0000D6D6D67C387CD6D6D6D703030000 +0497:0000000000D6D67C387CD6D703030000 +0498:00007CC6C6063C0606C6C67C30303000 +0499:00000000007CC6063C06C67C30303000 +049A:0000C6C6CCD8F0F0D8CCC6C703030000 +049B:0000000000C6CCD8F0D8CCC703030000 +049C:0000C6C6D6DCF8F8DCD6C6C600000000 +049D:0000000000C6D6DCF8DCD6C600000000 +04A0:0000E3E3666C78786C66636300000000 +04A1:0000000000E3666C786C666300000000 +04A2:0000C6C6C6C6FEC6C6C6C6C703030000 +04A3:0000000000C6C6C6FEC6C6C703030000 +04A4:0000CFCCCCCCFCCCCCCCCCCC00000000 +04A5:0000000000CFCCCCFCCCCCCC00000000 +04AA:00007CC6C6C0C0C0C0C6C67C30303000 +04AB:00000000007CC6C0C0C0C67C30303000 +04AE:0000C3C366663C181818181800000000 +04AF:0000000000C3C366663C3C1818181800 +04B0:0000C3C366663C187E18181800000000 +04B1:0000000000C3C366663C3C187E181800 +04B2:0000C6C66C6C38386C6CC6C703030000 +04B3:0000000000C6C66C386CC6C703030000 +04B6:0000C6C6C6C6C67E0606060703030000 +04B7:0000000000C6C6C67E06060703030000 +04B8:0000C6C6C6D6D67E1616060600000000 +04B9:0000000000C6D6D67E16060600000000 +04BA:0000C0C0C0C0FCC6C6C6C6C600000000 +04BB:0000000000C0C0FCC6C6C6C600000000 +04C0:00003C18181818181818183C00000000 +04C1:6C3800DBDBDB7E3C7EDBDBDB00000000 +04C2:00006C3800DBDB7E3C7EDBDB00000000 +04CF:00003818181818181818183C00000000 +04D0:6C38007CC6C6C6FEC6C6C6C600000000 +04D1:00006C38007C067EC6C6C67E00000000 +04D2:6C6C007CC6C6C6FEC6C6C6C600000000 +04D3:00006C6C007C067EC6C6C67E00000000 +04D4:00007FCCCCCCFFCCCCCCCCCF00000000 +04D5:0000000000761B7BDFD8D86E00000000 +04D6:6C3800FEC0C0C0F8C0C0C0FE00000000 +04D7:00006C38007CC6C6FEC0C07C00000000 +04D8:00007CC60606FEC6C6C6C67C00000000 +04D9:00000000007C0606FEC6C67C00000000 +04DA:6C6C007CC60606FEC6C6C67C00000000 +04DB:00006C6C007C0606FEC6C67C00000000 +04DC:666600DBDBDB7E3C7EDBDBDB00000000 +04DD:0000666600DBDB7E3C7EDBDB00000000 +04DE:6C6C007CC6C6063C06C6C67C00000000 +04DF:00006C6C007CC6063C06C67C00000000 +04E2:7C00C6C6C6CEDEF6E6C6C6C600000000 +04E3:0000007C00C6C6C6C6C6C67E00000000 +04E4:6C6C00C6C6C6CEDEF6E6C6C600000000 +04E5:00006C6C00C6C6C6C6C6C67E00000000 +04E6:6C6C007CC6C6C6C6C6C6C67C00000000 +04E7:00006C6C007CC6C6C6C6C67C00000000 +04E8:00007CC6C6C6FEC6C6C6C67C00000000 +04E9:00000000007CC6C6FEC6C67C00000000 +04EA:6C6C007CC6C6C6FEC6C6C67C00000000 +04EB:00006C6C007CC6C6FEC6C67C00000000 +04EC:6C6C007CC606063E0606C67C00000000 +04ED:00006C6C007CC6063E06C67C00000000 +04EE:7C00C6C6C6C6C67E0606067C00000000 +04EF:0000007C00C6C6C6C6C6C67E06067C00 +04F0:6C6C00C6C6C6C67E0606067C00000000 +04F1:00006C6C00C6C6C6C6C6C67E06067C00 +04F2:366C00C6C6C6C67E0606067C00000000 +04F3:0000366C00C6C6C6C6C6C67E06067C00 +04F4:6C6C00C6C6C6C67E0606060600000000 +04F5:00006C6C00C6C6C67E06060600000000 +04F8:6C6C00C3C3C3F3DBDBDBDBF300000000 +04F9:00006C6C00C3C3F3DBDBDBF300000000 +05D0:0000C6C666663C78CCCCC6C600000000 +05D1:0000FC0606060606060606FF00000000 +05D2:0000780C0C0C0C0C1E3663C300000000 +05D3:0000FF06060606060606060600000000 +05D4:0000FC0606C6C6C6C6C6C6C600000000 +05D5:00007018181818181818181800000000 +05D6:00007E0C181818181818181800000000 +05D7:0000FCC6C6C6C6C6C6C6C6C600000000 +05D8:0000CCCEC6C6C6C6C6C6C67C00000000 +05D9:00007018181818000000000000000000 +05DA:0000FC06060606060606060606060600 +05DB:0000FC0606060606060606FC00000000 +05DC:C0C0FE060606060C1830303000000000 +05DD:0000FCC6C6C6C6C6C6C6C6FE00000000 +05DE:0000DE73636363636363636700000000 +05DF:0000F018181818181818181800000000 +05E0:0000780C0C0C0C0C0C0C0C7C00000000 +05E1:0000FE63636363636363633E00000000 +05E2:0000C6C6C6666636361C38E000000000 +05E3:00007CC6C6C666060606060606060600 +05E4:00007CC6C6C66606060606FC00000000 +05E5:0000636333361C181818181818181800 +05E6:0000C6C6666C383018180CFC00000000 +05E7:0000FE0606C6C6CCD8D8D8D8C0C0C000 +05E8:0000FC06060606060606060600000000 +05E9:0000DBDBDBDBDBF3E3C3C6FC00000000 +05EA:0000FE6363636363636363C300000000 +1E0C:0000F8CCC6C6C6C6C6C6CCF800303000 +1E0D:00000606067EC6C6C6C6C67E00181800 +1E34:0000C6C6CCD8F0F0D8CCC6C6007C0000 +1E35:0000C0C0C0C6CCD8F0D8CCC6007C0000 +1E36:0000C0C0C0C0C0C0C0C0C0FE00181800 +1E37:00003818181818181818183C00181800 +1E40:1818C3C3E7FFDBDBC3C3C3C300000000 +1E41:0000181800FEDBDBDBDBDBDB00000000 +1E42:0000C3C3E7FFDBDBC3C3C3C300181800 +1E43:0000000000FEDBDBDBDBDBDB00181800 +1E44:1818C6C6C6E6F6DECEC6C6C600000000 +1E45:0000303000FCC6C6C6C6C6C600000000 +1E46:0000C6C6C6E6F6DECEC6C6C600181800 +1E47:0000000000FCC6C6C6C6C6C600181800 +1E6C:0000FF18181818181818181800181800 +1E6D:0000303030FC30303030301E000C0C00 +1EB8:0000FEC0C0C0F8C0C0C0C0FE00181800 +1EB9:00000000007CC6C6FEC0C07C00181800 +1EBC:76DC00FEC0C0C0F8C0C0C0FE00000000 +1EBD:000076DC007CC6C6FEC0C07C00000000 +1ECA:00003C18181818181818183C00181800 +1ECB:00001818003818181818183C00181800 +1ECC:00007CC6C6C6C6C6C6C6C67C00181800 +1ECD:00000000007CC6C6C6C6C67C00181800 +1EE4:0000C6C6C6C6C6C6C6C6C67C00181800 +1EE5:0000000000C6C6C6C6C6C67E00181800 +1EF8:76DC00C3C366663C1818181800000000 +1EF9:000076DC00C6C6C6C6C6C67E06067C00 +2000:00000000000000000000000000000000 +2001:00000000000000000000000000000000 +2002:00000000000000000000000000000000 +2003:00000000000000000000000000000000 +2004:00000000000000000000000000000000 +2005:00000000000000000000000000000000 +2006:00000000000000000000000000000000 +2007:00000000000000000000000000000000 +2008:00000000000000000000000000000000 +2009:00000000000000000000000000000000 +200A:00000000000000000000000000000000 +200B:00000000000000000000000000000000 +200C:00000000000000000000000000000000 +200D:00000000000000000000000000000000 +200E:00000000000000000000000000000000 +200F:00000000000000000000000000000000 +2010:000000000000007C0000000000000000 +2011:000000000000007C0000000000000000 +2012:00000000000000FE0000000000000000 +2013:00000000000000FE0000000000000000 +2014:00000000000000FF0000000000000000 +2015:00000000000000FF0000000000000000 +2016:00006C6C6C6C6C6C6C6C6C6C00000000 +2017:00000000000000000000000000FE00FE +2018:00183030000000000000000000000000 +2019:00181830000000000000000000000000 +201A:00000000000000000000181830000000 +201B:00303018000000000000000000000000 +201C:0066CCCC000000000000000000000000 +201D:00333366000000000000000000000000 +201E:000000000000000000006666CC000000 +201F:00CCCC66000000000000000000000000 +2020:000018187E1818181818181800000000 +2021:000018187E181818187E181800000000 +2022:000000000000183C3C18000000000000 +2026:00000000000000000000DBDB00000000 +2030:0000ECACF8183030607FD5DF00000000 +2032:00181818180000000000000000000000 +2033:00666666660000000000000000000000 +2039:00000000000C18306030180C00000000 +203A:00000000006030180C18306000000000 +203C:00006666666666666600666600000000 +203E:FE000000000000000000000000000000 +2070:00386C6C6C6C38000000000000000000 +2071:1800381818183C000000000000000000 +2074:000C1C347E0C0C000000000000000000 +2075:007860780C0C78000000000000000000 +2076:003860786C6C38000000000000000000 +2077:007C0C18183030000000000000000000 +2078:00386C386C6C38000000000000000000 +2079:00386C6C3C0C38000000000000000000 +207A:000018187E1818000000000000000000 +207B:000000007C0000000000000000000000 +207C:0000007C007C00000000000000000000 +207D:00183030303018000000000000000000 +207E:00301818181830000000000000000000 +207F:0000786C6C6C6C000000000000000000 +2080:00000000000000386C6C6C6C38000000 +2081:0000000000000018381818183C000000 +2082:00000000000000386C0C18307C000000 +2083:00000000000000780C380C0C78000000 +2084:000000000000000C1C347E0C0C000000 +2085:000000000000007860780C0C78000000 +2086:000000000000003860786C6C38000000 +2087:000000000000007C0C18183030000000 +2088:00000000000000386C386C6C38000000 +2089:00000000000000386C6C3C0C38000000 +208A:000000000000000018187E1818000000 +208B:000000000000000000007C0000000000 +208C:0000000000000000007C007C00000000 +208D:00000000000000183030303018000000 +208E:00000000000000301818181830000000 +2090:0000000000000000380C3C6C3C000000 +2091:0000000000000000386C7C603C000000 +2092:0000000000000000386C6C6C38000000 +2093:0000000000000000663C183C66000000 +2094:0000000000000000780C7C6C38000000 +2095:0000000000006060786C6C6C6C000000 +2096:0000000000006060666C786C66000000 +2097:0000000000003818181818183C000000 +2098:0000000000000000FCD6D6D6D6000000 +209A:0000000000000000786C6C6C78606000 +20A7:0000F8CCCCCCFAC6CFC6C6C300000000 +20AA:0000F28A8AAAAAAAAAA2A2BC00000000 +20AC:0000001E3360FC60FC60331E00000000 +20AE:0000FF18181E781E7818181800000000 +2102:00003C52525050505052523C00000000 +210E:0000C0C0C0FCC6C6C6C6C6C600000000 +210F:000060F8607E63636363636300000000 +2115:0000424262526A564A46424200000000 +2116:0000969696D0F0F0B096909600000000 +211A:00003C525252525252525A3C06000000 +211D:0000F8A4A4A4A4B8A8B4AAE600000000 +2122:0000FB55555100000000000000000000 +2124:00007E02060A14285060407E00000000 +2126:00007CC6C6C6C6C6C66C6CEE00000000 +2135:0000666633333E7CCCCCC66600000000 +2190:00000000002060FEFE60200000000000 +2191:0000183C7E1818181818181800000000 +2192:0000000000080CFEFE0C080000000000 +2193:0000181818181818187E3C1800000000 +2194:00000000002466FFFF66240000000000 +2195:0000183C7E181818187E3C1800000000 +21A4:00000000002262FEFE62220000000000 +21A6:0000000000888CFEFE8C880000000000 +21A8:0000183C7E1818187E3C187E00000000 +21B2:0000060606062666FEFE602000000000 +21B3:0000C0C0C0C0C8CCFEFE0C0800000000 +21B5:0000000006062666FEFE602000000000 +21BB:000000F83868CBC3C3663C0000000000 +21CB:0000002060FEFE00FEFE0C0800000000 +21CC:000000080CFEFE00FEFE602000000000 +21D0:00000000103E7EE07E3E100000000000 +21D1:000010387CEE6C6C6C6C6C6C00000000 +21D2:0000000010F8FC0EFCF8100000000000 +21D3:00006C6C6C6C6C6CEE7C381000000000 +21D4:00000000247EFFC3FF7E240000000000 +21D5:000010387CEE6C6CEE7C381000000000 +2200:0000C3C3C37E6666243C181800000000 +2203:000000FE060606FE060606FE00000000 +2204:00000CFE1E1636FE366666FEC0000000 +2205:000003067ECFDBDBF37E60C000000000 +2206:000018183C3C666666C3C3FF00000000 +2207:0000FFC3C36666663C3C181800000000 +2208:0000003E60C0C0FEC0C0603E00000000 +2209:0000063E6CCCD8FED8F0707E60000000 +220A:000000003E60C0FEC0603E0000000000 +220B:000000F80C0606FE06060CF800000000 +220C:0000C0F86C6636FE361E1CFC0C000000 +220D:00000000F80C06FE060CF80000000000 +2212:00000000000000FE0000000000000000 +2213:00000000007E0018187E181800000000 +2214:0000000018180018187E181800000000 +2215:0000000002060C183060C08000000000 +2216:0000000080C06030180C060200000000 +2219:00000000000038383800000000000000 +221A:000E0C0C0C0CCCCCCC6C3C1C00000000 +221E:000000000076DBDBDB6E000000000000 +221F:00000000C0C0C0C0C0FE000000000000 +2225:00006C6C6C6C6C6C6C6C6C6C00000000 +2227:0000000018183C3C6666C3C300000000 +2228:00000000C3C366663C3C181800000000 +2229:000000007CC6C6C6C6C6C6C600000000 +222A:00000000C6C6C6C6C6C6C67C00000000 +2248:000000000076DC0076DC000000000000 +2260:0000000006FE1830FEC0000000000000 +2261:00000000FE0000FE0000FE0000000000 +2264:0000000C18306030180C007E00000000 +2265:00000030180C060C1830007E00000000 +226A:000000091B366CD86C361B0900000000 +226B:00000090D86C361B366CD89000000000 +2282:000000007EC0C0C0C0C07E0000000000 +2283:00000000FC0606060606FC0000000000 +2286:0000007EC0C0C0C0C07E00FE00000000 +2287:000000FC0606060606FC00FE00000000 +22A5:0000000018181818181818FF00000000 +22C2:00007CC6C6C6C6C6C6C6C6C600000000 +22C3:0000C6C6C6C6C6C6C6C6C67C00000000 +2300:000003067ECFDBDBF37E60C000000000 +2302:00000000183C66C3C3C3C3FF00000000 +2308:00003C30303030303030303000000000 +2309:00003C0C0C0C0C0C0C0C0C0C00000000 +230A:00003030303030303030303C00000000 +230B:00000C0C0C0C0C0C0C0C0C3C00000000 +2310:0000000000FEC0C0C000000000000000 +2319:0000000000C0C0C0FE00000000000000 +2320:00000E1B1B1818181818181818181818 +2321:181818181818181818D8D87000000000 +239B:060C1818303030606060606060606060 +239C:60606060606060606060606060606060 +239D:60606060606060606030303018180C06 +239E:603018180C0C0C060606060606060606 +239F:06060606060606060606060606060606 +23A0:0606060606060606060C0C0C18183060 +23A1:7E606060606060606060606060606060 +23A2:60606060606060606060606060606060 +23A3:6060606060606060606060606060607E +23A4:7E060606060606060606060606060606 +23A5:06060606060606060606060606060606 +23A6:0606060606060606060606060606067E +23A7:0F183030303030303030303030303030 +23A8:30303030303030E0E030303030303030 +23A9:3030303030303030303030303030180F +23AB:F0180C0C0C0C0C0C0C0C0C0C0C0C0C0C +23AC:0C0C0C0C0C0C0C07070C0C0C0C0C0C0C +23AD:0C0C0C0C0C0C0C0C0C0C0C0C0C0C18F0 +23AE:18181818181818181818181818181818 +23AF:00000000000000FFFF00000000000000 +23BA:FFFF0000000000000000000000000000 +23BB:00000000FFFF00000000000000000000 +23BC:00000000000000000000FFFF00000000 +23BD:0000000000000000000000000000FFFF +23D0:18181818181818181818181818181818 +2409:00CCCCFCCCCCCC003F0C0C0C0C0C0000 +240A:00C0C0C0C0C0F8003F303C3030300000 +240B:00CCCCCCCC7830003F0C0C0C0C0C0000 +240C:00FCC0F0C0C0C0003F303C3030300000 +240D:0078CCC0C0CC78003E33333E36330000 +2424:00CCECFCDCCCCC0030303030303F0000 +2500:00000000000000FFFF00000000000000 +2501:000000000000FFFFFF00000000000000 +2502:18181818181818181818181818181818 +2503:38383838383838383838383838383838 +2508:00000000000000AAAA00000000000000 +2509:000000000000AAAAAA00000000000000 +250A:18181800181818001818180018181800 +250B:38383800383838003838380038383800 +250C:000000000000001F1F18181818181818 +250D:0000000000001F1F1F18181818181818 +250E:000000000000003F3F38383838383838 +250F:0000000000003F3F3F38383838383838 +2510:00000000000000F8F818181818181818 +2511:000000000000F8F8F818181818181818 +2512:00000000000000F8F838383838383838 +2513:000000000000F8F8F838383838383838 +2514:181818181818181F1F00000000000000 +2515:1818181818181F1F1F00000000000000 +2516:383838383838383F3F00000000000000 +2517:3838383838383F3F3F00000000000000 +2518:18181818181818F8F800000000000000 +2519:181818181818F8F8F800000000000000 +251A:38383838383838F8F800000000000000 +251B:383838383838F8F8F800000000000000 +251C:181818181818181F1F18181818181818 +251D:1818181818181F1F1F18181818181818 +251E:383838383838383F3F18181818181818 +251F:181818181818183F3F38383838383838 +2520:383838383838383F3F38383838383838 +2521:3838383838383F3F3F18181818181818 +2522:1818181818183F3F3F38383838383838 +2523:3838383838383F3F3F38383838383838 +2524:18181818181818F8F818181818181818 +2525:181818181818F8F8F818181818181818 +2526:38383838383838F8F818181818181818 +2527:18181818181818F8F838383838383838 +2528:38383838383838F8F838383838383838 +2529:383838383838F8F8F818181818181818 +252A:181818181818F8F8F838383838383838 +252B:383838383838F8F8F838383838383838 +252C:00000000000000FFFF18181818181818 +252D:000000000000F8FFFF18181818181818 +252E:0000000000001FFFFF18181818181818 +252F:000000000000FFFFFF18181818181818 +2530:00000000000000FFFF38383838383838 +2531:000000000000F8FFFF38383838383838 +2532:0000000000003FFFFF38383838383838 +2533:000000000000FFFFFF38383838383838 +2534:18181818181818FFFF00000000000000 +2535:181818181818F8FFFF00000000000000 +2536:1818181818181FFFFF00000000000000 +2537:181818181818FFFFFF00000000000000 +2538:38383838383838FFFF00000000000000 +2539:383838383838F8FFFF00000000000000 +253A:3838383838383FFFFF00000000000000 +253B:383838383838FFFFFF00000000000000 +253C:18181818181818FFFF18181818181818 +253D:181818181818F8FFFF18181818181818 +253E:1818181818181FFFFF18181818181818 +253F:181818181818FFFFFF18181818181818 +2540:38383838383838FFFF18181818181818 +2541:18181818181818FFFF38383838383838 +2542:38383838383838FFFF38383838383838 +2543:383838383838F8FFFF18181818181818 +2544:3838383838383FFFFF18181818181818 +2545:181818181818F8FFFF38383838383838 +2546:1818181818181FFFFF38383838383838 +2547:383838383838FFFFFF18181818181818 +2548:181818181818FFFFFF38383838383838 +2549:383838383838F8FFFF38383838383838 +254A:3838383838383FFFFF38383838383838 +254B:383838383838FFFFFF38383838383838 +2550:0000000000FFFF00FFFF000000000000 +2551:6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C +2552:00000000001F1F181F1F181818181818 +2553:000000000000007F7F6C6C6C6C6C6C6C +2554:00000000007F7F606F6F6C6C6C6C6C6C +2555:0000000000F8F818F8F8181818181818 +2556:00000000000000FCFC6C6C6C6C6C6C6C +2557:0000000000FCFC0CECEC6C6C6C6C6C6C +2558:18181818181F1F181F1F000000000000 +2559:6C6C6C6C6C6C6C7F7F00000000000000 +255A:6C6C6C6C6C6F6F607F7F000000000000 +255B:1818181818F8F818F8F8000000000000 +255C:6C6C6C6C6C6C6CFCFC00000000000000 +255D:6C6C6C6C6CECEC0CFCFC000000000000 +255E:18181818181F1F181F1F181818181818 +255F:6C6C6C6C6C6C6C6F6F6C6C6C6C6C6C6C +2560:6C6C6C6C6C6F6F606F6F6C6C6C6C6C6C +2561:1818181818F8F818F8F8181818181818 +2562:6C6C6C6C6C6C6CECEC6C6C6C6C6C6C6C +2563:6C6C6C6C6CECEC0CECEC6C6C6C6C6C6C +2564:0000000000FFFF00FFFF181818181818 +2565:00000000000000FFFF6C6C6C6C6C6C6C +2566:0000000000FFFF00EFEF6C6C6C6C6C6C +2567:1818181818FFFF00FFFF000000000000 +2568:6C6C6C6C6C6C6CFFFF00000000000000 +2569:6C6C6C6C6CEFEF00FFFF000000000000 +256A:1818181818FFFF18FFFF181818181818 +256B:6C6C6C6C6C6C6CFFFF6C6C6C6C6C6C6C +256C:6C6C6C6C6CEFEF00EFEF6C6C6C6C6C6C +256D:00000000000000070F1C181818181818 +256E:00000000000000E0F038181818181818 +256F:18181818181838F0E000000000000000 +2570:1818181818181C0F0700000000000000 +2571:0101030206040C08181030206040C080 +2572:80C0406020301018080C040602030101 +2573:81C1436226341C18181C34266243C181 +2574:00000000000000F8F800000000000000 +2575:18181818181818181800000000000000 +2576:000000000000001F1F00000000000000 +2577:00000000000000181818181818181818 +2578:000000000000F8F8F800000000000000 +2579:38383838383838383800000000000000 +257A:0000000000001F1F1F00000000000000 +257B:00000000000000383838383838383838 +257C:0000000000001FFFFF00000000000000 +257D:18181818181818383838383838383838 +257E:000000000000F8FFFF00000000000000 +257F:38383838383838383818181818181818 +2580:FFFFFFFFFFFFFFFF0000000000000000 +2581:0000000000000000000000000000FFFF +2582:000000000000000000000000FFFFFFFF +2583:00000000000000000000FFFFFFFFFFFF +2584:0000000000000000FFFFFFFFFFFFFFFF +2585:000000000000FFFFFFFFFFFFFFFFFFFF +2586:00000000FFFFFFFFFFFFFFFFFFFFFFFF +2587:0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF +2588:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +2589:FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +258A:FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +258B:F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +258C:F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +258D:E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0 +258E:C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 +258F:80808080808080808080808080808080 +2590:0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F +2591:88228822882288228822882288228822 +2592:AA55AA55AA55AA55AA55AA55AA55AA55 +2593:EEBBEEBBEEBBEEBBEEBBEEBBEEBBEEBB +2596:0000000000000000F0F0F0F0F0F0F0F0 +2597:00000000000000000F0F0F0F0F0F0F0F +2598:F0F0F0F0F0F0F0F00000000000000000 +2599:F0F0F0F0F0F0F0F0FFFFFFFFFFFFFFFF +259A:F0F0F0F0F0F0F0F00F0F0F0F0F0F0F0F +259B:FFFFFFFFFFFFFFFFF0F0F0F0F0F0F0F0 +259C:FFFFFFFFFFFFFFFF0F0F0F0F0F0F0F0F +259D:0F0F0F0F0F0F0F0F0000000000000000 +259E:0F0F0F0F0F0F0F0FF0F0F0F0F0F0F0F0 +259F:0F0F0F0F0F0F0F0FFFFFFFFFFFFFFFFF +25A0:00000000007C7C7C7C7C7C0000000000 +25AC:0000000000000000FEFEFEFE00000000 +25AE:0000FEFEFEFEFEFEFEFEFEFE00000000 +25B2:0000000018183C3C7E7EFFFF00000000 +25B6:00000000C0F0FCFFFFFCF0C000000000 +25BA:00000000C0F0FCFFFFFCF0C000000000 +25BC:00000000FFFF7E7E3C3C181800000000 +25C0:00000000030F3FFFFF3F0F0300000000 +25C4:00000000030F3FFFFF3F0F0300000000 +25C6:00000000183C7EFF7E3C180000000000 +25CA:00000000183C66C3663C180000000000 +25CB:00000000003C664242663C0000000000 +25CF:00000000003C7E7E7E7E3C0000000000 +25D8:FFFFFFFFFFFFE7C3C3E7FFFFFFFFFFFF +25D9:FFFFFFFFFFC399BDBD99C3FFFFFFFFFF +263A:00007E81A58181BD9981817E00000000 +263B:00007EFFDBFFFFC3E7FFFF7E00000000 +263C:00000018DB7E3CE73C7EDB1800000000 +2640:00003C666666663C187E181800000000 +2642:00003E0E1A3278CCCCCCCC7800000000 +2660:000018183C7EFFFF7E18183C00000000 +2663:0000183C3C185AFFFF5A183C00000000 +2665:0000000066FFFFFFFF7E3C1800000000 +2666:00000000183C7EFF7E3C180000000000 +266A:00003F333F3030303030F0E000000000 +266B:00007F637F636363636367E6C0000000 +2713:000003030606CCCC7878303000000000 +2714:000007070E0EDCFC7878303000000000 +2717:00000CCC7838383C6660C0C000000000 +2718:00000EEE7C3C3C3E7773E0E000000000 +27E8:00000C0C1818303018180C0C00000000 +27E9:0000303018180C0C1818303000000000 +27EA:000036366C6CD8D86C6C363600000000 +27EB:0000D8D86C6C36366C6CD8D800000000 +2800:00000000000000000000000000000000 +2801:00606000000000000000000000000000 +2802:00000000006060000000000000000000 +2803:00606000006060000000000000000000 +2804:00000000000000000060600000000000 +2805:00606000000000000060600000000000 +2806:00000000006060000060600000000000 +2807:00606000006060000060600000000000 +2808:00060600000000000000000000000000 +2809:00666600000000000000000000000000 +280A:00060600006060000000000000000000 +280B:00666600006060000000000000000000 +280C:00060600000000000060600000000000 +280D:00666600000000000060600000000000 +280E:00060600006060000060600000000000 +280F:00666600006060000060600000000000 +2810:00000000000606000000000000000000 +2811:00606000000606000000000000000000 +2812:00000000006666000000000000000000 +2813:00606000006666000000000000000000 +2814:00000000000606000060600000000000 +2815:00606000000606000060600000000000 +2816:00000000006666000060600000000000 +2817:00606000006666000060600000000000 +2818:00060600000606000000000000000000 +2819:00666600000606000000000000000000 +281A:00060600006666000000000000000000 +281B:00666600006666000000000000000000 +281C:00060600000606000060600000000000 +281D:00666600000606000060600000000000 +281E:00060600006666000060600000000000 +281F:00666600006666000060600000000000 +2820:00000000000000000006060000000000 +2821:00606000000000000006060000000000 +2822:00000000006060000006060000000000 +2823:00606000006060000006060000000000 +2824:00000000000000000066660000000000 +2825:00606000000000000066660000000000 +2826:00000000006060000066660000000000 +2827:00606000006060000066660000000000 +2828:00060600000000000006060000000000 +2829:00666600000000000006060000000000 +282A:00060600006060000006060000000000 +282B:00666600006060000006060000000000 +282C:00060600000000000066660000000000 +282D:00666600000000000066660000000000 +282E:00060600006060000066660000000000 +282F:00666600006060000066660000000000 +2830:00000000000606000006060000000000 +2831:00606000000606000006060000000000 +2832:00000000006666000006060000000000 +2833:00606000006666000006060000000000 +2834:00000000000606000066660000000000 +2835:00606000000606000066660000000000 +2836:00000000006666000066660000000000 +2837:00606000006666000066660000000000 +2838:00060600000606000006060000000000 +2839:00666600000606000006060000000000 +283A:00060600006666000006060000000000 +283B:00666600006666000006060000000000 +283C:00060600000606000066660000000000 +283D:00666600000606000066660000000000 +283E:00060600006666000066660000000000 +283F:00666600006666000066660000000000 +2840:00000000000000000000000000606000 +2841:00606000000000000000000000606000 +2842:00000000006060000000000000606000 +2843:00606000006060000000000000606000 +2844:00000000000000000060600000606000 +2845:00606000000000000060600000606000 +2846:00000000006060000060600000606000 +2847:00606000006060000060600000606000 +2848:00060600000000000000000000606000 +2849:00666600000000000000000000606000 +284A:00060600006060000000000000606000 +284B:00666600006060000000000000606000 +284C:00060600000000000060600000606000 +284D:00666600000000000060600000606000 +284E:00060600006060000060600000606000 +284F:00666600006060000060600000606000 +2850:00000000000606000000000000606000 +2851:00606000000606000000000000606000 +2852:00000000006666000000000000606000 +2853:00606000006666000000000000606000 +2854:00000000000606000060600000606000 +2855:00606000000606000060600000606000 +2856:00000000006666000060600000606000 +2857:00606000006666000060600000606000 +2858:00060600000606000000000000606000 +2859:00666600000606000000000000606000 +285A:00060600006666000000000000606000 +285B:00666600006666000000000000606000 +285C:00060600000606000060600000606000 +285D:00666600000606000060600000606000 +285E:00060600006666000060600000606000 +285F:00666600006666000060600000606000 +2860:00000000000000000006060000606000 +2861:00606000000000000006060000606000 +2862:00000000006060000006060000606000 +2863:00606000006060000006060000606000 +2864:00000000000000000066660000606000 +2865:00606000000000000066660000606000 +2866:00000000006060000066660000606000 +2867:00606000006060000066660000606000 +2868:00060600000000000006060000606000 +2869:00666600000000000006060000606000 +286A:00060600006060000006060000606000 +286B:00666600006060000006060000606000 +286C:00060600000000000066660000606000 +286D:00666600000000000066660000606000 +286E:00060600006060000066660000606000 +286F:00666600006060000066660000606000 +2870:00000000000606000006060000606000 +2871:00606000000606000006060000606000 +2872:00000000006666000006060000606000 +2873:00606000006666000006060000606000 +2874:00000000000606000066660000606000 +2875:00606000000606000066660000606000 +2876:00000000006666000066660000606000 +2877:00606000006666000066660000606000 +2878:00060600000606000006060000606000 +2879:00666600000606000006060000606000 +287A:00060600006666000006060000606000 +287B:00666600006666000006060000606000 +287C:00060600000606000066660000606000 +287D:00666600000606000066660000606000 +287E:00060600006666000066660000606000 +287F:00666600006666000066660000606000 +2880:00000000000000000000000000060600 +2881:00606000000000000000000000060600 +2882:00000000006060000000000000060600 +2883:00606000006060000000000000060600 +2884:00000000000000000060600000060600 +2885:00606000000000000060600000060600 +2886:00000000006060000060600000060600 +2887:00606000006060000060600000060600 +2888:00060600000000000000000000060600 +2889:00666600000000000000000000060600 +288A:00060600006060000000000000060600 +288B:00666600006060000000000000060600 +288C:00060600000000000060600000060600 +288D:00666600000000000060600000060600 +288E:00060600006060000060600000060600 +288F:00666600006060000060600000060600 +2890:00000000000606000000000000060600 +2891:00606000000606000000000000060600 +2892:00000000006666000000000000060600 +2893:00606000006666000000000000060600 +2894:00000000000606000060600000060600 +2895:00606000000606000060600000060600 +2896:00000000006666000060600000060600 +2897:00606000006666000060600000060600 +2898:00060600000606000000000000060600 +2899:00666600000606000000000000060600 +289A:00060600006666000000000000060600 +289B:00666600006666000000000000060600 +289C:00060600000606000060600000060600 +289D:00666600000606000060600000060600 +289E:00060600006666000060600000060600 +289F:00666600006666000060600000060600 +28A0:00000000000000000006060000060600 +28A1:00606000000000000006060000060600 +28A2:00000000006060000006060000060600 +28A3:00606000006060000006060000060600 +28A4:00000000000000000066660000060600 +28A5:00606000000000000066660000060600 +28A6:00000000006060000066660000060600 +28A7:00606000006060000066660000060600 +28A8:00060600000000000006060000060600 +28A9:00666600000000000006060000060600 +28AA:00060600006060000006060000060600 +28AB:00666600006060000006060000060600 +28AC:00060600000000000066660000060600 +28AD:00666600000000000066660000060600 +28AE:00060600006060000066660000060600 +28AF:00666600006060000066660000060600 +28B0:00000000000606000006060000060600 +28B1:00606000000606000006060000060600 +28B2:00000000006666000006060000060600 +28B3:00606000006666000006060000060600 +28B4:00000000000606000066660000060600 +28B5:00606000000606000066660000060600 +28B6:00000000006666000066660000060600 +28B7:00606000006666000066660000060600 +28B8:00060600000606000006060000060600 +28B9:00666600000606000006060000060600 +28BA:00060600006666000006060000060600 +28BB:00666600006666000006060000060600 +28BC:00060600000606000066660000060600 +28BD:00666600000606000066660000060600 +28BE:00060600006666000066660000060600 +28BF:00666600006666000066660000060600 +28C0:00000000000000000000000000666600 +28C1:00606000000000000000000000666600 +28C2:00000000006060000000000000666600 +28C3:00606000006060000000000000666600 +28C4:00000000000000000060600000666600 +28C5:00606000000000000060600000666600 +28C6:00000000006060000060600000666600 +28C7:00606000006060000060600000666600 +28C8:00060600000000000000000000666600 +28C9:00666600000000000000000000666600 +28CA:00060600006060000000000000666600 +28CB:00666600006060000000000000666600 +28CC:00060600000000000060600000666600 +28CD:00666600000000000060600000666600 +28CE:00060600006060000060600000666600 +28CF:00666600006060000060600000666600 +28D0:00000000000606000000000000666600 +28D1:00606000000606000000000000666600 +28D2:00000000006666000000000000666600 +28D3:00606000006666000000000000666600 +28D4:00000000000606000060600000666600 +28D5:00606000000606000060600000666600 +28D6:00000000006666000060600000666600 +28D7:00606000006666000060600000666600 +28D8:00060600000606000000000000666600 +28D9:00666600000606000000000000666600 +28DA:00060600006666000000000000666600 +28DB:00666600006666000000000000666600 +28DC:00060600000606000060600000666600 +28DD:00666600000606000060600000666600 +28DE:00060600006666000060600000666600 +28DF:00666600006666000060600000666600 +28E0:00000000000000000006060000666600 +28E1:00606000000000000006060000666600 +28E2:00000000006060000006060000666600 +28E3:00606000006060000006060000666600 +28E4:00000000000000000066660000666600 +28E5:00606000000000000066660000666600 +28E6:00000000006060000066660000666600 +28E7:00606000006060000066660000666600 +28E8:00060600000000000006060000666600 +28E9:00666600000000000006060000666600 +28EA:00060600006060000006060000666600 +28EB:00666600006060000006060000666600 +28EC:00060600000000000066660000666600 +28ED:00666600000000000066660000666600 +28EE:00060600006060000066660000666600 +28EF:00666600006060000066660000666600 +28F0:00000000000606000006060000666600 +28F1:00606000000606000006060000666600 +28F2:00000000006666000006060000666600 +28F3:00606000006666000006060000666600 +28F4:00000000000606000066660000666600 +28F5:00606000000606000066660000666600 +28F6:00000000006666000066660000666600 +28F7:00606000006666000066660000666600 +28F8:00060600000606000006060000666600 +28F9:00666600000606000006060000666600 +28FA:00060600006666000006060000666600 +28FB:00666600006666000006060000666600 +28FC:00060600000606000066660000666600 +28FD:00666600000606000066660000666600 +28FE:00060600006666000066660000666600 +28FF:00666600006666000066660000666600 +2E2C:0000000000C6C6000000C6C600000000 +E0A0:C0C0CCDEFFCCCCCC983060C0C0C0C0C0 +E0A1:00C0C0C0C0C0FC00333B3F3733330000 +E0A2:003C66666666FFFFE7C3E7FFFFFF0000 +E0B0:80C0E0F0F8FCFEFFFFFEFCF8F0E0C080 +E0B1:80C06030180C060303060C183060C080 +E0B2:0103070F1F3F7FFFFF7F3F1F0F070301 +E0B3:0103060C183060C0C06030180C060301 +F6BE:00000000000E06060606060666663C00 +FFFD:0000FEC6C6C6C6C6C6C6C6FE00000000 diff --git a/EFI/OC/Resources/Image/Acidanthera/Chardonnay/FirmwareSettings.icns b/EFI/OC/Resources/Image/Acidanthera/Chardonnay/FirmwareSettings.icns new file mode 100644 index 0000000..179244e Binary files /dev/null and b/EFI/OC/Resources/Image/Acidanthera/Chardonnay/FirmwareSettings.icns differ diff --git a/EFI/OC/Resources/Image/Acidanthera/GoldenGate/FirmwareSettings.icns b/EFI/OC/Resources/Image/Acidanthera/GoldenGate/FirmwareSettings.icns new file mode 100644 index 0000000..54b49c9 Binary files /dev/null and b/EFI/OC/Resources/Image/Acidanthera/GoldenGate/FirmwareSettings.icns differ diff --git a/EFI/OC/Resources/Image/Acidanthera/Syrah/FirmwareSettings.icns b/EFI/OC/Resources/Image/Acidanthera/Syrah/FirmwareSettings.icns new file mode 100644 index 0000000..4475304 Binary files /dev/null and b/EFI/OC/Resources/Image/Acidanthera/Syrah/FirmwareSettings.icns differ diff --git a/EFI/OC/Resources/Label/FirmwareSettings.l2x b/EFI/OC/Resources/Label/FirmwareSettings.l2x new file mode 100644 index 0000000..743de65 Binary files /dev/null and b/EFI/OC/Resources/Label/FirmwareSettings.l2x differ diff --git a/EFI/OC/Resources/Label/FirmwareSettings.lbl b/EFI/OC/Resources/Label/FirmwareSettings.lbl new file mode 100644 index 0000000..9a64406 Binary files /dev/null and b/EFI/OC/Resources/Label/FirmwareSettings.lbl differ diff --git a/EFI/OC/config.plist b/EFI/OC/config.plist index 1f7ab3d..967843c 100644 --- a/EFI/OC/config.plist +++ b/EFI/OC/config.plist @@ -2,7 +2,7 @@ - #OC-0.9.9-REL-Z390M-GAMING + #OC-1.0.0-REL-Z390M-GAMING #iMacPro1,1 I7 9700F RX 570 diff --git a/README.md b/README.md index 2706ce6..b868a71 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # *EFI OC Z390M GAMING macOS Ventura / Sonoma* - - +[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Gilberto-Mascena/Z390M_GAMING) +[![GitHub stars](https://img.shields.io/github/stars/Gilberto-Mascena/Z390M_GAMING)](https://GitHub.com/Gilberto-Mascena/Z390M_GAMING) +[![GitHub issues](https://img.shields.io/github/issues/Gilberto-Mascena/Z390M_GAMING)](https://GitHub.com/Gilberto-Mascena/Z390M_GAMING) ![tag](https://img.shields.io/github/v/release/Gilberto-Mascena/Z390M_GAMING?include_prereleases) ![release](https://img.shields.io/github/release-date/Gilberto-Mascena/Z390M_GAMING) ![size](https://img.shields.io/github/repo-size/Gilberto-Mascena/Z390M_GAMING) @@ -64,11 +65,16 @@ _**Meu Setup**_ ## *Captura de telas* +## *Sobre este mac* ![Sobre Ventura](./Imagens/about_Ventura.png) ![Sobre Sonoma](./Imagens/about_Sonoma.png) +## *Hackintool periféricos* ![Hackintool_Peripherals](./Imagens/Peripherals.png) +## *Hackintool PCIe* ![Hackintool_PCIe](./Imagens/PCIe.png) +## *Hackintool mapeamento de portas USB* ![USB_Ports](./Imagens/USB_Ports.png) +## *Hackintool kexts* ![Hackintool_kexts](./Imagens/kexts.png) ## diff --git a/changelog.md b/changelog.md index 737df86..53090de 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,5 @@ _**Mudanças nesta Versão**_ - Mudanças nesta release: - - _Atualizado OC para 0.9.9_ + - _Atualizado OC para 1.0.0_ \ No newline at end of file diff --git a/macrecovery/README.md b/macrecovery/README.md new file mode 100644 index 0000000..4cf122b --- /dev/null +++ b/macrecovery/README.md @@ -0,0 +1,8 @@ +## macrecovery + +macrecovery is a tool that helps to automate recovery interaction. It can be used to download diagnostics and recovery as well as analyse MLB. + +Requires python3 to run. Run with `-h` argument to see all available arguments. + +To create a disk image for a virtual machine installation use `build-image.sh`. + diff --git a/macrecovery/boards.json b/macrecovery/boards.json new file mode 100644 index 0000000..c5596f1 --- /dev/null +++ b/macrecovery/boards.json @@ -0,0 +1,79 @@ +{ + "Mac-EE2EBD4B90B839A8": "13.6.6", + "Mac-BE0E8AC46FE800CC": "11.7.10", + "Mac-9AE82516C7C6B903": "12.7.4", + "Mac-942452F5819B1C1B": "10.13.6", + "Mac-942C5DF58193131B": "10.13.6", + "Mac-C08A6BB70A942AC2": "10.13.6", + "Mac-742912EFDBEE19B3": "10.13.6", + "Mac-66F35F19FE2A0D05": "10.15.7", + "Mac-2E6FAB96566FE58C": "10.15.7", + "Mac-35C1E88140C3E6CF": "11.7.10", + "Mac-7DF21CB3ED6977E5": "11.7.10", + "Mac-9F18E312C5C2BF0B": "12.7.4", + "Mac-937CB26E2E02BB01": "12.7.4", + "Mac-827FAC58A8FDFA22": "latest", + "Mac-226CB3C6A851A671": "latest", + "Mac-0CFF9C7C2B63DF8D": "latest", + "Mac-C3EC7CD22292981F": "10.15.7", + "Mac-AFD8A9D944EA4843": "10.15.7", + "Mac-189A3D4F975D5FFC": "11.7.10", + "Mac-3CBD00234E554E41": "11.7.10", + "Mac-2BD1B31983FE1663": "11.7.10", + "Mac-06F11FD93F0323C5": "12.7.4", + "Mac-06F11F11946D27C5": "12.7.4", + "Mac-E43C1C25D4880AD6": "12.7.4", + "Mac-473D31EABEB93F9B": "12.7.4", + "Mac-66E35819EE2D0D05": "12.7.4", + "Mac-A5C67F76ED83108C": "12.7.4", + "Mac-B4831CEBD52A0C4C": "13.6.6", + "Mac-CAD6701F7CEA0921": "13.6.6", + "Mac-551B86E5744E2388": "13.6.6", + "Mac-937A206F2EE63C01": "latest", + "Mac-827FB448E656EC26": "latest", + "Mac-1E7E29AD0135F9BC": "latest", + "Mac-53FDB3D8DB8CA971": "latest", + "Mac-E1008331FDC96864": "latest", + "Mac-5F9802EFE386AA28": "latest", + "Mac-E7203C0F68AA0004": "latest", + "Mac-A61BADE1FDAD7B05": "latest", + "Mac-F22589C8": "10.13.6", + "Mac-94245B3640C91C81": "10.13.6", + "Mac-94245A3940C91C80": "10.13.6", + "Mac-942459F5819B171B": "10.13.6", + "Mac-4B7AC7E43945597E": "10.15.7", + "Mac-6F01561E16C75D06": "10.15.7", + "Mac-F60DEB81FF30ACF6": "12.7.4", + "Mac-27AD2F918AE68F61": "latest", + "Mac-F2208EC8": "10.13.6", + "Mac-8ED6AF5B48C039E1": "10.13.6", + "Mac-4BC72D62AD45599E": "10.13.6", + "Mac-7BA5B2794B2CDB12": "10.13.6", + "Mac-031AEE4D24BFF0B1": "10.15.7", + "Mac-F65AE981FFA204ED": "10.15.7", + "Mac-35C5E08120C7EEAF": "12.7.4", + "Mac-7BA5B2DFE22DDD8C": "latest", + "Mac-942B5BF58194151B": "10.13.6", + "Mac-942B59F58194171B": "10.13.6", + "Mac-00BE6ED71E35EB86": "10.15.7", + "Mac-FC02E91DDD3FA6A4": "10.15.7", + "Mac-7DF2A3B5E5D671ED": "10.15.7", + "Mac-031B6874CF7F642A": "10.15.7", + "Mac-27ADBB7B4CEE8E61": "10.15.7", + "Mac-77EB7D7DAF985301": "10.15.7", + "Mac-81E3E92DD6088272": "11.7.10", + "Mac-42FD25EABCABB274": "11.7.10", + "Mac-A369DDC4E67F1C45": "12.7.4", + "Mac-FFE5EF870D7BA81A": "12.7.4", + "Mac-DB15BD556843C820": "12.7.4", + "Mac-65CE76090165799A": "12.7.4", + "Mac-B809C3757DA9BB8D": "12.7.4", + "Mac-4B682C642B45593E": "13.6.6", + "Mac-77F17D7DA9285301": "13.6.6", + "Mac-BE088AF8C5EB4FA2": "13.6.6", + "Mac-AA95B1DDAB278B95": "latest", + "Mac-63001698E7A34814": "latest", + "Mac-CFF7D910A743CAAF": "latest", + "Mac-AF89B6D9451A490B": "latest", + "Mac-7BA5B2D9E42DDD94": "latest" +} \ No newline at end of file diff --git a/macrecovery/build-image.sh b/macrecovery/build-image.sh new file mode 100644 index 0000000..8dc7107 --- /dev/null +++ b/macrecovery/build-image.sh @@ -0,0 +1,18 @@ +#!/bin/bash -e + +rm -rf Recovery.RO.dmg Recovery.RO.raw Recovery.dmg.sparseimage +hdiutil create -size 800m -layout "UNIVERSAL HD" -type SPARSE -o Recovery.dmg +newDevice=$(hdiutil attach -nomount Recovery.dmg.sparseimage | head -n 1 | awk '{print $1}') +echo newdevice "$newDevice" +diskutil partitionDisk "${newDevice}" 1 MBR fat32 RECOVERY R +N=$(echo "$newDevice" | tr -dc '0-9') +diskutil mount disk"${N}"s1 +MOUNT="$(diskutil info disk"${N}"s1 | sed -n 's/.*Mount Point: *//p')" +mkdir -p "$MOUNT/com.apple.recovery.boot" +cp ./*.dmg ./*.chunklist "$MOUNT/com.apple.recovery.boot/" +diskutil umount disk"${N}"s1 +hdiutil detach "$newDevice" +hdiutil convert -format UDZO Recovery.dmg.sparseimage -o Recovery.RO.dmg +rm Recovery.dmg.sparseimage +qemu-img convert -f dmg -O raw Recovery.RO.dmg Recovery.raw +rm Recovery.RO.dmg diff --git a/macrecovery/macrecovery.py b/macrecovery/macrecovery.py new file mode 100644 index 0000000..137d02f --- /dev/null +++ b/macrecovery/macrecovery.py @@ -0,0 +1,502 @@ +#!/usr/bin/env python3 + +""" +Gather recovery information for Macs. + +Copyright (c) 2019, vit9696 +""" + +import argparse +import binascii +import hashlib +import json +import linecache +import os +import random +import struct +import sys + +try: + from urllib.request import Request, HTTPError, urlopen + from urllib.parse import urlparse +except ImportError: + from urllib2 import Request, HTTPError, urlopen + from urlparse import urlparse + +SELF_DIR = os.path.dirname(os.path.realpath(__file__)) + +RECENT_MAC = 'Mac-7BA5B2D9E42DDD94' +MLB_ZERO = '00000000000000000' +MLB_VALID = 'C02749200YGJ803AX' +MLB_PRODUCT = '00000000000J80300' + +TYPE_SID = 16 +TYPE_K = 64 +TYPE_FG = 64 + +INFO_PRODUCT = 'AP' +INFO_IMAGE_LINK = 'AU' +INFO_IMAGE_HASH = 'AH' +INFO_IMAGE_SESS = 'AT' +INFO_SIGN_LINK = 'CU' +INFO_SIGN_HASH = 'CH' +INFO_SIGN_SESS = 'CT' +INFO_REQURED = [INFO_PRODUCT, INFO_IMAGE_LINK, INFO_IMAGE_HASH, INFO_IMAGE_SESS, INFO_SIGN_LINK, INFO_SIGN_HASH, INFO_SIGN_SESS] + + +def run_query(url, headers, post=None, raw=False): + if post is not None: + data = '\n'.join([entry + '=' + post[entry] for entry in post]) + if sys.version_info[0] >= 3: + data = data.encode('utf-8') + else: + data = None + req = Request(url=url, headers=headers, data=data) + try: + response = urlopen(req) + if raw: + return response + return dict(response.info()), response.read() + except HTTPError as e: + print(f'ERROR: "{e}" when connecting to {url}') + sys.exit(1) + + +def generate_id(id_type, id_value=None): + valid_chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'] + return ''.join(random.choice(valid_chars) for i in range(id_type)) if not id_value else id_value + + +def product_mlb(mlb): + return '00000000000' + mlb[11] + mlb[12] + mlb[13] + mlb[14] + '00' + + +def mlb_from_eeee(eeee): + if len(eeee) != 4: + print('ERROR: Invalid EEEE code length!') + sys.exit(1) + + return f'00000000000{eeee}00' + + +def int_from_unsigned_bytes(byte_list, byteorder): + if byteorder == 'little': + byte_list = byte_list[::-1] + encoded = binascii.hexlify(byte_list) + return int(encoded, 16) + + +# zhangyoufu https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7#gistcomment-3061078 2021-10-08 +Apple_EFI_ROM_public_key_1 = 0xC3E748CAD9CD384329E10E25A91E43E1A762FF529ADE578C935BDDF9B13F2179D4855E6FC89E9E29CA12517D17DFA1EDCE0BEBF0EA7B461FFE61D94E2BDF72C196F89ACD3536B644064014DAE25A15DB6BB0852ECBD120916318D1CCDEA3C84C92ED743FC176D0BACA920D3FCF3158AFF731F88CE0623182A8ED67E650515F75745909F07D415F55FC15A35654D118C55A462D37A3ACDA08612F3F3F6571761EFCCBCC299AEE99B3A4FD6212CCFFF5EF37A2C334E871191F7E1C31960E010A54E86FA3F62E6D6905E1CD57732410A3EB0C6B4DEFDABE9F59BF1618758C751CD56CEF851D1C0EAA1C558E37AC108DA9089863D20E2E7E4BF475EC66FE6B3EFDCF + +ChunkListHeader = struct.Struct('<4sIBBBxQQQ') +assert ChunkListHeader.size == 0x24 + +Chunk = struct.Struct(' 0 + assert chunk_offset == 0x24 + assert signature_offset == chunk_offset + Chunk.size * chunk_count + for _ in range(chunk_count): + data = f.read(Chunk.size) + hash_ctx.update(data) + chunk_size, chunk_sha256 = Chunk.unpack(data) + yield chunk_size, chunk_sha256 + digest = hash_ctx.digest() + if signature_method == 1: + data = f.read(256) + assert len(data) == 256 + signature = int_from_unsigned_bytes(data, 'little') + plaintext = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff003031300d0609608648016503040201050004200000000000000000000000000000000000000000000000000000000000000000 | int_from_unsigned_bytes(digest, 'big') + assert pow(signature, 0x10001, Apple_EFI_ROM_public_key_1) == plaintext + elif signature_method == 2: + data = f.read(32) + assert data == digest + raise RuntimeError('Chunklist missing digital signature') + else: + raise NotImplementedError + assert f.read(1) == b'' + + +def get_session(args): + headers = { + 'Host': 'osrecovery.apple.com', + 'Connection': 'close', + 'User-Agent': 'InternetRecovery/1.0', + } + + headers, _ = run_query('http://osrecovery.apple.com/', headers) + + if args.verbose: + print('Session headers:') + for header in headers: + print(f'{header}: {headers[header]}') + + for header in headers: + if header.lower() == 'set-cookie': + cookies = headers[header].split('; ') + for cookie in cookies: + return cookie if cookie.startswith('session=') else ... + + raise RuntimeError('No session in headers ' + str(headers)) + + +def get_image_info(session, bid, mlb=MLB_ZERO, diag=False, os_type='default', cid=None): + headers = { + 'Host': 'osrecovery.apple.com', + 'Connection': 'close', + 'User-Agent': 'InternetRecovery/1.0', + 'Cookie': session, + 'Content-Type': 'text/plain', + } + + post = { + 'cid': generate_id(TYPE_SID, cid), + 'sn': mlb, + 'bid': bid, + 'k': generate_id(TYPE_K), + 'fg': generate_id(TYPE_FG) + } + + if diag: + url = 'http://osrecovery.apple.com/InstallationPayload/Diagnostics' + else: + url = 'http://osrecovery.apple.com/InstallationPayload/RecoveryImage' + post['os'] = os_type + + headers, output = run_query(url, headers, post) + + output = output.decode('utf-8') + info = {} + for line in output.split('\n'): + try: + key, value = line.split(': ') + info[key] = value + except Exception: + continue + + for k in INFO_REQURED: + if k not in info: + raise RuntimeError(f'Missing key {k}') + + return info + + +def save_image(url, sess, filename='', directory=''): + purl = urlparse(url) + headers = { + 'Host': purl.hostname, + 'Connection': 'close', + 'User-Agent': 'InternetRecovery/1.0', + 'Cookie': '='.join(['AssetToken', sess]) + } + + if not os.path.exists(directory): + os.mkdir(directory) + + if filename == '': + filename = os.path.basename(purl.path) + if filename.find('/') >= 0 or filename == '': + raise RuntimeError('Invalid save path ' + filename) + + print(f'Saving {url} to {directory}/{filename}...') + + with open(os.path.join(directory, filename), 'wb') as fh: + response = run_query(url, headers, raw=True) + size = 0 + while True: + chunk = response.read(2**20) + if not chunk: + break + fh.write(chunk) + size += len(chunk) + print(f'\r{size / (2**20)} MBs downloaded...', end='') + sys.stdout.flush() + print('\rDownload complete!\t\t\t\t\t') + + return os.path.join(directory, os.path.basename(filename)) + + +def verify_image(dmgpath, cnkpath): + print('Verifying image with chunklist...') + + with open(dmgpath, 'rb') as dmgf: + cnkcount = 0 + for cnksize, cnkhash in verify_chunklist(cnkpath): + cnkcount += 1 + print(f'\rChunk {cnkcount} ({cnksize} bytes)', end='') + sys.stdout.flush() + cnk = dmgf.read(cnksize) + if len(cnk) != cnksize: + raise RuntimeError(f'Invalid chunk {cnkcount} size: expected {cnksize}, read {len(cnk)}') + if hashlib.sha256(cnk).digest() != cnkhash: + raise RuntimeError(f'Invalid chunk {cnkcount}: hash mismatch') + if dmgf.read(1) != b'': + raise RuntimeError('Invalid image: larger than chunklist') + print('\rImage verification complete!\t\t\t\t\t') + + +def action_download(args): + """ + Reference information for queries: + + Recovery latest: + cid=3076CE439155BA14 + sn=... + bid=Mac-E43C1C25D4880AD6 + k=4BE523BB136EB12B1758C70DB43BDD485EBCB6A457854245F9E9FF0587FB790C + os=latest + fg=B2E6AA07DB9088BE5BDB38DB2EA824FDDFB6C3AC5272203B32D89F9D8E3528DC + + Recovery default: + cid=4A35CB95FF396EE7 + sn=... + bid=Mac-E43C1C25D4880AD6 + k=0A385E6FFC3DDD990A8A1F4EC8B98C92CA5E19C9FF1DD26508C54936D8523121 + os=default + fg=B2E6AA07DB9088BE5BDB38DB2EA824FDDFB6C3AC5272203B32D89F9D8E3528DC + + Diagnostics: + cid=050C59B51497CEC8 + sn=... + bid=Mac-E43C1C25D4880AD6 + k=37D42A8282FE04A12A7D946304F403E56A2155B9622B385F3EB959A2FBAB8C93 + fg=B2E6AA07DB9088BE5BDB38DB2EA824FDDFB6C3AC5272203B32D89F9D8E3528DC + """ + + session = get_session(args) + info = get_image_info(session, bid=args.board_id, mlb=args.mlb, diag=args.diagnostics, os_type=args.os_type) + if args.verbose: + print(info) + print(f'Downloading {info[INFO_PRODUCT]}...') + cnkname = '' if args.basename == '' else args.basename + '.chunklist' + cnkpath = save_image(info[INFO_SIGN_LINK], info[INFO_SIGN_SESS], cnkname, args.outdir) + dmgname = '' if args.basename == '' else args.basename + '.dmg' + dmgpath = save_image(info[INFO_IMAGE_LINK], info[INFO_IMAGE_SESS], dmgname, args.outdir) + try: + verify_image(dmgpath, cnkpath) + return 0 + except Exception as err: + if isinstance(err, AssertionError) and str(err) == '': + try: + tb = sys.exc_info()[2] + while tb.tb_next: + tb = tb.tb_next + err = linecache.getline(tb.tb_frame.f_code.co_filename, tb.tb_lineno, tb.tb_frame.f_globals).strip() + except Exception: + err = "Invalid chunklist" + print(f'\rImage verification failed. ({err})') + return 1 + + +def action_selfcheck(args): + """ + Sanity check server logic for recovery: + + if not valid(bid): + return error() + ppp = get_ppp(sn) + if not valid(ppp): + return latest_recovery(bid = bid) # Returns newest for bid. + if valid(sn): + if os == 'default': + return default_recovery(sn = sn, ppp = ppp) # Returns oldest for sn. + else: + return latest_recovery(sn = sn, ppp = ppp) # Returns newest for sn. + return default_recovery(ppp = ppp) # Returns oldest. + """ + + session = get_session(args) + valid_default = get_image_info(session, bid=RECENT_MAC, mlb=MLB_VALID, diag=False, os_type='default') + valid_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_VALID, diag=False, os_type='latest') + product_default = get_image_info(session, bid=RECENT_MAC, mlb=MLB_PRODUCT, diag=False, os_type='default') + product_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_PRODUCT, diag=False, os_type='latest') + generic_default = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO, diag=False, os_type='default') + generic_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO, diag=False, os_type='latest') + + if args.verbose: + print(valid_default) + print(valid_latest) + print(product_default) + print(product_latest) + print(generic_default) + print(generic_latest) + + if valid_default[INFO_PRODUCT] == valid_latest[INFO_PRODUCT]: + # Valid MLB must give different default and latest if this is not a too new product. + print(f'ERROR: Cannot determine any previous product, got {valid_default[INFO_PRODUCT]}') + return 1 + + if product_default[INFO_PRODUCT] != product_latest[INFO_PRODUCT]: + # Product-only MLB must give the same value for default and latest. + print(f'ERROR: Latest and default do not match for product MLB, got {product_default[INFO_PRODUCT]} and {product_latest[INFO_PRODUCT]}') + return 1 + + if generic_default[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]: + # Zero MLB always give the same value for default and latest. + print(f'ERROR: Generic MLB gives different product, got {generic_default[INFO_PRODUCT]} and {generic_latest[INFO_PRODUCT]}') + return 1 + + if valid_latest[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]: + # Valid MLB must always equal generic MLB. + print(f'ERROR: Cannot determine unified latest product, got {valid_latest[INFO_PRODUCT]} and {generic_latest[INFO_PRODUCT]}') + return 1 + + if product_default[INFO_PRODUCT] != valid_default[INFO_PRODUCT]: + # Product-only MLB can give the same value with valid default MLB. + # This is not an error for all models, but for our chosen code it is. + print(f'ERROR: Valid and product MLB give mismatch, got {product_default[INFO_PRODUCT]} and {valid_default[INFO_PRODUCT]}') + return 1 + + print('SUCCESS: Found no discrepancies with MLB validation algorithm!') + return 0 + + +def action_verify(args): + """ + Try to verify MLB serial number. + """ + session = get_session(args) + generic_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO, diag=False, os_type='latest') + uvalid_default = get_image_info(session, bid=args.board_id, mlb=args.mlb, diag=False, os_type='default') + uvalid_latest = get_image_info(session, bid=args.board_id, mlb=args.mlb, diag=False, os_type='latest') + uproduct_default = get_image_info(session, bid=args.board_id, mlb=product_mlb(args.mlb), diag=False, os_type='default') + + if args.verbose: + print(generic_latest) + print(uvalid_default) + print(uvalid_latest) + print(uproduct_default) + + # Verify our MLB number. + if uvalid_default[INFO_PRODUCT] != uvalid_latest[INFO_PRODUCT]: + print(f'SUCCESS: {args.mlb} MLB looks valid and supported!' if uvalid_latest[INFO_PRODUCT] == generic_latest[INFO_PRODUCT] else f'SUCCESS: {args.mlb} MLB looks valid, but probably unsupported!') + return 0 + + print('UNKNOWN: Run selfcheck, check your board-id, or try again later!') + + # Here we have matching default and latest products. This can only be true for very + # new models. These models get either latest or special builds. + if uvalid_default[INFO_PRODUCT] == generic_latest[INFO_PRODUCT]: + print(f'UNKNOWN: {args.mlb} MLB can be valid if very new!') + return 0 + if uproduct_default[INFO_PRODUCT] != uvalid_default[INFO_PRODUCT]: + print(f'UNKNOWN: {args.mlb} MLB looks invalid, other models use product {uproduct_default[INFO_PRODUCT]} instead of {uvalid_default[INFO_PRODUCT]}!') + return 0 + print(f'UNKNOWN: {args.mlb} MLB can be valid if very new and using special builds!') + return 0 + + +def action_guess(args): + """ + Attempt to guess which model does this MLB belong. + """ + + mlb = args.mlb + anon = mlb.startswith('000') + + with open(args.board_db, 'r', encoding='utf-8') as fh: + db = json.load(fh) + + supported = {} + + session = get_session(args) + + generic_latest = get_image_info(session, bid=RECENT_MAC, mlb=MLB_ZERO, diag=False, os_type='latest') + + for model in db: + try: + if anon: + # For anonymous lookup check when given model does not match latest. + model_latest = get_image_info(session, bid=model, mlb=MLB_ZERO, diag=False, os_type='latest') + + if model_latest[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]: + if db[model] == 'current': + print(f'WARN: Skipped {model} due to using latest product {model_latest[INFO_PRODUCT]} instead of {generic_latest[INFO_PRODUCT]}') + continue + + user_default = get_image_info(session, bid=model, mlb=mlb, diag=False, os_type='default') + + if user_default[INFO_PRODUCT] != generic_latest[INFO_PRODUCT]: + supported[model] = [db[model], user_default[INFO_PRODUCT], generic_latest[INFO_PRODUCT]] + else: + # For normal lookup check when given model has mismatching normal and latest. + user_latest = get_image_info(session, bid=model, mlb=mlb, diag=False, os_type='latest') + + user_default = get_image_info(session, bid=model, mlb=mlb, diag=False, os_type='default') + + if user_latest[INFO_PRODUCT] != user_default[INFO_PRODUCT]: + supported[model] = [db[model], user_default[INFO_PRODUCT], user_latest[INFO_PRODUCT]] + + except Exception as e: + print(f'WARN: Failed to check {model}, exception: {e}') + + if len(supported) > 0: + print(f'SUCCESS: MLB {mlb} looks supported for:') + for model in supported.items(): + print(f'- {model}, up to {supported[model][0]}, default: {supported[model][1]}, latest: {supported[model][2]}') + return 0 + + print(f'UNKNOWN: Failed to determine supported models for MLB {mlb}!') + return None + + +def main(): + parser = argparse.ArgumentParser(description='Gather recovery information for Macs') + parser.add_argument('action', choices=['download', 'selfcheck', 'verify', 'guess'], + help='Action to perform: "download" - performs recovery downloading,' + ' "selfcheck" checks whether MLB serial validation is possible, "verify" performs' + ' MLB serial verification, "guess" tries to find suitable mac model for MLB.') + parser.add_argument('-o', '--outdir', type=str, default='com.apple.recovery.boot', + help='customise output directory for downloading, defaults to com.apple.recovery.boot') + parser.add_argument('-n', '--basename', type=str, default='', + help='customise base name for downloading, defaults to remote name') + parser.add_argument('-b', '--board-id', type=str, default=RECENT_MAC, + help=f'use specified board identifier for downloading, defaults to {RECENT_MAC}') + parser.add_argument('-m', '--mlb', type=str, default=MLB_ZERO, + help=f'use specified logic board serial for downloading, defaults to {MLB_ZERO}') + parser.add_argument('-e', '--code', type=str, default='', + help='generate product logic board serial with specified product EEEE code') + parser.add_argument('-os', '--os-type', type=str, default='default', choices=['default', 'latest'], + help=f'use specified os type, defaults to default {MLB_ZERO}') + parser.add_argument('-diag', '--diagnostics', action='store_true', help='download diagnostics image') + parser.add_argument('-v', '--verbose', action='store_true', help='print debug information') + parser.add_argument('-db', '--board-db', type=str, default=os.path.join(SELF_DIR, 'boards.json'), + help='use custom board list for checking, defaults to boards.json') + + args = parser.parse_args() + + if args.code != '': + args.mlb = mlb_from_eeee(args.code) + + if len(args.mlb) != 17: + print('ERROR: Cannot use MLBs in non 17 character format!') + sys.exit(1) + + if args.action == 'download': + return action_download(args) + if args.action == 'selfcheck': + return action_selfcheck(args) + if args.action == 'verify': + return action_verify(args) + if args.action == 'guess': + return action_guess(args) + + assert False + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/macrecovery/recovery_urls.txt b/macrecovery/recovery_urls.txt new file mode 100644 index 0000000..01c7ecf --- /dev/null +++ b/macrecovery/recovery_urls.txt @@ -0,0 +1,51 @@ +Lion +macrecovery.py -b Mac-2E6FAB96566FE58C -m 00000000000F25Y00 download +macrecovery.py -b Mac-C3EC7CD22292981F -m 00000000000F0HM00 download + +Mountain Lion: +macrecovery.py -b Mac-7DF2A3B5E5D671ED -m 00000000000F65100 download + +Mavericks +macrecovery.py -b Mac-F60DEB81FF30ACF6 -m 00000000000FNN100 download + +Yosemite: +macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000GDVW00 download + +El Capitan +macrecovery.py -b Mac-FFE5EF870D7BA81A -m 00000000000GQRX00 download + +Sierra +macrecovery.py -b Mac-77F17D7DA9285301 -m 00000000000J0DX00 download + +High Sierra +macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000J80300 download +macrecovery.py -b Mac-BE088AF8C5EB4FA2 -m 00000000000J80300 download + +Mojave +macrecovery.py -b Mac-7BA5B2DFE22DDD8C -m 00000000000KXPG00 download + +Catalina +macrecovery.py -b Mac-CFF7D910A743CAAF -m 00000000000PHCD00 download +macrecovery.py -b Mac-00BE6ED71E35EB86 -m 00000000000000000 download + +Big Sur +macrecovery.py -b Mac-2BD1B31983FE1663 -m 00000000000000000 download + +Monterey +macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000000000 download + +Ventura +macrecovery.py -b Mac-B4831CEBD52A0C4C -m 00000000000000000 download + +Diagnostics +./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000000000 -diag +./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000JG3600 -diag +./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -diag + +Default version +./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000JG3600 (oldest) +./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m -os default (newer) + +Latest version +macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m 00000000000000000 -os latest download +./macrecovery.py -b Mac-7BA5B2D9E42DDD94 -m -os latest