acpi: add ssdt for pci hotplug
authorMichael S. Tsirkin <mst@redhat.com>
Sun, 20 Nov 2011 17:56:59 +0000 (19:56 +0200)
committerKevin O'Connor <kevin@koconnor.net>
Wed, 23 Nov 2011 02:52:02 +0000 (21:52 -0500)
The point of this split is to make runtime patching easier.

DSDT is required to supply: PCI0 - PCI root device object;
PCEJ - Method object to eject a PCI slot.
Additionally, SSDT is required to supply PCNT - Method object to notify
OSPM of a PCI slot event.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Makefile
src/acpi-dsdt.dsl
src/acpi-dsdt.hex
src/acpi.c
src/ssdt-pcihp.dsl [new file with mode: 0644]
src/ssdt-pcihp.hex [new file with mode: 0644]

index 540f1ea499f29dd3415681cf6a0ddb63ef354f8a..ef8e15d11a3ece249b570864eaf2b7c4467ffb21 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -200,7 +200,7 @@ src/%.hex: src/%.dsl ./tools/acpi_extract_preprocess.py ./tools/acpi_extract.py
        $(Q)./tools/acpi_extract.py $(OUT)$*.lst > $(OUT)$*.off
        $(Q)cat $(OUT)$*.off > $@
 
-$(OUT)ccode32flat.o: src/acpi-dsdt.hex src/ssdt-proc.hex
+$(OUT)ccode32flat.o: src/acpi-dsdt.hex src/ssdt-proc.hex src/ssdt-pcihp.hex
 
 ####### Kconfig rules
 export HOSTCC             := $(CC)
index b9b06f2ab64ff53e15706f85f03104b8e2553738..f97d463e6a94c3073cc2fac7bfd458b75f476024 100644 (file)
@@ -474,90 +474,15 @@ DefinitionBlock (
             Return (0x0)
         }
 
-#define gen_pci_device(slot)                                    \
-        Device(SL##slot) {                                      \
-            Name (_ADR, 0x##slot##0000)                         \
-            Method (_RMV) { Return (PRMV(0x##slot)) }           \
-            Name (_SUN, 0x##slot)                               \
-        }
-
-        /* VGA (slot 1) and ISA bus (slot 2) defined above */
-        gen_pci_device(03)
-        gen_pci_device(04)
-        gen_pci_device(05)
-        gen_pci_device(06)
-        gen_pci_device(07)
-        gen_pci_device(08)
-        gen_pci_device(09)
-        gen_pci_device(0a)
-        gen_pci_device(0b)
-        gen_pci_device(0c)
-        gen_pci_device(0d)
-        gen_pci_device(0e)
-        gen_pci_device(0f)
-        gen_pci_device(10)
-        gen_pci_device(11)
-        gen_pci_device(12)
-        gen_pci_device(13)
-        gen_pci_device(14)
-        gen_pci_device(15)
-        gen_pci_device(16)
-        gen_pci_device(17)
-        gen_pci_device(18)
-        gen_pci_device(19)
-        gen_pci_device(1a)
-        gen_pci_device(1b)
-        gen_pci_device(1c)
-        gen_pci_device(1d)
-        gen_pci_device(1e)
-        gen_pci_device(1f)
-
-        /* Methods called by bulk generated hotplug devices below */
+        /* Methods called by hotplug devices */
         Method (PCEJ, 1, NotSerialized) {
             // _EJ0 method - eject callback
             Store(ShiftLeft(1, Arg0), B0EJ)
             Return (0x0)
         }
 
-        /* Bulk generated PCI hotplug devices */
-#define hotplug_slot(slot)                              \
-        Device (S##slot) {                              \
-           Name (_ADR, 0x##slot##0000)                  \
-           Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
-           Name (_SUN, 0x##slot)                        \
-        }
-
-        hotplug_slot(01)
-        hotplug_slot(02)
-        hotplug_slot(03)
-        hotplug_slot(04)
-        hotplug_slot(05)
-        hotplug_slot(06)
-        hotplug_slot(07)
-        hotplug_slot(08)
-        hotplug_slot(09)
-        hotplug_slot(0a)
-        hotplug_slot(0b)
-        hotplug_slot(0c)
-        hotplug_slot(0d)
-        hotplug_slot(0e)
-        hotplug_slot(0f)
-        hotplug_slot(10)
-        hotplug_slot(11)
-        hotplug_slot(12)
-        hotplug_slot(13)
-        hotplug_slot(14)
-        hotplug_slot(15)
-        hotplug_slot(16)
-        hotplug_slot(17)
-        hotplug_slot(18)
-        hotplug_slot(19)
-        hotplug_slot(1a)
-        hotplug_slot(1b)
-        hotplug_slot(1c)
-        hotplug_slot(1d)
-        hotplug_slot(1e)
-        hotplug_slot(1f)
+       /* Hotplug notification method supplied by SSDT */
+       External (\_SB.PCI0.PCNT, MethodObj)
 
         /* PCI hotplug notify method */
         Method(PCNF, 0) {
@@ -575,42 +500,6 @@ DefinitionBlock (
             Return(One)
         }
 
-#define gen_pci_hotplug(slot)   \
-            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
-
-        Method(PCNT, 2) {
-            gen_pci_hotplug(01)
-            gen_pci_hotplug(02)
-            gen_pci_hotplug(03)
-            gen_pci_hotplug(04)
-            gen_pci_hotplug(05)
-            gen_pci_hotplug(06)
-            gen_pci_hotplug(07)
-            gen_pci_hotplug(08)
-            gen_pci_hotplug(09)
-            gen_pci_hotplug(0a)
-            gen_pci_hotplug(0b)
-            gen_pci_hotplug(0c)
-            gen_pci_hotplug(0d)
-            gen_pci_hotplug(0e)
-            gen_pci_hotplug(0f)
-            gen_pci_hotplug(10)
-            gen_pci_hotplug(11)
-            gen_pci_hotplug(12)
-            gen_pci_hotplug(13)
-            gen_pci_hotplug(14)
-            gen_pci_hotplug(15)
-            gen_pci_hotplug(16)
-            gen_pci_hotplug(17)
-            gen_pci_hotplug(18)
-            gen_pci_hotplug(19)
-            gen_pci_hotplug(1a)
-            gen_pci_hotplug(1b)
-            gen_pci_hotplug(1c)
-            gen_pci_hotplug(1d)
-            gen_pci_hotplug(1e)
-            gen_pci_hotplug(1f)
-        }
     }
 
 
index cc342505f89351e1d91ecdffe09a2b072065eaab..d5986571b744916712bd7f36654e5455eb7ca7cc 100644 (file)
@@ -3,12 +3,12 @@ static unsigned char AmlCode[] = {
 0x53,
 0x44,
 0x54,
-0x72,
-0x1b,
+0x11,
+0x11,
 0x0,
 0x0,
 0x1,
-0x7,
+0x13,
 0x42,
 0x58,
 0x50,
@@ -3082,8 +3082,8 @@ static unsigned char AmlCode[] = {
 0x4a,
 0x20,
 0x10,
-0x4e,
-0xac,
+0x4d,
+0x6,
 0x2e,
 0x5f,
 0x53,
@@ -3116,2738 +3116,81 @@ static unsigned char AmlCode[] = {
 0x1,
 0xa4,
 0x0,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x33,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x3,
-0x0,
 0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
+0x11,
 0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x3,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x3,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x34,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x70,
+0x79,
+0x1,
+0x68,
 0x0,
-0x4,
+0x42,
+0x30,
+0x45,
+0x4a,
+0xa4,
 0x0,
 0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
+0x38,
 0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x4,
-0x8,
-0x5f,
-0x53,
-0x55,
+0x43,
 0x4e,
-0xa,
-0x4,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x35,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x5,
+0x46,
 0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
+0x70,
 0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
+0x60,
+0xa2,
+0x2c,
+0x95,
+0x60,
 0xa,
-0x5,
-0x8,
-0x5f,
-0x53,
+0x1f,
+0x75,
+0x60,
+0xa0,
+0x11,
+0x7b,
+0x50,
+0x43,
+0x49,
 0x55,
-0x4e,
-0xa,
-0x5,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x36,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x6,
+0x79,
+0x1,
+0x60,
 0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
 0x0,
-0xa4,
 0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x6,
-0x8,
-0x5f,
-0x53,
-0x55,
+0x43,
 0x4e,
-0xa,
-0x6,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x37,
-0x8,
-0x5f,
-0x41,
+0x54,
+0x60,
+0x1,
+0xa0,
+0x12,
+0x7b,
+0x50,
+0x43,
+0x49,
 0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x7,
+0x79,
+0x1,
+0x60,
 0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
 0x0,
-0xa4,
 0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x7,
-0x8,
-0x5f,
-0x53,
-0x55,
+0x43,
 0x4e,
+0x54,
+0x60,
 0xa,
-0x7,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x38,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x8,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
+0x3,
 0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x8,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x8,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x39,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x9,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x9,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x9,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x41,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xa,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0xa,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xa,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x42,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xb,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0xb,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xb,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x43,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xc,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0xc,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xc,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x44,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xd,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0xd,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xd,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x45,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xe,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0xe,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xe,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x30,
-0x46,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xf,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0xf,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xf,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x30,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x10,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x10,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x10,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x31,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x11,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x11,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x11,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x32,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x12,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x12,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x12,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x33,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x13,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x13,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x13,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x34,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x14,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x14,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x14,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x35,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x15,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x15,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x15,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x36,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x16,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x16,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x16,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x37,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x17,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x17,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x17,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x38,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x18,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x18,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x18,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x39,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x19,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x19,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x19,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x41,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1a,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x1a,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1a,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x42,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1b,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x1b,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1b,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x43,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1c,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x1c,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1c,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x44,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1d,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x1d,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1d,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x45,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1e,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x1e,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1e,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x4c,
-0x31,
-0x46,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1f,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x52,
-0x4d,
-0x56,
-0x0,
-0xa4,
-0x50,
-0x52,
-0x4d,
-0x56,
-0xa,
-0x1f,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1f,
-0x14,
-0x11,
-0x50,
-0x43,
-0x45,
-0x4a,
-0x1,
-0x70,
-0x79,
-0x1,
-0x68,
-0x0,
-0x42,
-0x30,
-0x45,
-0x4a,
-0xa4,
-0x0,
-0x5b,
-0x82,
-0x22,
-0x53,
-0x30,
-0x31,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1,
-0x0,
-0x14,
-0xc,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0x1,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0x1,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x32,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x2,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x2,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x2,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x33,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x3,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x3,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x3,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x34,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x4,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x4,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x4,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x35,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x5,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x5,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x5,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x36,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x6,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x6,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x6,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x37,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x7,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x7,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x7,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x38,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x8,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x8,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x8,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x39,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x9,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x9,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x9,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x41,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xa,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0xa,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xa,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x42,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xb,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0xb,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xb,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x43,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xc,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0xc,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xc,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x44,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xd,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0xd,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xd,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x45,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xe,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0xe,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xe,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x30,
-0x46,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0xf,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0xf,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0xf,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x30,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x10,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x10,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x10,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x31,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x11,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x11,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x11,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x32,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x12,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x12,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x12,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x33,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x13,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x13,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x13,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x34,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x14,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x14,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x14,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x35,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x15,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x15,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x15,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x36,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x16,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x16,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x16,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x37,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x17,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x17,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x17,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x38,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x18,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x18,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x18,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x39,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x19,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x19,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x19,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x41,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1a,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x1a,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1a,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x42,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1b,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x1b,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1b,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x43,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1c,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x1c,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1c,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x44,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1d,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x1d,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1d,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x45,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1e,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x1e,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1e,
-0x5b,
-0x82,
-0x24,
-0x53,
-0x31,
-0x46,
-0x5f,
-0x8,
-0x5f,
-0x41,
-0x44,
-0x52,
-0xc,
-0x0,
-0x0,
-0x1f,
-0x0,
-0x14,
-0xd,
-0x5f,
-0x45,
-0x4a,
-0x30,
-0x1,
-0xa4,
-0x50,
-0x43,
-0x45,
-0x4a,
-0xa,
-0x1f,
-0x8,
-0x5f,
-0x53,
-0x55,
-0x4e,
-0xa,
-0x1f,
-0x14,
-0x38,
-0x50,
-0x43,
-0x4e,
-0x46,
-0x0,
-0x70,
-0x0,
-0x60,
-0xa2,
-0x2c,
-0x95,
-0x60,
-0xa,
-0x1f,
-0x75,
-0x60,
-0xa0,
-0x11,
-0x7b,
-0x50,
-0x43,
-0x49,
-0x55,
-0x79,
-0x1,
-0x60,
-0x0,
-0x0,
-0x50,
-0x43,
-0x4e,
-0x54,
-0x60,
-0x1,
-0xa0,
-0x12,
-0x7b,
-0x50,
-0x43,
-0x49,
-0x44,
-0x79,
-0x1,
-0x60,
-0x0,
-0x0,
-0x50,
-0x43,
-0x4e,
-0x54,
-0x60,
-0xa,
-0x3,
-0xa4,
-0x1,
-0x14,
-0x4a,
-0x17,
-0x50,
-0x43,
-0x4e,
-0x54,
-0x2,
-0xa0,
-0xa,
-0x93,
-0x68,
-0x1,
-0x86,
-0x53,
-0x30,
-0x31,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x2,
-0x86,
-0x53,
-0x30,
-0x32,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x3,
-0x86,
-0x53,
-0x30,
-0x33,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x4,
-0x86,
-0x53,
-0x30,
-0x34,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x5,
-0x86,
-0x53,
-0x30,
-0x35,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x6,
-0x86,
-0x53,
-0x30,
-0x36,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x7,
-0x86,
-0x53,
-0x30,
-0x37,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x8,
-0x86,
-0x53,
-0x30,
-0x38,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x9,
-0x86,
-0x53,
-0x30,
-0x39,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0xa,
-0x86,
-0x53,
-0x30,
-0x41,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0xb,
-0x86,
-0x53,
-0x30,
-0x42,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0xc,
-0x86,
-0x53,
-0x30,
-0x43,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0xd,
-0x86,
-0x53,
-0x30,
-0x44,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0xe,
-0x86,
-0x53,
-0x30,
-0x45,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0xf,
-0x86,
-0x53,
-0x30,
-0x46,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x10,
-0x86,
-0x53,
-0x31,
-0x30,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x11,
-0x86,
-0x53,
-0x31,
-0x31,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x12,
-0x86,
-0x53,
-0x31,
-0x32,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x13,
-0x86,
-0x53,
-0x31,
-0x33,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x14,
-0x86,
-0x53,
-0x31,
-0x34,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x15,
-0x86,
-0x53,
-0x31,
-0x35,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x16,
-0x86,
-0x53,
-0x31,
-0x36,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x17,
-0x86,
-0x53,
-0x31,
-0x37,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x18,
-0x86,
-0x53,
-0x31,
-0x38,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x19,
-0x86,
-0x53,
-0x31,
-0x39,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x1a,
-0x86,
-0x53,
-0x31,
-0x41,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x1b,
-0x86,
-0x53,
-0x31,
-0x42,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x1c,
-0x86,
-0x53,
-0x31,
-0x43,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x1d,
-0x86,
-0x53,
-0x31,
-0x44,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x1e,
-0x86,
-0x53,
-0x31,
-0x45,
-0x5f,
-0x69,
-0xa0,
-0xb,
-0x93,
-0x68,
-0xa,
-0x1f,
-0x86,
-0x53,
-0x31,
-0x46,
-0x5f,
-0x69,
+0x1,
 0x10,
 0x4d,
 0x2c,
index a3770ae995e1a3c81d203e93526e25f104bd1193..c5147d9c780cde7ecae360db0cfee40ebefde5b1 100644 (file)
@@ -406,6 +406,7 @@ encodeLen(u8 *ssdt_ptr, int length, int bytes)
 #define SD_PROC (ssdp_proc_aml + *ssdt_proc_start)
 
 #define SSDT_SIGNATURE 0x54445353 // SSDT
+
 static void*
 build_ssdt(void)
 {
@@ -483,6 +484,14 @@ build_ssdt(void)
     return ssdt;
 }
 
+static void*
+copy_table(void *table, int size)
+{
+    u8 *copy = malloc_high(size);
+    memcpy(copy, table, size);
+    return copy;
+}
+
 #define HPET_SIGNATURE 0x54455048 // HPET
 static void*
 build_hpet(void)
@@ -633,6 +642,8 @@ static const struct pci_device_id acpi_find_tbl[] = {
 
 struct rsdp_descriptor *RsdpAddr;
 
+#include "ssdt-pcihp.hex"
+
 #define MAX_ACPI_TABLES 20
 void
 acpi_bios_init(void)
@@ -664,6 +675,7 @@ acpi_bios_init(void)
     ACPI_INIT_TABLE(build_madt());
     ACPI_INIT_TABLE(build_hpet());
     ACPI_INIT_TABLE(build_srat());
+    ACPI_INIT_TABLE(copy_table(ssdp_pcihp_aml, sizeof ssdp_pcihp_aml));
 
     u16 i, external_tables = qemu_cfg_acpi_additional_tables();
 
diff --git a/src/ssdt-pcihp.dsl b/src/ssdt-pcihp.dsl
new file mode 100644 (file)
index 0000000..72d1bb7
--- /dev/null
@@ -0,0 +1,132 @@
+ACPI_EXTRACT_ALL_CODE ssdp_pcihp_aml
+
+DefinitionBlock ("ssdt-pcihp.aml", "SSDT", 0x01, "BXPC", "BXSSDTPCIHP", 0x1)
+{
+
+/****************************************************************
+ * PCI hotplug
+ ****************************************************************/
+
+    /* Objects supplied by DSDT */
+    External (\_SB.PCI0, DeviceObj)
+    External (\_SB.PCI0.PRMV, MethodObj)
+    External (\_SB.PCI0.PCEJ, MethodObj)
+
+    Scope(\_SB.PCI0) {
+
+#define gen_pci_device(slot)                                    \
+        Device(SL##slot) {                                      \
+            Name (_ADR, 0x##slot##0000)                         \
+            Method (_RMV) { Return (PRMV(0x##slot)) }           \
+            Name (_SUN, 0x##slot)                               \
+        }
+
+        /* VGA (slot 1) and ISA bus (slot 2) defined in DSDT */
+        gen_pci_device(03)
+        gen_pci_device(04)
+        gen_pci_device(05)
+        gen_pci_device(06)
+        gen_pci_device(07)
+        gen_pci_device(08)
+        gen_pci_device(09)
+        gen_pci_device(0a)
+        gen_pci_device(0b)
+        gen_pci_device(0c)
+        gen_pci_device(0d)
+        gen_pci_device(0e)
+        gen_pci_device(0f)
+        gen_pci_device(10)
+        gen_pci_device(11)
+        gen_pci_device(12)
+        gen_pci_device(13)
+        gen_pci_device(14)
+        gen_pci_device(15)
+        gen_pci_device(16)
+        gen_pci_device(17)
+        gen_pci_device(18)
+        gen_pci_device(19)
+        gen_pci_device(1a)
+        gen_pci_device(1b)
+        gen_pci_device(1c)
+        gen_pci_device(1d)
+        gen_pci_device(1e)
+        gen_pci_device(1f)
+
+        /* Bulk generated PCI hotplug devices */
+#define hotplug_slot(slot)                              \
+        Device (S##slot) {                              \
+           Name (_ADR, 0x##slot##0000)                  \
+           Method (_EJ0, 1) { Return(PCEJ(0x##slot)) }  \
+           Name (_SUN, 0x##slot)                        \
+        }
+
+        hotplug_slot(01)
+        hotplug_slot(02)
+        hotplug_slot(03)
+        hotplug_slot(04)
+        hotplug_slot(05)
+        hotplug_slot(06)
+        hotplug_slot(07)
+        hotplug_slot(08)
+        hotplug_slot(09)
+        hotplug_slot(0a)
+        hotplug_slot(0b)
+        hotplug_slot(0c)
+        hotplug_slot(0d)
+        hotplug_slot(0e)
+        hotplug_slot(0f)
+        hotplug_slot(10)
+        hotplug_slot(11)
+        hotplug_slot(12)
+        hotplug_slot(13)
+        hotplug_slot(14)
+        hotplug_slot(15)
+        hotplug_slot(16)
+        hotplug_slot(17)
+        hotplug_slot(18)
+        hotplug_slot(19)
+        hotplug_slot(1a)
+        hotplug_slot(1b)
+        hotplug_slot(1c)
+        hotplug_slot(1d)
+        hotplug_slot(1e)
+        hotplug_slot(1f)
+
+#define gen_pci_hotplug(slot)   \
+            If (LEqual(Arg0, 0x##slot)) { Notify(S##slot, Arg1) }
+
+        Method(PCNT, 2) {
+            gen_pci_hotplug(01)
+            gen_pci_hotplug(02)
+            gen_pci_hotplug(03)
+            gen_pci_hotplug(04)
+            gen_pci_hotplug(05)
+            gen_pci_hotplug(06)
+            gen_pci_hotplug(07)
+            gen_pci_hotplug(08)
+            gen_pci_hotplug(09)
+            gen_pci_hotplug(0a)
+            gen_pci_hotplug(0b)
+            gen_pci_hotplug(0c)
+            gen_pci_hotplug(0d)
+            gen_pci_hotplug(0e)
+            gen_pci_hotplug(0f)
+            gen_pci_hotplug(10)
+            gen_pci_hotplug(11)
+            gen_pci_hotplug(12)
+            gen_pci_hotplug(13)
+            gen_pci_hotplug(14)
+            gen_pci_hotplug(15)
+            gen_pci_hotplug(16)
+            gen_pci_hotplug(17)
+            gen_pci_hotplug(18)
+            gen_pci_hotplug(19)
+            gen_pci_hotplug(1a)
+            gen_pci_hotplug(1b)
+            gen_pci_hotplug(1c)
+            gen_pci_hotplug(1d)
+            gen_pci_hotplug(1e)
+            gen_pci_hotplug(1f)
+        }
+    }
+}
diff --git a/src/ssdt-pcihp.hex b/src/ssdt-pcihp.hex
new file mode 100644 (file)
index 0000000..a103c08
--- /dev/null
@@ -0,0 +1,2708 @@
+static unsigned char ssdp_pcihp_aml[] = {
+0x53,
+0x53,
+0x44,
+0x54,
+0x92,
+0xa,
+0x0,
+0x0,
+0x1,
+0x12,
+0x42,
+0x58,
+0x50,
+0x43,
+0x0,
+0x0,
+0x42,
+0x58,
+0x53,
+0x53,
+0x44,
+0x54,
+0x50,
+0x43,
+0x1,
+0x0,
+0x0,
+0x0,
+0x49,
+0x4e,
+0x54,
+0x4c,
+0x28,
+0x5,
+0x10,
+0x20,
+0x10,
+0x4d,
+0xa6,
+0x5c,
+0x2e,
+0x5f,
+0x53,
+0x42,
+0x5f,
+0x50,
+0x43,
+0x49,
+0x30,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x38,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x39,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x9,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x41,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x42,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xb,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0xb,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x43,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xc,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0xc,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x44,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x45,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x30,
+0x46,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x30,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x31,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x32,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x33,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x34,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x35,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x36,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x37,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x38,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x39,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x41,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x42,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x43,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x44,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x45,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x4c,
+0x31,
+0x46,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x52,
+0x4d,
+0x56,
+0x0,
+0xa4,
+0x50,
+0x52,
+0x4d,
+0x56,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x5b,
+0x82,
+0x22,
+0x53,
+0x30,
+0x31,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1,
+0x0,
+0x14,
+0xc,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0x1,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0x1,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x32,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x2,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x2,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x2,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x33,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x3,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x3,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x3,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x34,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x4,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x4,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x4,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x35,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x5,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x5,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x5,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x36,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x6,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x6,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x6,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x37,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x7,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x7,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x7,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x38,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x8,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x8,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x8,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x39,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x9,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x9,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x9,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x41,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xa,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xa,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xa,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x42,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xb,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xb,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xb,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x43,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xc,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xc,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xc,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x44,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xd,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xd,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xd,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x45,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xe,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xe,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xe,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x30,
+0x46,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0xf,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0xf,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0xf,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x30,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x10,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x10,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x10,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x31,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x11,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x11,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x11,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x32,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x12,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x12,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x12,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x33,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x13,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x13,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x13,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x34,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x14,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x14,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x14,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x35,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x15,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x15,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x15,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x36,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x16,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x16,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x16,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x37,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x17,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x17,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x17,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x38,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x18,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x18,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x18,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x39,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x19,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x19,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x19,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x41,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1a,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1a,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1a,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x42,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1b,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1b,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1b,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x43,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1c,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1c,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1c,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x44,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1d,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1d,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1d,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x45,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1e,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1e,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1e,
+0x5b,
+0x82,
+0x24,
+0x53,
+0x31,
+0x46,
+0x5f,
+0x8,
+0x5f,
+0x41,
+0x44,
+0x52,
+0xc,
+0x0,
+0x0,
+0x1f,
+0x0,
+0x14,
+0xd,
+0x5f,
+0x45,
+0x4a,
+0x30,
+0x1,
+0xa4,
+0x50,
+0x43,
+0x45,
+0x4a,
+0xa,
+0x1f,
+0x8,
+0x5f,
+0x53,
+0x55,
+0x4e,
+0xa,
+0x1f,
+0x14,
+0x4a,
+0x17,
+0x50,
+0x43,
+0x4e,
+0x54,
+0x2,
+0xa0,
+0xa,
+0x93,
+0x68,
+0x1,
+0x86,
+0x53,
+0x30,
+0x31,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x2,
+0x86,
+0x53,
+0x30,
+0x32,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x3,
+0x86,
+0x53,
+0x30,
+0x33,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x4,
+0x86,
+0x53,
+0x30,
+0x34,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x5,
+0x86,
+0x53,
+0x30,
+0x35,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x6,
+0x86,
+0x53,
+0x30,
+0x36,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x7,
+0x86,
+0x53,
+0x30,
+0x37,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x8,
+0x86,
+0x53,
+0x30,
+0x38,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x9,
+0x86,
+0x53,
+0x30,
+0x39,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0xa,
+0x86,
+0x53,
+0x30,
+0x41,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0xb,
+0x86,
+0x53,
+0x30,
+0x42,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0xc,
+0x86,
+0x53,
+0x30,
+0x43,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0xd,
+0x86,
+0x53,
+0x30,
+0x44,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0xe,
+0x86,
+0x53,
+0x30,
+0x45,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0xf,
+0x86,
+0x53,
+0x30,
+0x46,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x10,
+0x86,
+0x53,
+0x31,
+0x30,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x11,
+0x86,
+0x53,
+0x31,
+0x31,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x12,
+0x86,
+0x53,
+0x31,
+0x32,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x13,
+0x86,
+0x53,
+0x31,
+0x33,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x14,
+0x86,
+0x53,
+0x31,
+0x34,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x15,
+0x86,
+0x53,
+0x31,
+0x35,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x16,
+0x86,
+0x53,
+0x31,
+0x36,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x17,
+0x86,
+0x53,
+0x31,
+0x37,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x18,
+0x86,
+0x53,
+0x31,
+0x38,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x19,
+0x86,
+0x53,
+0x31,
+0x39,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x1a,
+0x86,
+0x53,
+0x31,
+0x41,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x1b,
+0x86,
+0x53,
+0x31,
+0x42,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x1c,
+0x86,
+0x53,
+0x31,
+0x43,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x1d,
+0x86,
+0x53,
+0x31,
+0x44,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x1e,
+0x86,
+0x53,
+0x31,
+0x45,
+0x5f,
+0x69,
+0xa0,
+0xb,
+0x93,
+0x68,
+0xa,
+0x1f,
+0x86,
+0x53,
+0x31,
+0x46,
+0x5f,
+0x69
+};