--- /dev/null
+diff -Nur a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c
+--- a/tools/firmware/hvmloader/acpi/build.c 2009-04-01 16:02:46.000000000 -0400
++++ b/tools/firmware/hvmloader/acpi/build.c 2009-04-01 15:57:01.000000000 -0400
+@@ -59,7 +59,16 @@
+ return 1;
+ }
+
+-static int construct_madt(struct acpi_20_madt *madt)
++static void pt_update_acpi_tables(struct acpi_header *header, struct hvm_acinfo_table *va_ac)
++{
++ memcpy(header->oem_id, va_ac->oem_id, HVM_ACINFO_OEM_ID_SIZE);
++ memcpy(header->oem_table_id, va_ac->oem_table_id, HVM_ACINFO_OEM_TABLE_ID_SIZE);
++ header->oem_revision = va_ac->oem_revision;
++ header->creator_id = ASCII32(va_ac->creator_id[0],va_ac->creator_id[1],va_ac->creator_id[2],va_ac->creator_id[3]);
++ header->creator_revision = va_ac->creator_revision;
++}
++
++static int construct_madt(struct acpi_20_madt *madt, struct hvm_acinfo_table *va_ac)
+ {
+ struct acpi_20_madt_intsrcovr *intsrcovr;
+ struct acpi_20_madt_ioapic *io_apic;
+@@ -69,7 +78,14 @@
+ memset(madt, 0, sizeof(*madt));
+ madt->header.signature = ACPI_2_0_MADT_SIGNATURE;
+ madt->header.revision = ACPI_2_0_MADT_REVISION;
+- fixed_strcpy(madt->header.oem_id, ACPI_OEM_ID);
++ if (va_ac == NULL)
++ {
++ fixed_strcpy(madt->header.oem_id, ACPI_OEM_ID);
++ }
++ else
++ {
++ memcpy(madt->header.oem_id, va_ac->oem_id, HVM_ACINFO_OEM_ID_SIZE);
++ }
+ fixed_strcpy(madt->header.oem_table_id, ACPI_OEM_TABLE_ID);
+ madt->header.oem_revision = ACPI_OEM_REVISION;
+ madt->header.creator_id = ACPI_CREATOR_ID;
+@@ -136,14 +152,21 @@
+ return align16(offset);
+ }
+
+-static int construct_hpet(struct acpi_20_hpet *hpet)
++static int construct_hpet(struct acpi_20_hpet *hpet, struct hvm_acinfo_table *va_ac)
+ {
+ int offset;
+
+ memset(hpet, 0, sizeof(*hpet));
+ hpet->header.signature = ACPI_2_0_HPET_SIGNATURE;
+ hpet->header.revision = ACPI_2_0_HPET_REVISION;
+- fixed_strcpy(hpet->header.oem_id, ACPI_OEM_ID);
++ if (va_ac == NULL)
++ {
++ fixed_strcpy(hpet->header.oem_id, ACPI_OEM_ID);
++ }
++ else
++ {
++ memcpy(hpet->header.oem_id, va_ac->oem_id, HVM_ACINFO_OEM_ID_SIZE);
++ }
+ fixed_strcpy(hpet->header.oem_table_id, ACPI_OEM_TABLE_ID);
+ hpet->header.oem_revision = ACPI_OEM_REVISION;
+ hpet->header.creator_id = ACPI_CREATOR_ID;
+@@ -158,7 +181,7 @@
+ return offset;
+ }
+
+-static int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs)
++static int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs, struct hvm_acinfo_table *va_ac)
+ {
+ int offset = 0, nr_tables = 0;
+ struct acpi_20_madt *madt;
+@@ -172,7 +195,7 @@
+ if ( (hvm_info->nr_vcpus > 1) || hvm_info->apic_mode )
+ {
+ madt = (struct acpi_20_madt *)&buf[offset];
+- offset += construct_madt(madt);
++ offset += construct_madt(madt, va_ac);
+ table_ptrs[nr_tables++] = (unsigned long)madt;
+ }
+
+@@ -180,7 +203,7 @@
+ if ( hpet_exists(ACPI_HPET_ADDRESS) )
+ {
+ hpet = (struct acpi_20_hpet *)&buf[offset];
+- offset += construct_hpet(hpet);
++ offset += construct_hpet(hpet, va_ac);
+ table_ptrs[nr_tables++] = (unsigned long)hpet;
+ }
+
+@@ -191,6 +214,14 @@
+ offset += align16(sizeof(AmlCode_PM));
+ }
+
++ /* SLIC */
++ if (va_ac != NULL)
++ {
++ table_ptrs[nr_tables++] = (unsigned long)&buf[offset];
++ memcpy(&buf[offset], (uint8_t*)va_ac + sizeof(struct hvm_acinfo_table), va_ac->slic_length);
++ offset += align16(va_ac->slic_length);
++ }
++
+ /* TPM TCPA and SSDT. */
+ tis_hdr = (uint16_t *)0xFED40F00;
+ if ( (tis_hdr[0] == tis_signature[0]) &&
+@@ -209,7 +240,14 @@
+ tcpa->header.signature = ACPI_2_0_TCPA_SIGNATURE;
+ tcpa->header.length = sizeof(*tcpa);
+ tcpa->header.revision = ACPI_2_0_TCPA_REVISION;
+- fixed_strcpy(tcpa->header.oem_id, ACPI_OEM_ID);
++ if (va_ac == NULL)
++ {
++ fixed_strcpy(tcpa->header.oem_id, ACPI_OEM_ID);
++ }
++ else
++ {
++ memcpy(tcpa->header.oem_id, va_ac->oem_id, HVM_ACINFO_OEM_ID_SIZE);
++ }
+ fixed_strcpy(tcpa->header.oem_table_id, ACPI_OEM_TABLE_ID);
+ tcpa->header.oem_revision = ACPI_OEM_REVISION;
+ tcpa->header.creator_id = ACPI_CREATOR_ID;
+@@ -240,6 +278,21 @@
+ unsigned char *dsdt;
+ unsigned long secondary_tables[16];
+ int offset = 0, i;
++ struct hvm_acinfo_table *va_ac;
++
++ /*
++ * First get the ACPI info structure that may be passed to the HVM loader. This will be used
++ * to pass through platform ACPI information if present.
++ */
++ va_ac = get_hvm_acinfo_table();
++ if (va_ac != NULL)
++ {
++ pt_update_acpi_tables(&Rsdt.header, va_ac);
++ pt_update_acpi_tables(&Xsdt.header, va_ac);
++ /* just the OEM ID for the RSDP and FADT */
++ memcpy(Rsdp.oem_id, va_ac->oem_id, HVM_ACINFO_OEM_ID_SIZE);
++ memcpy(Fadt.header.oem_id, va_ac->oem_id, HVM_ACINFO_OEM_ID_SIZE);
++ }
+
+ /*
+ * Fill in high-memory data structures, starting at @buf.
+@@ -283,7 +336,7 @@
+ offsetof(struct acpi_header, checksum),
+ sizeof(struct acpi_20_fadt));
+
+- offset += construct_secondary_tables(&buf[offset], secondary_tables);
++ offset += construct_secondary_tables(&buf[offset], secondary_tables, va_ac);
+
+ xsdt = (struct acpi_20_xsdt *)&buf[offset];
+ memcpy(xsdt, &Xsdt, sizeof(struct acpi_header));
+diff -Nur a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
+--- a/tools/firmware/hvmloader/util.c 2009-04-01 16:02:51.000000000 -0400
++++ b/tools/firmware/hvmloader/util.c 2009-04-01 15:47:57.000000000 -0400
+@@ -680,6 +680,32 @@
+ return table;
+ }
+
++struct hvm_acinfo_table *get_hvm_acinfo_table(void)
++{
++ static struct hvm_acinfo_table *table = NULL;
++ static int validated = 0;
++ struct hvm_acinfo_table *t;
++
++ if ( validated )
++ return table;
++
++ t = (struct hvm_acinfo_table *)HVM_ACINFO_PADDR;
++
++ if ( t->slic_length == 0 ) {
++ printf("HVM ACPI info table missing SLIC table?\n");
++ validated = 1;
++ return table;
++ }
++
++ if ( validate_hvm_info_table((uint8_t*)t, t->slic_length + sizeof(struct hvm_acinfo_table), t->signature, "AC INFO", 7) )
++ table = t;
++ else
++ printf("Bad or missing HVM SMBIOS info table\n");
++ validated = 1;
++
++ return table;
++}
++
+ struct hvm_smtable_header * get_sminfo_by_type(struct hvm_sminfo_table *pa_sm, uint8_t type)
+ {
+ struct hvm_smtable_header *header =
+diff -Nur a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/util.h
+--- a/tools/firmware/hvmloader/util.h 2009-04-01 16:02:51.000000000 -0400
++++ b/tools/firmware/hvmloader/util.h 2009-04-01 15:48:13.000000000 -0400
+@@ -113,6 +113,7 @@
+
+ /* HVM-build SMBIOS/ACPI info extensions */
+ struct hvm_sminfo_table *get_hvm_sminfo_table(void);
++struct hvm_acinfo_table *get_hvm_acinfo_table(void);
+ struct hvm_smtable_header * get_sminfo_by_type(struct hvm_sminfo_table *pa_sm, uint8_t type);
+
+ /* String and memory functions */
+diff -Nur a/tools/libxc/xc_dom_x86.c b/tools/libxc/xc_dom_x86.c
+--- a/tools/libxc/xc_dom_x86.c 2009-04-01 14:06:29.000000000 -0400
++++ b/tools/libxc/xc_dom_x86.c 2009-04-01 16:00:48.000000000 -0400
+@@ -17,7 +17,6 @@
+ #include <xen/xen.h>
+ #include <xen/foreign/x86_32.h>
+ #include <xen/foreign/x86_64.h>
+-#include <xen/hvm/hvm_info_table.h>
+ #include <xen/io/protocols.h>
+
+ #include "xg_private.h"
+diff -Nur a/xen/include/public/hvm/hvm_info_table.h b/xen/include/public/hvm/hvm_info_table.h
+--- a/xen/include/public/hvm/hvm_info_table.h 2009-04-01 16:02:51.000000000 -0400
++++ b/xen/include/public/hvm/hvm_info_table.h 2009-04-01 15:41:59.000000000 -0400
+@@ -32,8 +32,12 @@
+ #define HVM_SMINFO_OFFSET 0x0
+ #define HVM_SMINFO_PADDR ((HVM_INFO_PFN << 12) + HVM_SMINFO_OFFSET)
+ #define HVM_SMINFO_MAX 0x800
++#define HVM_ACINFO_OFFSET 0xC00
++#define HVM_ACINFO_PADDR ((HVM_INFO_PFN << 12) + HVM_ACINFO_OFFSET)
++#define HVM_ACINFO_MAX 0x400
+
+ #define HVM_SMINFO_EXTENSIONS 1
++#define HVM_ACINFO_EXTENSIONS 1
+
+ struct hvm_info_table {
+ char signature[8]; /* "HVM INFO" */
+@@ -83,4 +87,19 @@
+ uint32_t sm_length; /* beginning after this stucture, includes fixed table, string list, and terminator */
+ };
+
++#define HVM_ACINFO_OEM_ID_SIZE 6
++#define HVM_ACINFO_OEM_TABLE_ID_SIZE 8
++#define HVM_ACINFO_CREATOR_ID_SIZE 4
++
++struct hvm_acinfo_table {
++ char signature[7]; /* "AC INFO" */
++ uint8_t checksum;
++ uint32_t slic_length; /* length of SLIC following this structure */
++ char oem_id[HVM_ACINFO_OEM_ID_SIZE];
++ char oem_table_id[HVM_ACINFO_OEM_TABLE_ID_SIZE];
++ uint32_t oem_revision;
++ char creator_id[HVM_ACINFO_CREATOR_ID_SIZE];
++ uint32_t creator_revision;
++};
++
+ #endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */
--- /dev/null
+diff -r 0477f9061c8a tools/Makefile
+--- a/tools/Makefile Fri Mar 20 17:42:46 2009 +0000
++++ b/tools/Makefile Thu Apr 02 14:13:31 2009 +0200
+@@ -2,16 +2,16 @@
+ include $(XEN_ROOT)/tools/Rules.mk
+
+ SUBDIRS-y :=
+-SUBDIRS-y += check
++SUBDIRS-n += check
+ SUBDIRS-y += include
+ SUBDIRS-y += libxc
+ SUBDIRS-y += flask
+ SUBDIRS-y += xenstore
+-SUBDIRS-y += misc
+-SUBDIRS-y += examples
++SUBDIRS-n += misc
++SUBDIRS-n += examples
+ SUBDIRS-y += hotplug
+ SUBDIRS-y += xentrace
+-SUBDIRS-$(CONFIG_XCUTILS) += xcutils
++SUBDIRS-n += xcutils
+ SUBDIRS-$(CONFIG_X86) += firmware
+ SUBDIRS-$(ACM_SECURITY) += security
+ SUBDIRS-y += console
+@@ -23,7 +23,7 @@
+ SUBDIRS-$(CONFIG_Linux) += blktap
+ SUBDIRS-y += libfsimage
+ SUBDIRS-$(LIBXENAPI_BINDINGS) += libxen
+-SUBDIRS-$(CONFIG_Linux) += fs-back
++SUBDIRS-n += fs-back
+ SUBDIRS-$(CONFIG_IOEMU) += ioemu-dir
+ SUBDIRS-y += xenpmd
+
+@@ -54,7 +54,7 @@
+ clean distclean: subdirs-clean
+
+ ifneq ($(XEN_COMPILE_ARCH),$(XEN_TARGET_ARCH))
+-IOEMU_CONFIGURE_CROSS ?= --cpu=$(XEN_TARGET_ARCH) \
++IOEMU_CONFIGURE_CROSS ?= --cpu=$(XEN_TARGET_ARCH:x86_32=i386) \
+ --cross-prefix=$(CROSS_COMPILE) \
+ --interp-prefix=$(CROSS_SYS_ROOT)
+ endif
+diff -r 0477f9061c8a tools/firmware/hvmloader/acpi/dsdt.c
+--- a/tools/firmware/hvmloader/acpi/dsdt.c Fri Mar 20 17:42:46 2009 +0000
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,1617 +0,0 @@
+-/*
+- *
+- * Intel ACPI Component Architecture
+- * ASL Optimizing Compiler version 20090220 [Mar 9 2009]
+- * Copyright (C) 2000 - 2009 Intel Corporation
+- * Supports ACPI Specification Revision 3.0a
+- *
+- * Compilation of "dsdt.asl" - Tue Mar 17 10:44:21 2009
+- *
+- * C source code output
+- *
+- */
+-unsigned char AmlCode[] =
+-{
+- 0x44,0x53,0x44,0x54,0x02,0x32,0x00,0x00, /* 00000000 "DSDT.2.." */
+- 0x02,0xC6,0x58,0x65,0x6E,0x00,0x00,0x00, /* 00000008 "..Xen..." */
+- 0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00, /* 00000010 "HVM....." */
+- 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
+- 0x20,0x02,0x09,0x20,0x08,0x50,0x4D,0x42, /* 00000020 " .. .PMB" */
+- 0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C, /* 00000028 "S....PML" */
+- 0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31, /* 00000030 "N...IOB1" */
+- 0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08, /* 00000038 "..IOL1.." */
+- 0x41,0x50,0x43,0x42,0x0C,0x00,0x00,0xC0, /* 00000040 "APCB...." */
+- 0xFE,0x08,0x41,0x50,0x43,0x4C,0x0C,0x00, /* 00000048 "..APCL.." */
+- 0x00,0x01,0x00,0x08,0x50,0x55,0x49,0x44, /* 00000050 "....PUID" */
+- 0x00,0x10,0x49,0x0C,0x5F,0x50,0x52,0x5F, /* 00000058 "..I._PR_" */
+- 0x5B,0x83,0x0B,0x50,0x52,0x30,0x30,0x00, /* 00000060 "[..PR00." */
+- 0x00,0x00,0x00,0x00,0x00,0x5B,0x83,0x0B, /* 00000068 ".....[.." */
+- 0x50,0x52,0x30,0x31,0x01,0x00,0x00,0x00, /* 00000070 "PR01...." */
+- 0x00,0x00,0x5B,0x83,0x0B,0x50,0x52,0x30, /* 00000078 "..[..PR0" */
+- 0x32,0x02,0x00,0x00,0x00,0x00,0x00,0x5B, /* 00000080 "2......[" */
+- 0x83,0x0B,0x50,0x52,0x30,0x33,0x03,0x00, /* 00000088 "..PR03.." */
+- 0x00,0x00,0x00,0x00,0x5B,0x83,0x0B,0x50, /* 00000090 "....[..P" */
+- 0x52,0x30,0x34,0x04,0x00,0x00,0x00,0x00, /* 00000098 "R04....." */
+- 0x00,0x5B,0x83,0x0B,0x50,0x52,0x30,0x35, /* 000000A0 ".[..PR05" */
+- 0x05,0x00,0x00,0x00,0x00,0x00,0x5B,0x83, /* 000000A8 "......[." */
+- 0x0B,0x50,0x52,0x30,0x36,0x06,0x00,0x00, /* 000000B0 ".PR06..." */
+- 0x00,0x00,0x00,0x5B,0x83,0x0B,0x50,0x52, /* 000000B8 "...[..PR" */
+- 0x30,0x37,0x07,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "07......" */
+- 0x5B,0x83,0x0B,0x50,0x52,0x30,0x38,0x08, /* 000000C8 "[..PR08." */
+- 0x00,0x00,0x00,0x00,0x00,0x5B,0x83,0x0B, /* 000000D0 ".....[.." */
+- 0x50,0x52,0x30,0x39,0x09,0x00,0x00,0x00, /* 000000D8 "PR09...." */
+- 0x00,0x00,0x5B,0x83,0x0B,0x50,0x52,0x30, /* 000000E0 "..[..PR0" */
+- 0x41,0x0A,0x00,0x00,0x00,0x00,0x00,0x5B, /* 000000E8 "A......[" */
+- 0x83,0x0B,0x50,0x52,0x30,0x42,0x0B,0x00, /* 000000F0 "..PR0B.." */
+- 0x00,0x00,0x00,0x00,0x5B,0x83,0x0B,0x50, /* 000000F8 "....[..P" */
+- 0x52,0x30,0x43,0x0C,0x00,0x00,0x00,0x00, /* 00000100 "R0C....." */
+- 0x00,0x5B,0x83,0x0B,0x50,0x52,0x30,0x44, /* 00000108 ".[..PR0D" */
+- 0x0D,0x00,0x00,0x00,0x00,0x00,0x5B,0x83, /* 00000110 "......[." */
+- 0x0B,0x50,0x52,0x30,0x45,0x0E,0x00,0x00, /* 00000118 ".PR0E..." */
+- 0x00,0x00,0x00,0x08,0x5F,0x53,0x33,0x5F, /* 00000120 "...._S3_" */
+- 0x12,0x08,0x04,0x0A,0x05,0x0A,0x05,0x00, /* 00000128 "........" */
+- 0x00,0x08,0x5F,0x53,0x34,0x5F,0x12,0x08, /* 00000130 ".._S4_.." */
+- 0x04,0x0A,0x06,0x0A,0x06,0x00,0x00,0x08, /* 00000138 "........" */
+- 0x5F,0x53,0x35,0x5F,0x12,0x08,0x04,0x0A, /* 00000140 "_S5_...." */
+- 0x07,0x0A,0x07,0x00,0x00,0x08,0x50,0x49, /* 00000148 "......PI" */
+- 0x43,0x44,0x00,0x14,0x0C,0x5F,0x50,0x49, /* 00000150 "CD..._PI" */
+- 0x43,0x01,0x70,0x68,0x50,0x49,0x43,0x44, /* 00000158 "C.phPICD" */
+- 0x10,0x83,0xB7,0x02,0x5F,0x53,0x42,0x5F, /* 00000160 "...._SB_" */
+- 0x5B,0x80,0x42,0x49,0x4F,0x53,0x00,0x0C, /* 00000168 "[.BIOS.." */
+- 0x00,0xA0,0x0E,0x00,0x0A,0x10,0x5B,0x81, /* 00000170 "......[." */
+- 0x21,0x42,0x49,0x4F,0x53,0x01,0x55,0x41, /* 00000178 "!BIOS.UA" */
+- 0x52,0x31,0x01,0x55,0x41,0x52,0x32,0x01, /* 00000180 "R1.UAR2." */
+- 0x48,0x50,0x45,0x54,0x01,0x00,0x1D,0x50, /* 00000188 "HPET...P" */
+- 0x4D,0x49,0x4E,0x20,0x50,0x4C,0x45,0x4E, /* 00000190 "MIN PLEN" */
+- 0x20,0x5B,0x82,0x49,0x04,0x4D,0x45,0x4D, /* 00000198 " [.I.MEM" */
+- 0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000001A0 "0._HID.A" */
+- 0xD0,0x0C,0x02,0x08,0x5F,0x43,0x52,0x53, /* 000001A8 "...._CRS" */
+- 0x11,0x33,0x0A,0x30,0x8A,0x2B,0x00,0x00, /* 000001B0 ".3.0.+.." */
+- 0x0D,0x03,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */
+- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C0 "........" */
+- 0x00,0x00,0xFF,0xFF,0x09,0x00,0x00,0x00, /* 000001C8 "........" */
+- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D0 "........" */
+- 0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00, /* 000001D8 "........" */
+- 0x00,0x00,0x79,0x00,0x5B,0x82,0x8E,0xAE, /* 000001E0 "..y.[..." */
+- 0x02,0x50,0x43,0x49,0x30,0x08,0x5F,0x48, /* 000001E8 ".PCI0._H" */
+- 0x49,0x44,0x0C,0x41,0xD0,0x0A,0x03,0x08, /* 000001F0 "ID.A...." */
+- 0x5F,0x55,0x49,0x44,0x00,0x08,0x5F,0x41, /* 000001F8 "_UID.._A" */
+- 0x44,0x52,0x00,0x08,0x5F,0x42,0x42,0x4E, /* 00000200 "DR.._BBN" */
+- 0x00,0x5B,0x82,0x2A,0x48,0x50,0x30,0x5F, /* 00000208 ".[.*HP0_" */
+- 0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0, /* 00000210 "._HID.A." */
+- 0x0C,0x02,0x08,0x5F,0x43,0x52,0x53,0x11, /* 00000218 "..._CRS." */
+- 0x15,0x0A,0x12,0x47,0x01,0xC0,0x10,0xC0, /* 00000220 "...G...." */
+- 0x10,0x00,0x03,0x47,0x01,0x44,0xB0,0x44, /* 00000228 "...G.D.D" */
+- 0xB0,0x00,0x04,0x79,0x00,0x14,0x4E,0x0C, /* 00000230 "...y..N." */
+- 0x5F,0x43,0x52,0x53,0x00,0x08,0x50,0x52, /* 00000238 "_CRS..PR" */
+- 0x54,0x30,0x11,0x42,0x07,0x0A,0x6E,0x88, /* 00000240 "T0.B..n." */
+- 0x0D,0x00,0x02,0x0E,0x00,0x00,0x00,0x00, /* 00000248 "........" */
+- 0x00,0xFF,0x00,0x00,0x00,0x00,0x01,0x47, /* 00000250 ".......G" */
+- 0x01,0xF8,0x0C,0xF8,0x0C,0x01,0x08,0x88, /* 00000258 "........" */
+- 0x0D,0x00,0x01,0x0C,0x03,0x00,0x00,0x00, /* 00000260 "........" */
+- 0x00,0xF7,0x0C,0x00,0x00,0xF8,0x0C,0x88, /* 00000268 "........" */
+- 0x0D,0x00,0x01,0x0C,0x03,0x00,0x00,0x00, /* 00000270 "........" */
+- 0x0D,0xFF,0xFF,0x00,0x00,0x00,0xF3,0x87, /* 00000278 "........" */
+- 0x17,0x00,0x00,0x0C,0x03,0x00,0x00,0x00, /* 00000280 "........" */
+- 0x00,0x00,0x00,0x0A,0x00,0xFF,0xFF,0x0B, /* 00000288 "........" */
+- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, /* 00000290 "........" */
+- 0x00,0x87,0x17,0x00,0x00,0x0C,0x03,0x00, /* 00000298 "........" */
+- 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF, /* 000002A0 "........" */
+- 0xFF,0xFF,0xF4,0x00,0x00,0x00,0x00,0x00, /* 000002A8 "........" */
+- 0x00,0x00,0x05,0x79,0x00,0x8A,0x50,0x52, /* 000002B0 "...y..PR" */
+- 0x54,0x30,0x0A,0x5C,0x4D,0x4D,0x49,0x4E, /* 000002B8 "T0.\MMIN" */
+- 0x8A,0x50,0x52,0x54,0x30,0x0A,0x60,0x4D, /* 000002C0 ".PRT0.`M" */
+- 0x4D,0x41,0x58,0x8A,0x50,0x52,0x54,0x30, /* 000002C8 "MAX.PRT0" */
+- 0x0A,0x68,0x4D,0x4C,0x45,0x4E,0x70,0x50, /* 000002D0 ".hMLENpP" */
+- 0x4D,0x49,0x4E,0x4D,0x4D,0x49,0x4E,0x70, /* 000002D8 "MINMMINp" */
+- 0x50,0x4C,0x45,0x4E,0x4D,0x4C,0x45,0x4E, /* 000002E0 "PLENMLEN" */
+- 0x72,0x4D,0x4D,0x49,0x4E,0x4D,0x4C,0x45, /* 000002E8 "rMMINMLE" */
+- 0x4E,0x4D,0x4D,0x41,0x58,0x74,0x4D,0x4D, /* 000002F0 "NMMAXtMM" */
+- 0x41,0x58,0x01,0x4D,0x4D,0x41,0x58,0xA4, /* 000002F8 "AX.MMAX." */
+- 0x50,0x52,0x54,0x30,0x08,0x42,0x55,0x46, /* 00000300 "PRT0.BUF" */
+- 0x41,0x11,0x09,0x0A,0x06,0x23,0x20,0x0C, /* 00000308 "A....# ." */
+- 0x18,0x79,0x00,0x08,0x42,0x55,0x46,0x42, /* 00000310 ".y..BUFB" */
+- 0x11,0x09,0x0A,0x06,0x23,0x00,0x00,0x18, /* 00000318 "....#..." */
+- 0x79,0x00,0x8B,0x42,0x55,0x46,0x42,0x01, /* 00000320 "y..BUFB." */
+- 0x49,0x52,0x51,0x56,0x5B,0x82,0x48,0x08, /* 00000328 "IRQV[.H." */
+- 0x4C,0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49, /* 00000330 "LNKA._HI" */
+- 0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F, /* 00000338 "D.A...._" */
+- 0x55,0x49,0x44,0x01,0x14,0x1C,0x5F,0x53, /* 00000340 "UID..._S" */
+- 0x54,0x41,0x00,0x7B,0x50,0x49,0x52,0x41, /* 00000348 "TA.{PIRA" */
+- 0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,0x0A, /* 00000350 "..`...`." */
+- 0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A, /* 00000358 "........" */
+- 0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,0x00, /* 00000360 "..._PRS." */
+- 0xA4,0x42,0x55,0x46,0x41,0x14,0x11,0x5F, /* 00000368 ".BUFA.._" */
+- 0x44,0x49,0x53,0x00,0x7D,0x50,0x49,0x52, /* 00000370 "DIS.}PIR" */
+- 0x41,0x0A,0x80,0x50,0x49,0x52,0x41,0x14, /* 00000378 "A..PIRA." */
+- 0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,0x50, /* 00000380 "._CRS.{P" */
+- 0x49,0x52,0x41,0x0A,0x0F,0x60,0x79,0x01, /* 00000388 "IRA..`y." */
+- 0x60,0x49,0x52,0x51,0x56,0xA4,0x42,0x55, /* 00000390 "`IRQV.BU" */
+- 0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,0x53, /* 00000398 "FB.._SRS" */
+- 0x01,0x8B,0x68,0x01,0x49,0x52,0x51,0x31, /* 000003A0 "..h.IRQ1" */
+- 0x82,0x49,0x52,0x51,0x31,0x60,0x76,0x60, /* 000003A8 ".IRQ1`v`" */
+- 0x70,0x60,0x50,0x49,0x52,0x41,0x5B,0x82, /* 000003B0 "p`PIRA[." */
+- 0x49,0x08,0x4C,0x4E,0x4B,0x42,0x08,0x5F, /* 000003B8 "I.LNKB._" */
+- 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F, /* 000003C0 "HID.A..." */
+- 0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,0x14, /* 000003C8 "._UID..." */
+- 0x1C,0x5F,0x53,0x54,0x41,0x00,0x7B,0x50, /* 000003D0 "._STA.{P" */
+- 0x49,0x52,0x42,0x0A,0x80,0x60,0xA0,0x08, /* 000003D8 "IRB..`.." */
+- 0x93,0x60,0x0A,0x80,0xA4,0x0A,0x09,0xA1, /* 000003E0 ".`......" */
+- 0x04,0xA4,0x0A,0x0B,0x14,0x0B,0x5F,0x50, /* 000003E8 "......_P" */
+- 0x52,0x53,0x00,0xA4,0x42,0x55,0x46,0x41, /* 000003F0 "RS..BUFA" */
+- 0x14,0x11,0x5F,0x44,0x49,0x53,0x00,0x7D, /* 000003F8 ".._DIS.}" */
+- 0x50,0x49,0x52,0x42,0x0A,0x80,0x50,0x49, /* 00000400 "PIRB..PI" */
+- 0x52,0x42,0x14,0x1A,0x5F,0x43,0x52,0x53, /* 00000408 "RB.._CRS" */
+- 0x00,0x7B,0x50,0x49,0x52,0x42,0x0A,0x0F, /* 00000410 ".{PIRB.." */
+- 0x60,0x79,0x01,0x60,0x49,0x52,0x51,0x56, /* 00000418 "`y.`IRQV" */
+- 0xA4,0x42,0x55,0x46,0x42,0x14,0x1B,0x5F, /* 00000420 ".BUFB.._" */
+- 0x53,0x52,0x53,0x01,0x8B,0x68,0x01,0x49, /* 00000428 "SRS..h.I" */
+- 0x52,0x51,0x31,0x82,0x49,0x52,0x51,0x31, /* 00000430 "RQ1.IRQ1" */
+- 0x60,0x76,0x60,0x70,0x60,0x50,0x49,0x52, /* 00000438 "`v`p`PIR" */
+- 0x42,0x5B,0x82,0x49,0x08,0x4C,0x4E,0x4B, /* 00000440 "B[.I.LNK" */
+- 0x43,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00000448 "C._HID.A" */
+- 0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44, /* 00000450 "...._UID" */
+- 0x0A,0x03,0x14,0x1C,0x5F,0x53,0x54,0x41, /* 00000458 "...._STA" */
+- 0x00,0x7B,0x50,0x49,0x52,0x43,0x0A,0x80, /* 00000460 ".{PIRC.." */
+- 0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4, /* 00000468 "`...`..." */
+- 0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14, /* 00000470 "........" */
+- 0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,0x42, /* 00000478 "._PRS..B" */
+- 0x55,0x46,0x41,0x14,0x11,0x5F,0x44,0x49, /* 00000480 "UFA.._DI" */
+- 0x53,0x00,0x7D,0x50,0x49,0x52,0x43,0x0A, /* 00000488 "S.}PIRC." */
+- 0x80,0x50,0x49,0x52,0x43,0x14,0x1A,0x5F, /* 00000490 ".PIRC.._" */
+- 0x43,0x52,0x53,0x00,0x7B,0x50,0x49,0x52, /* 00000498 "CRS.{PIR" */
+- 0x43,0x0A,0x0F,0x60,0x79,0x01,0x60,0x49, /* 000004A0 "C..`y.`I" */
+- 0x52,0x51,0x56,0xA4,0x42,0x55,0x46,0x42, /* 000004A8 "RQV.BUFB" */
+- 0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B, /* 000004B0 ".._SRS.." */
+- 0x68,0x01,0x49,0x52,0x51,0x31,0x82,0x49, /* 000004B8 "h.IRQ1.I" */
+- 0x52,0x51,0x31,0x60,0x76,0x60,0x70,0x60, /* 000004C0 "RQ1`v`p`" */
+- 0x50,0x49,0x52,0x43,0x5B,0x82,0x49,0x08, /* 000004C8 "PIRC[.I." */
+- 0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49, /* 000004D0 "LNKD._HI" */
+- 0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F, /* 000004D8 "D.A...._" */
+- 0x55,0x49,0x44,0x0A,0x04,0x14,0x1C,0x5F, /* 000004E0 "UID...._" */
+- 0x53,0x54,0x41,0x00,0x7B,0x50,0x49,0x52, /* 000004E8 "STA.{PIR" */
+- 0x44,0x0A,0x80,0x60,0xA0,0x08,0x93,0x60, /* 000004F0 "D..`...`" */
+- 0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4, /* 000004F8 "........" */
+- 0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53, /* 00000500 "...._PRS" */
+- 0x00,0xA4,0x42,0x55,0x46,0x41,0x14,0x11, /* 00000508 "..BUFA.." */
+- 0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x49, /* 00000510 "_DIS.}PI" */
+- 0x52,0x44,0x0A,0x80,0x50,0x49,0x52,0x44, /* 00000518 "RD..PIRD" */
+- 0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B, /* 00000520 ".._CRS.{" */
+- 0x50,0x49,0x52,0x44,0x0A,0x0F,0x60,0x79, /* 00000528 "PIRD..`y" */
+- 0x01,0x60,0x49,0x52,0x51,0x56,0xA4,0x42, /* 00000530 ".`IRQV.B" */
+- 0x55,0x46,0x42,0x14,0x1B,0x5F,0x53,0x52, /* 00000538 "UFB.._SR" */
+- 0x53,0x01,0x8B,0x68,0x01,0x49,0x52,0x51, /* 00000540 "S..h.IRQ" */
+- 0x31,0x82,0x49,0x52,0x51,0x31,0x60,0x76, /* 00000548 "1.IRQ1`v" */
+- 0x60,0x70,0x60,0x50,0x49,0x52,0x44,0x5B, /* 00000550 "`p`PIRD[" */
+- 0x82,0x44,0x05,0x48,0x50,0x45,0x54,0x08, /* 00000558 ".D.HPET." */
+- 0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x01, /* 00000560 "_HID.A.." */
+- 0x03,0x08,0x5F,0x55,0x49,0x44,0x00,0x14, /* 00000568 ".._UID.." */
+- 0x18,0x5F,0x53,0x54,0x41,0x00,0xA0,0x0C, /* 00000570 "._STA..." */
+- 0x93,0x5E,0x5E,0x5E,0x48,0x50,0x45,0x54, /* 00000578 ".^^^HPET" */
+- 0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,0x0F, /* 00000580 "........" */
+- 0x08,0x5F,0x43,0x52,0x53,0x11,0x1F,0x0A, /* 00000588 "._CRS..." */
+- 0x1C,0x87,0x17,0x00,0x00,0x0D,0x01,0x00, /* 00000590 "........" */
+- 0x00,0x00,0x00,0x00,0x00,0xD0,0xFE,0xFF, /* 00000598 "........" */
+- 0x03,0xD0,0xFE,0x00,0x00,0x00,0x00,0x00, /* 000005A0 "........" */
+- 0x04,0x00,0x00,0x79,0x00,0x14,0x16,0x5F, /* 000005A8 "...y..._" */
+- 0x50,0x52,0x54,0x00,0xA0,0x0A,0x50,0x49, /* 000005B0 "PRT...PI" */
+- 0x43,0x44,0xA4,0x50,0x52,0x54,0x41,0xA4, /* 000005B8 "CD.PRTA." */
+- 0x50,0x52,0x54,0x50,0x08,0x50,0x52,0x54, /* 000005C0 "PRTP.PRT" */
+- 0x50,0x12,0x49,0x70,0x7C,0x12,0x0D,0x04, /* 000005C8 "P.Ip|..." */
+- 0x0C,0xFF,0xFF,0x01,0x00,0x00,0x4C,0x4E, /* 000005D0 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000005D8 "KB......" */
+- 0xFF,0x01,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 000005E0 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01, /* 000005E8 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000005F0 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 000005F8 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000600 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00,0x00, /* 00000608 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000610 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x02,0x00,0x01,0x4C,0x4E, /* 00000618 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000620 "KD......" */
+- 0xFF,0x02,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000628 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000630 "A......." */
+- 0x02,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000638 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x03, /* 00000640 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000648 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x01, /* 00000650 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000658 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x02,0x4C, /* 00000660 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000668 "NKB....." */
+- 0xFF,0xFF,0x03,0x00,0x0A,0x03,0x4C,0x4E, /* 00000670 "......LN" */
+- 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000678 "KC......" */
+- 0xFF,0x04,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000680 "....LNKA" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x04, /* 00000688 "........" */
+- 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000690 "..LNKB.." */
+- 0x0E,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A, /* 00000698 "........" */
+- 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 000006A0 ".LNKC..." */
+- 0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x03, /* 000006A8 "........" */
+- 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 000006B0 "LNKD...." */
+- 0x0C,0xFF,0xFF,0x05,0x00,0x00,0x4C,0x4E, /* 000006B8 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000006C0 "KB......" */
+- 0xFF,0x05,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 000006C8 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05, /* 000006D0 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000006D8 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05,0x00, /* 000006E0 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000006E8 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x06,0x00,0x00, /* 000006F0 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000006F8 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x06,0x00,0x01,0x4C,0x4E, /* 00000700 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000708 "KD......" */
+- 0xFF,0x06,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000710 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000718 "A......." */
+- 0x06,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000720 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x07, /* 00000728 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000730 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x07,0x00,0x01, /* 00000738 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000740 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x02,0x4C, /* 00000748 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000750 "NKB....." */
+- 0xFF,0xFF,0x07,0x00,0x0A,0x03,0x4C,0x4E, /* 00000758 "......LN" */
+- 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000760 "KC......" */
+- 0xFF,0x08,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000768 "....LNKA" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x08, /* 00000770 "........" */
+- 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000778 "..LNKB.." */
+- 0x0E,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A, /* 00000780 "........" */
+- 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000788 ".LNKC..." */
+- 0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A,0x03, /* 00000790 "........" */
+- 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000798 "LNKD...." */
+- 0x0C,0xFF,0xFF,0x09,0x00,0x00,0x4C,0x4E, /* 000007A0 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 000007A8 "KB......" */
+- 0xFF,0x09,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 000007B0 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x09, /* 000007B8 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000007C0 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x09,0x00, /* 000007C8 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000007D0 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x00, /* 000007D8 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000007E0 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x0A,0x00,0x01,0x4C,0x4E, /* 000007E8 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000007F0 "KD......" */
+- 0xFF,0x0A,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 000007F8 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000800 "A......." */
+- 0x0A,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000808 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0B, /* 00000810 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000818 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x0B,0x00,0x01, /* 00000820 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000828 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x02,0x4C, /* 00000830 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000838 "NKB....." */
+- 0xFF,0xFF,0x0B,0x00,0x0A,0x03,0x4C,0x4E, /* 00000840 "......LN" */
+- 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000848 "KC......" */
+- 0xFF,0x0C,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000850 "....LNKA" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0C, /* 00000858 "........" */
+- 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000860 "..LNKB.." */
+- 0x0E,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A, /* 00000868 "........" */
+- 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000870 ".LNKC..." */
+- 0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A,0x03, /* 00000878 "........" */
+- 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000880 "LNKD...." */
+- 0x0C,0xFF,0xFF,0x0D,0x00,0x00,0x4C,0x4E, /* 00000888 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000890 "KB......" */
+- 0xFF,0x0D,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000898 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0D, /* 000008A0 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 000008A8 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x0D,0x00, /* 000008B0 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000008B8 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x00, /* 000008C0 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000008C8 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x0E,0x00,0x01,0x4C,0x4E, /* 000008D0 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000008D8 "KD......" */
+- 0xFF,0x0E,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 000008E0 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 000008E8 "A......." */
+- 0x0E,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 000008F0 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x0F, /* 000008F8 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000900 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x0F,0x00,0x01, /* 00000908 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000910 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x02,0x4C, /* 00000918 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000920 "NKB....." */
+- 0xFF,0xFF,0x0F,0x00,0x0A,0x03,0x4C,0x4E, /* 00000928 "......LN" */
+- 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000930 "KC......" */
+- 0xFF,0x10,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000938 "....LNKA" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x10, /* 00000940 "........" */
+- 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000948 "..LNKB.." */
+- 0x0E,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A, /* 00000950 "........" */
+- 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000958 ".LNKC..." */
+- 0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A,0x03, /* 00000960 "........" */
+- 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000968 "LNKD...." */
+- 0x0C,0xFF,0xFF,0x11,0x00,0x00,0x4C,0x4E, /* 00000970 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000978 "KB......" */
+- 0xFF,0x11,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000980 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x11, /* 00000988 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000990 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x11,0x00, /* 00000998 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 000009A0 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x12,0x00,0x00, /* 000009A8 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 000009B0 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x12,0x00,0x01,0x4C,0x4E, /* 000009B8 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 000009C0 "KD......" */
+- 0xFF,0x12,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 000009C8 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 000009D0 "A......." */
+- 0x12,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 000009D8 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x13, /* 000009E0 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 000009E8 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x13,0x00,0x01, /* 000009F0 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 000009F8 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x02,0x4C, /* 00000A00 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000A08 "NKB....." */
+- 0xFF,0xFF,0x13,0x00,0x0A,0x03,0x4C,0x4E, /* 00000A10 "......LN" */
+- 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000A18 "KC......" */
+- 0xFF,0x14,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000A20 "....LNKA" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x14, /* 00000A28 "........" */
+- 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000A30 "..LNKB.." */
+- 0x0E,0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A, /* 00000A38 "........" */
+- 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000A40 ".LNKC..." */
+- 0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A,0x03, /* 00000A48 "........" */
+- 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000A50 "LNKD...." */
+- 0x0C,0xFF,0xFF,0x15,0x00,0x00,0x4C,0x4E, /* 00000A58 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000A60 "KB......" */
+- 0xFF,0x15,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000A68 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x15, /* 00000A70 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000A78 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x15,0x00, /* 00000A80 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000A88 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x16,0x00,0x00, /* 00000A90 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000A98 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x16,0x00,0x01,0x4C,0x4E, /* 00000AA0 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000AA8 "KD......" */
+- 0xFF,0x16,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000AB0 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000AB8 "A......." */
+- 0x16,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000AC0 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x17, /* 00000AC8 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000AD0 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x17,0x00,0x01, /* 00000AD8 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000AE0 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x17,0x00,0x0A,0x02,0x4C, /* 00000AE8 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000AF0 "NKB....." */
+- 0xFF,0xFF,0x17,0x00,0x0A,0x03,0x4C,0x4E, /* 00000AF8 "......LN" */
+- 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000B00 "KC......" */
+- 0xFF,0x18,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000B08 "....LNKA" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x18, /* 00000B10 "........" */
+- 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000B18 "..LNKB.." */
+- 0x0E,0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A, /* 00000B20 "........" */
+- 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000B28 ".LNKC..." */
+- 0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A,0x03, /* 00000B30 "........" */
+- 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000B38 "LNKD...." */
+- 0x0C,0xFF,0xFF,0x19,0x00,0x00,0x4C,0x4E, /* 00000B40 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000B48 "KB......" */
+- 0xFF,0x19,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000B50 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x19, /* 00000B58 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000B60 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x19,0x00, /* 00000B68 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000B70 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x00, /* 00000B78 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000B80 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x1A,0x00,0x01,0x4C,0x4E, /* 00000B88 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000B90 "KD......" */
+- 0xFF,0x1A,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000B98 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000BA0 "A......." */
+- 0x1A,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000BA8 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1B, /* 00000BB0 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000BB8 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x1B,0x00,0x01, /* 00000BC0 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000BC8 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x1B,0x00,0x0A,0x02,0x4C, /* 00000BD0 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000BD8 "NKB....." */
+- 0xFF,0xFF,0x1B,0x00,0x0A,0x03,0x4C,0x4E, /* 00000BE0 "......LN" */
+- 0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000BE8 "KC......" */
+- 0xFF,0x1C,0x00,0x00,0x4C,0x4E,0x4B,0x41, /* 00000BF0 "....LNKA" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1C, /* 00000BF8 "........" */
+- 0x00,0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12, /* 00000C00 "..LNKB.." */
+- 0x0E,0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A, /* 00000C08 "........" */
+- 0x02,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0E, /* 00000C10 ".LNKC..." */
+- 0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A,0x03, /* 00000C18 "........" */
+- 0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04, /* 00000C20 "LNKD...." */
+- 0x0C,0xFF,0xFF,0x1D,0x00,0x00,0x4C,0x4E, /* 00000C28 "......LN" */
+- 0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF, /* 00000C30 "KB......" */
+- 0xFF,0x1D,0x00,0x01,0x4C,0x4E,0x4B,0x43, /* 00000C38 "....LNKC" */
+- 0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x1D, /* 00000C40 "........" */
+- 0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x44,0x00, /* 00000C48 "...LNKD." */
+- 0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x1D,0x00, /* 00000C50 "........" */
+- 0x0A,0x03,0x4C,0x4E,0x4B,0x41,0x00,0x12, /* 00000C58 "..LNKA.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x00, /* 00000C60 "........" */
+- 0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04, /* 00000C68 "LNKC...." */
+- 0x0C,0xFF,0xFF,0x1E,0x00,0x01,0x4C,0x4E, /* 00000C70 "......LN" */
+- 0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF, /* 00000C78 "KD......" */
+- 0xFF,0x1E,0x00,0x0A,0x02,0x4C,0x4E,0x4B, /* 00000C80 ".....LNK" */
+- 0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF, /* 00000C88 "A......." */
+- 0x1E,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x42, /* 00000C90 "....LNKB" */
+- 0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x1F, /* 00000C98 "........" */
+- 0x00,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12, /* 00000CA0 "..LNKD.." */
+- 0x0D,0x04,0x0C,0xFF,0xFF,0x1F,0x00,0x01, /* 00000CA8 "........" */
+- 0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04, /* 00000CB0 "LNKA...." */
+- 0x0C,0xFF,0xFF,0x1F,0x00,0x0A,0x02,0x4C, /* 00000CB8 ".......L" */
+- 0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,0x0C, /* 00000CC0 "NKB....." */
+- 0xFF,0xFF,0x1F,0x00,0x0A,0x03,0x4C,0x4E, /* 00000CC8 "......LN" */
+- 0x4B,0x43,0x00,0x08,0x50,0x52,0x54,0x41, /* 00000CD0 "KC..PRTA" */
+- 0x12,0x41,0x61,0x7C,0x12,0x0B,0x04,0x0C, /* 00000CD8 ".Aa|...." */
+- 0xFF,0xFF,0x01,0x00,0x00,0x00,0x0A,0x14, /* 00000CE0 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00, /* 00000CE8 "........" */
+- 0x01,0x00,0x0A,0x15,0x12,0x0C,0x04,0x0C, /* 00000CF0 "........" */
+- 0xFF,0xFF,0x01,0x00,0x0A,0x02,0x00,0x0A, /* 00000CF8 "........" */
+- 0x16,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x01, /* 00000D00 "........" */
+- 0x00,0x0A,0x03,0x00,0x0A,0x17,0x12,0x0B, /* 00000D08 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x02,0x00,0x00,0x00, /* 00000D10 "........" */
+- 0x0A,0x18,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000D18 "........" */
+- 0x02,0x00,0x01,0x00,0x0A,0x19,0x12,0x0C, /* 00000D20 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x02, /* 00000D28 "........" */
+- 0x00,0x0A,0x1A,0x12,0x0C,0x04,0x0C,0xFF, /* 00000D30 "........" */
+- 0xFF,0x02,0x00,0x0A,0x03,0x00,0x0A,0x1B, /* 00000D38 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 00000D40 "........" */
+- 0x00,0x00,0x0A,0x1C,0x12,0x0B,0x04,0x0C, /* 00000D48 "........" */
+- 0xFF,0xFF,0x03,0x00,0x01,0x00,0x0A,0x1D, /* 00000D50 "........" */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x03,0x00, /* 00000D58 "........" */
+- 0x0A,0x02,0x00,0x0A,0x1E,0x12,0x0C,0x04, /* 00000D60 "........" */
+- 0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x03,0x00, /* 00000D68 "........" */
+- 0x0A,0x1F,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000D70 "........" */
+- 0x04,0x00,0x00,0x00,0x0A,0x20,0x12,0x0B, /* 00000D78 "..... .." */
+- 0x04,0x0C,0xFF,0xFF,0x04,0x00,0x01,0x00, /* 00000D80 "........" */
+- 0x0A,0x21,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000D88 ".!......" */
+- 0x04,0x00,0x0A,0x02,0x00,0x0A,0x22,0x12, /* 00000D90 "......"." */
+- 0x0C,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A, /* 00000D98 "........" */
+- 0x03,0x00,0x0A,0x23,0x12,0x0B,0x04,0x0C, /* 00000DA0 "...#...." */
+- 0xFF,0xFF,0x05,0x00,0x00,0x00,0x0A,0x24, /* 00000DA8 ".......$" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x05,0x00, /* 00000DB0 "........" */
+- 0x01,0x00,0x0A,0x25,0x12,0x0C,0x04,0x0C, /* 00000DB8 "...%...." */
+- 0xFF,0xFF,0x05,0x00,0x0A,0x02,0x00,0x0A, /* 00000DC0 "........" */
+- 0x26,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x05, /* 00000DC8 "&......." */
+- 0x00,0x0A,0x03,0x00,0x0A,0x27,0x12,0x0B, /* 00000DD0 ".....'.." */
+- 0x04,0x0C,0xFF,0xFF,0x06,0x00,0x00,0x00, /* 00000DD8 "........" */
+- 0x0A,0x28,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000DE0 ".(......" */
+- 0x06,0x00,0x01,0x00,0x0A,0x29,0x12,0x0C, /* 00000DE8 ".....).." */
+- 0x04,0x0C,0xFF,0xFF,0x06,0x00,0x0A,0x02, /* 00000DF0 "........" */
+- 0x00,0x0A,0x2A,0x12,0x0C,0x04,0x0C,0xFF, /* 00000DF8 "..*....." */
+- 0xFF,0x06,0x00,0x0A,0x03,0x00,0x0A,0x2B, /* 00000E00 ".......+" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x07,0x00, /* 00000E08 "........" */
+- 0x00,0x00,0x0A,0x2C,0x12,0x0B,0x04,0x0C, /* 00000E10 "...,...." */
+- 0xFF,0xFF,0x07,0x00,0x01,0x00,0x0A,0x2D, /* 00000E18 ".......-" */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x07,0x00, /* 00000E20 "........" */
+- 0x0A,0x02,0x00,0x0A,0x2E,0x12,0x0C,0x04, /* 00000E28 "........" */
+- 0x0C,0xFF,0xFF,0x07,0x00,0x0A,0x03,0x00, /* 00000E30 "........" */
+- 0x0A,0x2F,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000E38 "./......" */
+- 0x08,0x00,0x00,0x00,0x0A,0x11,0x12,0x0B, /* 00000E40 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x08,0x00,0x01,0x00, /* 00000E48 "........" */
+- 0x0A,0x12,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000E50 "........" */
+- 0x08,0x00,0x0A,0x02,0x00,0x0A,0x13,0x12, /* 00000E58 "........" */
+- 0x0C,0x04,0x0C,0xFF,0xFF,0x08,0x00,0x0A, /* 00000E60 "........" */
+- 0x03,0x00,0x0A,0x14,0x12,0x0B,0x04,0x0C, /* 00000E68 "........" */
+- 0xFF,0xFF,0x09,0x00,0x00,0x00,0x0A,0x15, /* 00000E70 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x09,0x00, /* 00000E78 "........" */
+- 0x01,0x00,0x0A,0x16,0x12,0x0C,0x04,0x0C, /* 00000E80 "........" */
+- 0xFF,0xFF,0x09,0x00,0x0A,0x02,0x00,0x0A, /* 00000E88 "........" */
+- 0x17,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x09, /* 00000E90 "........" */
+- 0x00,0x0A,0x03,0x00,0x0A,0x18,0x12,0x0B, /* 00000E98 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x00,0x00, /* 00000EA0 "........" */
+- 0x0A,0x19,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000EA8 "........" */
+- 0x0A,0x00,0x01,0x00,0x0A,0x1A,0x12,0x0C, /* 00000EB0 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x0A,0x00,0x0A,0x02, /* 00000EB8 "........" */
+- 0x00,0x0A,0x1B,0x12,0x0C,0x04,0x0C,0xFF, /* 00000EC0 "........" */
+- 0xFF,0x0A,0x00,0x0A,0x03,0x00,0x0A,0x1C, /* 00000EC8 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0B,0x00, /* 00000ED0 "........" */
+- 0x00,0x00,0x0A,0x1D,0x12,0x0B,0x04,0x0C, /* 00000ED8 "........" */
+- 0xFF,0xFF,0x0B,0x00,0x01,0x00,0x0A,0x1E, /* 00000EE0 "........" */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0B,0x00, /* 00000EE8 "........" */
+- 0x0A,0x02,0x00,0x0A,0x1F,0x12,0x0C,0x04, /* 00000EF0 "........" */
+- 0x0C,0xFF,0xFF,0x0B,0x00,0x0A,0x03,0x00, /* 00000EF8 "........" */
+- 0x0A,0x20,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000F00 ". ......" */
+- 0x0C,0x00,0x00,0x00,0x0A,0x21,0x12,0x0B, /* 00000F08 ".....!.." */
+- 0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x01,0x00, /* 00000F10 "........" */
+- 0x0A,0x22,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000F18 "."......" */
+- 0x0C,0x00,0x0A,0x02,0x00,0x0A,0x23,0x12, /* 00000F20 "......#." */
+- 0x0C,0x04,0x0C,0xFF,0xFF,0x0C,0x00,0x0A, /* 00000F28 "........" */
+- 0x03,0x00,0x0A,0x24,0x12,0x0B,0x04,0x0C, /* 00000F30 "...$...." */
+- 0xFF,0xFF,0x0D,0x00,0x00,0x00,0x0A,0x25, /* 00000F38 ".......%" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0D,0x00, /* 00000F40 "........" */
+- 0x01,0x00,0x0A,0x26,0x12,0x0C,0x04,0x0C, /* 00000F48 "...&...." */
+- 0xFF,0xFF,0x0D,0x00,0x0A,0x02,0x00,0x0A, /* 00000F50 "........" */
+- 0x27,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0D, /* 00000F58 "'......." */
+- 0x00,0x0A,0x03,0x00,0x0A,0x28,0x12,0x0B, /* 00000F60 ".....(.." */
+- 0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x00,0x00, /* 00000F68 "........" */
+- 0x0A,0x29,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000F70 ".)......" */
+- 0x0E,0x00,0x01,0x00,0x0A,0x2A,0x12,0x0C, /* 00000F78 ".....*.." */
+- 0x04,0x0C,0xFF,0xFF,0x0E,0x00,0x0A,0x02, /* 00000F80 "........" */
+- 0x00,0x0A,0x2B,0x12,0x0C,0x04,0x0C,0xFF, /* 00000F88 "..+....." */
+- 0xFF,0x0E,0x00,0x0A,0x03,0x00,0x0A,0x2C, /* 00000F90 ".......," */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x0F,0x00, /* 00000F98 "........" */
+- 0x00,0x00,0x0A,0x2D,0x12,0x0B,0x04,0x0C, /* 00000FA0 "...-...." */
+- 0xFF,0xFF,0x0F,0x00,0x01,0x00,0x0A,0x2E, /* 00000FA8 "........" */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x0F,0x00, /* 00000FB0 "........" */
+- 0x0A,0x02,0x00,0x0A,0x2F,0x12,0x0C,0x04, /* 00000FB8 "..../..." */
+- 0x0C,0xFF,0xFF,0x0F,0x00,0x0A,0x03,0x00, /* 00000FC0 "........" */
+- 0x0A,0x10,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00000FC8 "........" */
+- 0x10,0x00,0x00,0x00,0x0A,0x12,0x12,0x0B, /* 00000FD0 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x10,0x00,0x01,0x00, /* 00000FD8 "........" */
+- 0x0A,0x13,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00000FE0 "........" */
+- 0x10,0x00,0x0A,0x02,0x00,0x0A,0x14,0x12, /* 00000FE8 "........" */
+- 0x0C,0x04,0x0C,0xFF,0xFF,0x10,0x00,0x0A, /* 00000FF0 "........" */
+- 0x03,0x00,0x0A,0x15,0x12,0x0B,0x04,0x0C, /* 00000FF8 "........" */
+- 0xFF,0xFF,0x11,0x00,0x00,0x00,0x0A,0x16, /* 00001000 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x11,0x00, /* 00001008 "........" */
+- 0x01,0x00,0x0A,0x17,0x12,0x0C,0x04,0x0C, /* 00001010 "........" */
+- 0xFF,0xFF,0x11,0x00,0x0A,0x02,0x00,0x0A, /* 00001018 "........" */
+- 0x18,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x11, /* 00001020 "........" */
+- 0x00,0x0A,0x03,0x00,0x0A,0x19,0x12,0x0B, /* 00001028 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x12,0x00,0x00,0x00, /* 00001030 "........" */
+- 0x0A,0x1A,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001038 "........" */
+- 0x12,0x00,0x01,0x00,0x0A,0x1B,0x12,0x0C, /* 00001040 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x12,0x00,0x0A,0x02, /* 00001048 "........" */
+- 0x00,0x0A,0x1C,0x12,0x0C,0x04,0x0C,0xFF, /* 00001050 "........" */
+- 0xFF,0x12,0x00,0x0A,0x03,0x00,0x0A,0x1D, /* 00001058 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x13,0x00, /* 00001060 "........" */
+- 0x00,0x00,0x0A,0x1E,0x12,0x0B,0x04,0x0C, /* 00001068 "........" */
+- 0xFF,0xFF,0x13,0x00,0x01,0x00,0x0A,0x1F, /* 00001070 "........" */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x13,0x00, /* 00001078 "........" */
+- 0x0A,0x02,0x00,0x0A,0x20,0x12,0x0C,0x04, /* 00001080 ".... ..." */
+- 0x0C,0xFF,0xFF,0x13,0x00,0x0A,0x03,0x00, /* 00001088 "........" */
+- 0x0A,0x21,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001090 ".!......" */
+- 0x14,0x00,0x00,0x00,0x0A,0x22,0x12,0x0B, /* 00001098 ".....".." */
+- 0x04,0x0C,0xFF,0xFF,0x14,0x00,0x01,0x00, /* 000010A0 "........" */
+- 0x0A,0x23,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 000010A8 ".#......" */
+- 0x14,0x00,0x0A,0x02,0x00,0x0A,0x24,0x12, /* 000010B0 "......$." */
+- 0x0C,0x04,0x0C,0xFF,0xFF,0x14,0x00,0x0A, /* 000010B8 "........" */
+- 0x03,0x00,0x0A,0x25,0x12,0x0B,0x04,0x0C, /* 000010C0 "...%...." */
+- 0xFF,0xFF,0x15,0x00,0x00,0x00,0x0A,0x26, /* 000010C8 ".......&" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x15,0x00, /* 000010D0 "........" */
+- 0x01,0x00,0x0A,0x27,0x12,0x0C,0x04,0x0C, /* 000010D8 "...'...." */
+- 0xFF,0xFF,0x15,0x00,0x0A,0x02,0x00,0x0A, /* 000010E0 "........" */
+- 0x28,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x15, /* 000010E8 "(......." */
+- 0x00,0x0A,0x03,0x00,0x0A,0x29,0x12,0x0B, /* 000010F0 ".....).." */
+- 0x04,0x0C,0xFF,0xFF,0x16,0x00,0x00,0x00, /* 000010F8 "........" */
+- 0x0A,0x2A,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001100 ".*......" */
+- 0x16,0x00,0x01,0x00,0x0A,0x2B,0x12,0x0C, /* 00001108 ".....+.." */
+- 0x04,0x0C,0xFF,0xFF,0x16,0x00,0x0A,0x02, /* 00001110 "........" */
+- 0x00,0x0A,0x2C,0x12,0x0C,0x04,0x0C,0xFF, /* 00001118 "..,....." */
+- 0xFF,0x16,0x00,0x0A,0x03,0x00,0x0A,0x2D, /* 00001120 ".......-" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x17,0x00, /* 00001128 "........" */
+- 0x00,0x00,0x0A,0x2E,0x12,0x0B,0x04,0x0C, /* 00001130 "........" */
+- 0xFF,0xFF,0x17,0x00,0x01,0x00,0x0A,0x2F, /* 00001138 "......./" */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x17,0x00, /* 00001140 "........" */
+- 0x0A,0x02,0x00,0x0A,0x10,0x12,0x0C,0x04, /* 00001148 "........" */
+- 0x0C,0xFF,0xFF,0x17,0x00,0x0A,0x03,0x00, /* 00001150 "........" */
+- 0x0A,0x11,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001158 "........" */
+- 0x18,0x00,0x00,0x00,0x0A,0x13,0x12,0x0B, /* 00001160 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x18,0x00,0x01,0x00, /* 00001168 "........" */
+- 0x0A,0x14,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00001170 "........" */
+- 0x18,0x00,0x0A,0x02,0x00,0x0A,0x15,0x12, /* 00001178 "........" */
+- 0x0C,0x04,0x0C,0xFF,0xFF,0x18,0x00,0x0A, /* 00001180 "........" */
+- 0x03,0x00,0x0A,0x16,0x12,0x0B,0x04,0x0C, /* 00001188 "........" */
+- 0xFF,0xFF,0x19,0x00,0x00,0x00,0x0A,0x17, /* 00001190 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x19,0x00, /* 00001198 "........" */
+- 0x01,0x00,0x0A,0x18,0x12,0x0C,0x04,0x0C, /* 000011A0 "........" */
+- 0xFF,0xFF,0x19,0x00,0x0A,0x02,0x00,0x0A, /* 000011A8 "........" */
+- 0x19,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x19, /* 000011B0 "........" */
+- 0x00,0x0A,0x03,0x00,0x0A,0x1A,0x12,0x0B, /* 000011B8 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x00,0x00, /* 000011C0 "........" */
+- 0x0A,0x1B,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 000011C8 "........" */
+- 0x1A,0x00,0x01,0x00,0x0A,0x1C,0x12,0x0C, /* 000011D0 "........" */
+- 0x04,0x0C,0xFF,0xFF,0x1A,0x00,0x0A,0x02, /* 000011D8 "........" */
+- 0x00,0x0A,0x1D,0x12,0x0C,0x04,0x0C,0xFF, /* 000011E0 "........" */
+- 0xFF,0x1A,0x00,0x0A,0x03,0x00,0x0A,0x1E, /* 000011E8 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1B,0x00, /* 000011F0 "........" */
+- 0x00,0x00,0x0A,0x1F,0x12,0x0B,0x04,0x0C, /* 000011F8 "........" */
+- 0xFF,0xFF,0x1B,0x00,0x01,0x00,0x0A,0x20, /* 00001200 "....... " */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1B,0x00, /* 00001208 "........" */
+- 0x0A,0x02,0x00,0x0A,0x21,0x12,0x0C,0x04, /* 00001210 "....!..." */
+- 0x0C,0xFF,0xFF,0x1B,0x00,0x0A,0x03,0x00, /* 00001218 "........" */
+- 0x0A,0x22,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001220 "."......" */
+- 0x1C,0x00,0x00,0x00,0x0A,0x23,0x12,0x0B, /* 00001228 ".....#.." */
+- 0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x01,0x00, /* 00001230 "........" */
+- 0x0A,0x24,0x12,0x0C,0x04,0x0C,0xFF,0xFF, /* 00001238 ".$......" */
+- 0x1C,0x00,0x0A,0x02,0x00,0x0A,0x25,0x12, /* 00001240 "......%." */
+- 0x0C,0x04,0x0C,0xFF,0xFF,0x1C,0x00,0x0A, /* 00001248 "........" */
+- 0x03,0x00,0x0A,0x26,0x12,0x0B,0x04,0x0C, /* 00001250 "...&...." */
+- 0xFF,0xFF,0x1D,0x00,0x00,0x00,0x0A,0x27, /* 00001258 ".......'" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1D,0x00, /* 00001260 "........" */
+- 0x01,0x00,0x0A,0x28,0x12,0x0C,0x04,0x0C, /* 00001268 "...(...." */
+- 0xFF,0xFF,0x1D,0x00,0x0A,0x02,0x00,0x0A, /* 00001270 "........" */
+- 0x29,0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1D, /* 00001278 ")......." */
+- 0x00,0x0A,0x03,0x00,0x0A,0x2A,0x12,0x0B, /* 00001280 ".....*.." */
+- 0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x00,0x00, /* 00001288 "........" */
+- 0x0A,0x2B,0x12,0x0B,0x04,0x0C,0xFF,0xFF, /* 00001290 ".+......" */
+- 0x1E,0x00,0x01,0x00,0x0A,0x2C,0x12,0x0C, /* 00001298 ".....,.." */
+- 0x04,0x0C,0xFF,0xFF,0x1E,0x00,0x0A,0x02, /* 000012A0 "........" */
+- 0x00,0x0A,0x2D,0x12,0x0C,0x04,0x0C,0xFF, /* 000012A8 "..-....." */
+- 0xFF,0x1E,0x00,0x0A,0x03,0x00,0x0A,0x2E, /* 000012B0 "........" */
+- 0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x1F,0x00, /* 000012B8 "........" */
+- 0x00,0x00,0x0A,0x2F,0x12,0x0B,0x04,0x0C, /* 000012C0 ".../...." */
+- 0xFF,0xFF,0x1F,0x00,0x01,0x00,0x0A,0x10, /* 000012C8 "........" */
+- 0x12,0x0C,0x04,0x0C,0xFF,0xFF,0x1F,0x00, /* 000012D0 "........" */
+- 0x0A,0x02,0x00,0x0A,0x11,0x12,0x0C,0x04, /* 000012D8 "........" */
+- 0x0C,0xFF,0xFF,0x1F,0x00,0x0A,0x03,0x00, /* 000012E0 "........" */
+- 0x0A,0x12,0x5B,0x82,0x46,0x37,0x49,0x53, /* 000012E8 "..[.F7IS" */
+- 0x41,0x5F,0x08,0x5F,0x41,0x44,0x52,0x0C, /* 000012F0 "A_._ADR." */
+- 0x00,0x00,0x01,0x00,0x5B,0x80,0x50,0x49, /* 000012F8 "....[.PI" */
+- 0x52,0x51,0x02,0x0A,0x60,0x0A,0x04,0x10, /* 00001300 "RQ..`..." */
+- 0x2E,0x5C,0x00,0x5B,0x81,0x29,0x5C,0x2F, /* 00001308 ".\.[.)\/" */
+- 0x04,0x5F,0x53,0x42,0x5F,0x50,0x43,0x49, /* 00001310 "._SB_PCI" */
+- 0x30,0x49,0x53,0x41,0x5F,0x50,0x49,0x52, /* 00001318 "0ISA_PIR" */
+- 0x51,0x01,0x50,0x49,0x52,0x41,0x08,0x50, /* 00001320 "Q.PIRA.P" */
+- 0x49,0x52,0x42,0x08,0x50,0x49,0x52,0x43, /* 00001328 "IRB.PIRC" */
+- 0x08,0x50,0x49,0x52,0x44,0x08,0x5B,0x82, /* 00001330 ".PIRD.[." */
+- 0x46,0x0B,0x53,0x59,0x53,0x52,0x08,0x5F, /* 00001338 "F.SYSR._" */
+- 0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x02, /* 00001340 "HID.A..." */
+- 0x08,0x5F,0x55,0x49,0x44,0x01,0x08,0x43, /* 00001348 "._UID..C" */
+- 0x52,0x53,0x5F,0x11,0x4E,0x08,0x0A,0x8A, /* 00001350 "RS_.N..." */
+- 0x47,0x01,0x10,0x00,0x10,0x00,0x00,0x10, /* 00001358 "G......." */
+- 0x47,0x01,0x22,0x00,0x22,0x00,0x00,0x0C, /* 00001360 "G."."..." */
+- 0x47,0x01,0x30,0x00,0x30,0x00,0x00,0x10, /* 00001368 "G.0.0..." */
+- 0x47,0x01,0x44,0x00,0x44,0x00,0x00,0x1C, /* 00001370 "G.D.D..." */
+- 0x47,0x01,0x62,0x00,0x62,0x00,0x00,0x02, /* 00001378 "G.b.b..." */
+- 0x47,0x01,0x65,0x00,0x65,0x00,0x00,0x0B, /* 00001380 "G.e.e..." */
+- 0x47,0x01,0x72,0x00,0x72,0x00,0x00,0x0E, /* 00001388 "G.r.r..." */
+- 0x47,0x01,0x80,0x00,0x80,0x00,0x00,0x01, /* 00001390 "G......." */
+- 0x47,0x01,0x84,0x00,0x84,0x00,0x00,0x03, /* 00001398 "G......." */
+- 0x47,0x01,0x88,0x00,0x88,0x00,0x00,0x01, /* 000013A0 "G......." */
+- 0x47,0x01,0x8C,0x00,0x8C,0x00,0x00,0x03, /* 000013A8 "G......." */
+- 0x47,0x01,0x90,0x00,0x90,0x00,0x00,0x10, /* 000013B0 "G......." */
+- 0x47,0x01,0xA2,0x00,0xA2,0x00,0x00,0x1C, /* 000013B8 "G......." */
+- 0x47,0x01,0xE0,0x00,0xE0,0x00,0x00,0x10, /* 000013C0 "G......." */
+- 0x47,0x01,0xA0,0x08,0xA0,0x08,0x00,0x04, /* 000013C8 "G......." */
+- 0x47,0x01,0xC0,0x0C,0xC0,0x0C,0x00,0x10, /* 000013D0 "G......." */
+- 0x47,0x01,0xD0,0x04,0xD0,0x04,0x00,0x02, /* 000013D8 "G......." */
+- 0x79,0x00,0x14,0x0B,0x5F,0x43,0x52,0x53, /* 000013E0 "y..._CRS" */
+- 0x00,0xA4,0x43,0x52,0x53,0x5F,0x5B,0x82, /* 000013E8 "..CRS_[." */
+- 0x2B,0x50,0x49,0x43,0x5F,0x08,0x5F,0x48, /* 000013F0 "+PIC_._H" */
+- 0x49,0x44,0x0B,0x41,0xD0,0x08,0x5F,0x43, /* 000013F8 "ID.A.._C" */
+- 0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01, /* 00001400 "RS....G." */
+- 0x20,0x00,0x20,0x00,0x01,0x02,0x47,0x01, /* 00001408 " . ...G." */
+- 0xA0,0x00,0xA0,0x00,0x01,0x02,0x22,0x04, /* 00001410 "......"." */
+- 0x00,0x79,0x00,0x5B,0x82,0x47,0x05,0x44, /* 00001418 ".y.[.G.D" */
+- 0x4D,0x41,0x30,0x08,0x5F,0x48,0x49,0x44, /* 00001420 "MA0._HID" */
+- 0x0C,0x41,0xD0,0x02,0x00,0x08,0x5F,0x43, /* 00001428 ".A...._C" */
+- 0x52,0x53,0x11,0x41,0x04,0x0A,0x3D,0x2A, /* 00001430 "RS.A..=*" */
+- 0x10,0x04,0x47,0x01,0x00,0x00,0x00,0x00, /* 00001438 "..G....." */
+- 0x00,0x10,0x47,0x01,0x81,0x00,0x81,0x00, /* 00001440 "..G....." */
+- 0x00,0x03,0x47,0x01,0x87,0x00,0x87,0x00, /* 00001448 "..G....." */
+- 0x00,0x01,0x47,0x01,0x89,0x00,0x89,0x00, /* 00001450 "..G....." */
+- 0x00,0x03,0x47,0x01,0x8F,0x00,0x8F,0x00, /* 00001458 "..G....." */
+- 0x00,0x01,0x47,0x01,0xC0,0x00,0xC0,0x00, /* 00001460 "..G....." */
+- 0x00,0x20,0x47,0x01,0x80,0x04,0x80,0x04, /* 00001468 ". G....." */
+- 0x00,0x10,0x79,0x00,0x5B,0x82,0x25,0x54, /* 00001470 "..y.[.%T" */
+- 0x4D,0x52,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00001478 "MR_._HID" */
+- 0x0C,0x41,0xD0,0x01,0x00,0x08,0x5F,0x43, /* 00001480 ".A...._C" */
+- 0x52,0x53,0x11,0x10,0x0A,0x0D,0x47,0x01, /* 00001488 "RS....G." */
+- 0x40,0x00,0x40,0x00,0x00,0x04,0x22,0x01, /* 00001490 "@.@..."." */
+- 0x00,0x79,0x00,0x5B,0x82,0x25,0x52,0x54, /* 00001498 ".y.[.%RT" */
+- 0x43,0x5F,0x08,0x5F,0x48,0x49,0x44,0x0C, /* 000014A0 "C_._HID." */
+- 0x41,0xD0,0x0B,0x00,0x08,0x5F,0x43,0x52, /* 000014A8 "A...._CR" */
+- 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x70, /* 000014B0 "S....G.p" */
+- 0x00,0x70,0x00,0x00,0x02,0x22,0x00,0x01, /* 000014B8 ".p...".." */
+- 0x79,0x00,0x5B,0x82,0x22,0x53,0x50,0x4B, /* 000014C0 "y.[."SPK" */
+- 0x52,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000014C8 "R._HID.A" */
+- 0xD0,0x08,0x00,0x08,0x5F,0x43,0x52,0x53, /* 000014D0 "...._CRS" */
+- 0x11,0x0D,0x0A,0x0A,0x47,0x01,0x61,0x00, /* 000014D8 "....G.a." */
+- 0x61,0x00,0x00,0x01,0x79,0x00,0x5B,0x82, /* 000014E0 "a...y.[." */
+- 0x31,0x50,0x53,0x32,0x4D,0x08,0x5F,0x48, /* 000014E8 "1PS2M._H" */
+- 0x49,0x44,0x0C,0x41,0xD0,0x0F,0x13,0x08, /* 000014F0 "ID.A...." */
+- 0x5F,0x43,0x49,0x44,0x0C,0x41,0xD0,0x0F, /* 000014F8 "_CID.A.." */
+- 0x13,0x14,0x09,0x5F,0x53,0x54,0x41,0x00, /* 00001500 "..._STA." */
+- 0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53, /* 00001508 "...._CRS" */
+- 0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79, /* 00001510 "...."..y" */
+- 0x00,0x5B,0x82,0x42,0x04,0x50,0x53,0x32, /* 00001518 ".[.B.PS2" */
+- 0x4B,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00001520 "K._HID.A" */
+- 0xD0,0x03,0x03,0x08,0x5F,0x43,0x49,0x44, /* 00001528 "...._CID" */
+- 0x0C,0x41,0xD0,0x03,0x0B,0x14,0x09,0x5F, /* 00001530 ".A....._" */
+- 0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,0x08, /* 00001538 "STA....." */
+- 0x5F,0x43,0x52,0x53,0x11,0x18,0x0A,0x15, /* 00001540 "_CRS...." */
+- 0x47,0x01,0x60,0x00,0x60,0x00,0x00,0x01, /* 00001548 "G.`.`..." */
+- 0x47,0x01,0x64,0x00,0x64,0x00,0x00,0x01, /* 00001550 "G.d.d..." */
+- 0x22,0x02,0x00,0x79,0x00,0x5B,0x82,0x3A, /* 00001558 ""..y.[.:" */
+- 0x46,0x44,0x43,0x30,0x08,0x5F,0x48,0x49, /* 00001560 "FDC0._HI" */
+- 0x44,0x0C,0x41,0xD0,0x07,0x00,0x14,0x09, /* 00001568 "D.A....." */
+- 0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F, /* 00001570 "_STA...." */
+- 0x08,0x5F,0x43,0x52,0x53,0x11,0x1B,0x0A, /* 00001578 "._CRS..." */
+- 0x18,0x47,0x01,0xF0,0x03,0xF0,0x03,0x01, /* 00001580 ".G......" */
+- 0x06,0x47,0x01,0xF7,0x03,0xF7,0x03,0x01, /* 00001588 ".G......" */
+- 0x01,0x22,0x40,0x00,0x2A,0x04,0x00,0x79, /* 00001590 "."@.*..y" */
+- 0x00,0x5B,0x82,0x46,0x04,0x55,0x41,0x52, /* 00001598 ".[.F.UAR" */
+- 0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000015A0 "1._HID.A" */
+- 0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,0x44, /* 000015A8 "...._UID" */
+- 0x01,0x14,0x19,0x5F,0x53,0x54,0x41,0x00, /* 000015B0 "..._STA." */
+- 0xA0,0x0D,0x93,0x5E,0x5E,0x5E,0x5E,0x55, /* 000015B8 "...^^^^U" */
+- 0x41,0x52,0x31,0x00,0xA4,0x00,0xA1,0x04, /* 000015C0 "AR1....." */
+- 0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53, /* 000015C8 "...._CRS" */
+- 0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,0x03, /* 000015D0 "....G..." */
+- 0xF8,0x03,0x08,0x08,0x22,0x10,0x00,0x79, /* 000015D8 "...."..y" */
+- 0x00,0x5B,0x82,0x47,0x04,0x55,0x41,0x52, /* 000015E0 ".[.G.UAR" */
+- 0x32,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 000015E8 "2._HID.A" */
+- 0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,0x44, /* 000015F0 "...._UID" */
+- 0x0A,0x02,0x14,0x19,0x5F,0x53,0x54,0x41, /* 000015F8 "...._STA" */
+- 0x00,0xA0,0x0D,0x93,0x5E,0x5E,0x5E,0x5E, /* 00001600 "....^^^^" */
+- 0x55,0x41,0x52,0x32,0x00,0xA4,0x00,0xA1, /* 00001608 "UAR2...." */
+- 0x04,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 00001610 "....._CR" */
+- 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8, /* 00001618 "S....G.." */
+- 0x02,0xF8,0x02,0x08,0x08,0x22,0x08,0x00, /* 00001620 ".....".." */
+- 0x79,0x00,0x5B,0x82,0x36,0x4C,0x54,0x50, /* 00001628 "y.[.6LTP" */
+- 0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41, /* 00001630 "1._HID.A" */
+- 0xD0,0x04,0x00,0x08,0x5F,0x55,0x49,0x44, /* 00001638 "...._UID" */
+- 0x0A,0x02,0x14,0x09,0x5F,0x53,0x54,0x41, /* 00001640 "...._STA" */
+- 0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52, /* 00001648 "....._CR" */
+- 0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x78, /* 00001650 "S....G.x" */
+- 0x03,0x78,0x03,0x08,0x08,0x22,0x80,0x00, /* 00001658 ".x...".." */
+- 0x79,0x00,0x5B,0x82,0x49,0x0A,0x53,0x30, /* 00001660 "y.[.I.S0" */
+- 0x30,0x5F,0x08,0x5F,0x41,0x44,0x52,0x00, /* 00001668 "0_._ADR." */
+- 0x08,0x5F,0x53,0x55,0x4E,0x00,0x14,0x1F, /* 00001670 "._SUN..." */
+- 0x5F,0x50,0x53,0x30,0x00,0x70,0x00,0x5C, /* 00001678 "_PS0.p.\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001680 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00001688 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x1F, /* 00001690 "PEDPT2.." */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x00,0x5C, /* 00001698 "_PS3.p.\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000016A0 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F,0x47, /* 000016A8 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x2B, /* 000016B0 "PEDPT2.+" */
+- 0x5F,0x45,0x4A,0x30,0x01,0x70,0x00,0x5C, /* 000016B8 "_EJ0.p.\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000016C0 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x88,0x5C,0x2E,0x5F,0x47, /* 000016C8 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x70,0x01, /* 000016D0 "PEDPT2p." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x50,0x48, /* 000016D8 "\._GPEPH" */
+- 0x30,0x30,0x14,0x2A,0x5F,0x53,0x54,0x41, /* 000016E0 "00.*_STA" */
+- 0x00,0x70,0x00,0x5C,0x2E,0x5F,0x47,0x50, /* 000016E8 ".p.\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x89, /* 000016F0 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 000016F8 "\._GPEDP" */
+- 0x54,0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50, /* 00001700 "T2.\._GP" */
+- 0x45,0x50,0x48,0x30,0x30,0x5B,0x82,0x4D, /* 00001708 "EPH00[.M" */
+- 0x0A,0x53,0x30,0x31,0x5F,0x08,0x5F,0x41, /* 00001710 ".S01_._A" */
+- 0x44,0x52,0x0C,0x00,0x00,0x01,0x00,0x08, /* 00001718 "DR......" */
+- 0x5F,0x53,0x55,0x4E,0x01,0x14,0x1F,0x5F, /* 00001720 "_SUN..._" */
+- 0x50,0x53,0x30,0x00,0x70,0x01,0x5C,0x2E, /* 00001728 "PS0.p.\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001730 "_GPEDPT1" */
+- 0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47,0x50, /* 00001738 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0x14,0x1F,0x5F, /* 00001740 "EDPT2.._" */
+- 0x50,0x53,0x33,0x00,0x70,0x01,0x5C,0x2E, /* 00001748 "PS3.p.\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001750 "_GPEDPT1" */
+- 0x70,0x0A,0x83,0x5C,0x2E,0x5F,0x47,0x50, /* 00001758 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0x14,0x2B,0x5F, /* 00001760 "EDPT2.+_" */
+- 0x45,0x4A,0x30,0x01,0x70,0x01,0x5C,0x2E, /* 00001768 "EJ0.p.\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001770 "_GPEDPT1" */
+- 0x70,0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50, /* 00001778 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0x70,0x01,0x5C, /* 00001780 "EDPT2p.\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x50,0x48,0x30, /* 00001788 "._GPEPH0" */
+- 0x31,0x14,0x2A,0x5F,0x53,0x54,0x41,0x00, /* 00001790 "1.*_STA." */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001798 "p.\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 000017A0 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000017A8 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000017B0 "2.\._GPE" */
+- 0x50,0x48,0x30,0x31,0x5B,0x82,0x42,0x0B, /* 000017B8 "PH01[.B." */
+- 0x53,0x30,0x32,0x5F,0x08,0x5F,0x41,0x44, /* 000017C0 "S02_._AD" */
+- 0x52,0x0C,0x00,0x00,0x02,0x00,0x08,0x5F, /* 000017C8 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x02,0x14,0x20,0x5F, /* 000017D0 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x02,0x5C, /* 000017D8 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000017E0 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 000017E8 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 000017F0 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x02, /* 000017F8 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001800 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00001808 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00001810 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00001818 ",_EJ0.p." */
+- 0x02,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001820 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00001828 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00001830 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001838 "p.\._GPE" */
+- 0x50,0x48,0x30,0x32,0x14,0x2B,0x5F,0x53, /* 00001840 "PH02.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x02,0x5C,0x2E, /* 00001848 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001850 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00001858 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00001860 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x32, /* 00001868 "_GPEPH02" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x30,0x33,0x5F, /* 00001870 "[.B.S03_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00001878 "._ADR..." */
+- 0x03,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00001880 "..._SUN." */
+- 0x03,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00001888 ".. _PS0." */
+- 0x70,0x0A,0x03,0x5C,0x2E,0x5F,0x47,0x50, /* 00001890 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00001898 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 000018A0 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 000018A8 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x03,0x5C,0x2E,0x5F,0x47, /* 000018B0 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 000018B8 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 000018C0 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 000018C8 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x03,0x5C,0x2E,0x5F, /* 000018D0 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 000018D8 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000018E0 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 000018E8 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x33, /* 000018F0 "_GPEPH03" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 000018F8 ".+_STA.p" */
+- 0x0A,0x03,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001900 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00001908 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001910 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001918 "2.\._GPE" */
+- 0x50,0x48,0x30,0x33,0x5B,0x82,0x42,0x0B, /* 00001920 "PH03[.B." */
+- 0x53,0x30,0x34,0x5F,0x08,0x5F,0x41,0x44, /* 00001928 "S04_._AD" */
+- 0x52,0x0C,0x00,0x00,0x04,0x00,0x08,0x5F, /* 00001930 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x04,0x14,0x20,0x5F, /* 00001938 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x04,0x5C, /* 00001940 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001948 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00001950 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00001958 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x04, /* 00001960 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001968 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00001970 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00001978 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00001980 ",_EJ0.p." */
+- 0x04,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001988 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00001990 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00001998 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000019A0 "p.\._GPE" */
+- 0x50,0x48,0x30,0x34,0x14,0x2B,0x5F,0x53, /* 000019A8 "PH04.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x04,0x5C,0x2E, /* 000019B0 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 000019B8 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 000019C0 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 000019C8 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x34, /* 000019D0 "_GPEPH04" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x30,0x35,0x5F, /* 000019D8 "[.B.S05_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 000019E0 "._ADR..." */
+- 0x05,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 000019E8 "..._SUN." */
+- 0x05,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 000019F0 ".. _PS0." */
+- 0x70,0x0A,0x05,0x5C,0x2E,0x5F,0x47,0x50, /* 000019F8 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00001A00 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001A08 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00001A10 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x05,0x5C,0x2E,0x5F,0x47, /* 00001A18 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00001A20 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001A28 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00001A30 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x05,0x5C,0x2E,0x5F, /* 00001A38 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00001A40 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001A48 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00001A50 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x35, /* 00001A58 "_GPEPH05" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00001A60 ".+_STA.p" */
+- 0x0A,0x05,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001A68 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00001A70 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001A78 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001A80 "2.\._GPE" */
+- 0x50,0x48,0x30,0x35,0x5B,0x82,0x42,0x0B, /* 00001A88 "PH05[.B." */
+- 0x53,0x30,0x36,0x5F,0x08,0x5F,0x41,0x44, /* 00001A90 "S06_._AD" */
+- 0x52,0x0C,0x00,0x00,0x06,0x00,0x08,0x5F, /* 00001A98 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x06,0x14,0x20,0x5F, /* 00001AA0 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x06,0x5C, /* 00001AA8 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001AB0 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00001AB8 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00001AC0 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x06, /* 00001AC8 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001AD0 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00001AD8 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00001AE0 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00001AE8 ",_EJ0.p." */
+- 0x06,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001AF0 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00001AF8 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00001B00 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001B08 "p.\._GPE" */
+- 0x50,0x48,0x30,0x36,0x14,0x2B,0x5F,0x53, /* 00001B10 "PH06.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x06,0x5C,0x2E, /* 00001B18 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001B20 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00001B28 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00001B30 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x36, /* 00001B38 "_GPEPH06" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x30,0x37,0x5F, /* 00001B40 "[.B.S07_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00001B48 "._ADR..." */
+- 0x07,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00001B50 "..._SUN." */
+- 0x07,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00001B58 ".. _PS0." */
+- 0x70,0x0A,0x07,0x5C,0x2E,0x5F,0x47,0x50, /* 00001B60 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00001B68 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001B70 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00001B78 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x07,0x5C,0x2E,0x5F,0x47, /* 00001B80 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00001B88 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001B90 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00001B98 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x07,0x5C,0x2E,0x5F, /* 00001BA0 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00001BA8 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001BB0 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00001BB8 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x37, /* 00001BC0 "_GPEPH07" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00001BC8 ".+_STA.p" */
+- 0x0A,0x07,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001BD0 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00001BD8 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001BE0 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001BE8 "2.\._GPE" */
+- 0x50,0x48,0x30,0x37,0x5B,0x82,0x42,0x0B, /* 00001BF0 "PH07[.B." */
+- 0x53,0x30,0x38,0x5F,0x08,0x5F,0x41,0x44, /* 00001BF8 "S08_._AD" */
+- 0x52,0x0C,0x00,0x00,0x08,0x00,0x08,0x5F, /* 00001C00 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x08,0x14,0x20,0x5F, /* 00001C08 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x08,0x5C, /* 00001C10 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001C18 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00001C20 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00001C28 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x08, /* 00001C30 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001C38 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00001C40 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00001C48 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00001C50 ",_EJ0.p." */
+- 0x08,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001C58 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00001C60 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00001C68 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001C70 "p.\._GPE" */
+- 0x50,0x48,0x30,0x38,0x14,0x2B,0x5F,0x53, /* 00001C78 "PH08.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x08,0x5C,0x2E, /* 00001C80 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001C88 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00001C90 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00001C98 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x38, /* 00001CA0 "_GPEPH08" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x30,0x39,0x5F, /* 00001CA8 "[.B.S09_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00001CB0 "._ADR..." */
+- 0x09,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00001CB8 "..._SUN." */
+- 0x09,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00001CC0 ".. _PS0." */
+- 0x70,0x0A,0x09,0x5C,0x2E,0x5F,0x47,0x50, /* 00001CC8 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00001CD0 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001CD8 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00001CE0 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x09,0x5C,0x2E,0x5F,0x47, /* 00001CE8 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00001CF0 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001CF8 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00001D00 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x09,0x5C,0x2E,0x5F, /* 00001D08 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00001D10 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001D18 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00001D20 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x39, /* 00001D28 "_GPEPH09" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00001D30 ".+_STA.p" */
+- 0x0A,0x09,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001D38 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00001D40 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001D48 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001D50 "2.\._GPE" */
+- 0x50,0x48,0x30,0x39,0x5B,0x82,0x42,0x0B, /* 00001D58 "PH09[.B." */
+- 0x53,0x30,0x41,0x5F,0x08,0x5F,0x41,0x44, /* 00001D60 "S0A_._AD" */
+- 0x52,0x0C,0x00,0x00,0x0A,0x00,0x08,0x5F, /* 00001D68 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x0A,0x14,0x20,0x5F, /* 00001D70 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x0A,0x5C, /* 00001D78 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001D80 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00001D88 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00001D90 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x0A, /* 00001D98 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001DA0 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00001DA8 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00001DB0 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00001DB8 ",_EJ0.p." */
+- 0x0A,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001DC0 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00001DC8 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00001DD0 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001DD8 "p.\._GPE" */
+- 0x50,0x48,0x30,0x41,0x14,0x2B,0x5F,0x53, /* 00001DE0 "PH0A.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x0A,0x5C,0x2E, /* 00001DE8 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001DF0 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00001DF8 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00001E00 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x41, /* 00001E08 "_GPEPH0A" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x30,0x42,0x5F, /* 00001E10 "[.B.S0B_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00001E18 "._ADR..." */
+- 0x0B,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00001E20 "..._SUN." */
+- 0x0B,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00001E28 ".. _PS0." */
+- 0x70,0x0A,0x0B,0x5C,0x2E,0x5F,0x47,0x50, /* 00001E30 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00001E38 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001E40 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00001E48 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x0B,0x5C,0x2E,0x5F,0x47, /* 00001E50 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00001E58 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001E60 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00001E68 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x0B,0x5C,0x2E,0x5F, /* 00001E70 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00001E78 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001E80 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00001E88 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x42, /* 00001E90 "_GPEPH0B" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00001E98 ".+_STA.p" */
+- 0x0A,0x0B,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001EA0 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00001EA8 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001EB0 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001EB8 "2.\._GPE" */
+- 0x50,0x48,0x30,0x42,0x5B,0x82,0x42,0x0B, /* 00001EC0 "PH0B[.B." */
+- 0x53,0x30,0x43,0x5F,0x08,0x5F,0x41,0x44, /* 00001EC8 "S0C_._AD" */
+- 0x52,0x0C,0x00,0x00,0x0C,0x00,0x08,0x5F, /* 00001ED0 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x0C,0x14,0x20,0x5F, /* 00001ED8 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x0C,0x5C, /* 00001EE0 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00001EE8 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00001EF0 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00001EF8 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x0C, /* 00001F00 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001F08 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00001F10 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00001F18 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00001F20 ",_EJ0.p." */
+- 0x0C,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001F28 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00001F30 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00001F38 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001F40 "p.\._GPE" */
+- 0x50,0x48,0x30,0x43,0x14,0x2B,0x5F,0x53, /* 00001F48 "PH0C.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x0C,0x5C,0x2E, /* 00001F50 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00001F58 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00001F60 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00001F68 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x43, /* 00001F70 "_GPEPH0C" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x30,0x44,0x5F, /* 00001F78 "[.B.S0D_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00001F80 "._ADR..." */
+- 0x0D,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00001F88 "..._SUN." */
+- 0x0D,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00001F90 ".. _PS0." */
+- 0x70,0x0A,0x0D,0x5C,0x2E,0x5F,0x47,0x50, /* 00001F98 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00001FA0 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00001FA8 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00001FB0 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x0D,0x5C,0x2E,0x5F,0x47, /* 00001FB8 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00001FC0 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00001FC8 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00001FD0 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x0D,0x5C,0x2E,0x5F, /* 00001FD8 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00001FE0 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00001FE8 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00001FF0 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x44, /* 00001FF8 "_GPEPH0D" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00002000 ".+_STA.p" */
+- 0x0A,0x0D,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002008 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00002010 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002018 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002020 "2.\._GPE" */
+- 0x50,0x48,0x30,0x44,0x5B,0x82,0x42,0x0B, /* 00002028 "PH0D[.B." */
+- 0x53,0x30,0x45,0x5F,0x08,0x5F,0x41,0x44, /* 00002030 "S0E_._AD" */
+- 0x52,0x0C,0x00,0x00,0x0E,0x00,0x08,0x5F, /* 00002038 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x0E,0x14,0x20,0x5F, /* 00002040 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x0E,0x5C, /* 00002048 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002050 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00002058 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00002060 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x0E, /* 00002068 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002070 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00002078 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00002080 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00002088 ",_EJ0.p." */
+- 0x0E,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002090 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00002098 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 000020A0 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000020A8 "p.\._GPE" */
+- 0x50,0x48,0x30,0x45,0x14,0x2B,0x5F,0x53, /* 000020B0 "PH0E.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x0E,0x5C,0x2E, /* 000020B8 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 000020C0 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 000020C8 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 000020D0 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x45, /* 000020D8 "_GPEPH0E" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x30,0x46,0x5F, /* 000020E0 "[.B.S0F_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 000020E8 "._ADR..." */
+- 0x0F,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 000020F0 "..._SUN." */
+- 0x0F,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 000020F8 ".. _PS0." */
+- 0x70,0x0A,0x0F,0x5C,0x2E,0x5F,0x47,0x50, /* 00002100 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00002108 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002110 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00002118 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x0F,0x5C,0x2E,0x5F,0x47, /* 00002120 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00002128 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002130 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00002138 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x0F,0x5C,0x2E,0x5F, /* 00002140 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00002148 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002150 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00002158 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x30,0x46, /* 00002160 "_GPEPH0F" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00002168 ".+_STA.p" */
+- 0x0A,0x0F,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002170 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00002178 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002180 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002188 "2.\._GPE" */
+- 0x50,0x48,0x30,0x46,0x5B,0x82,0x42,0x0B, /* 00002190 "PH0F[.B." */
+- 0x53,0x31,0x30,0x5F,0x08,0x5F,0x41,0x44, /* 00002198 "S10_._AD" */
+- 0x52,0x0C,0x00,0x00,0x10,0x00,0x08,0x5F, /* 000021A0 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x10,0x14,0x20,0x5F, /* 000021A8 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x10,0x5C, /* 000021B0 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000021B8 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 000021C0 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 000021C8 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x10, /* 000021D0 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 000021D8 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 000021E0 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 000021E8 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 000021F0 ",_EJ0.p." */
+- 0x10,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 000021F8 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00002200 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00002208 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002210 "p.\._GPE" */
+- 0x50,0x48,0x31,0x30,0x14,0x2B,0x5F,0x53, /* 00002218 "PH10.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x10,0x5C,0x2E, /* 00002220 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00002228 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00002230 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00002238 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x30, /* 00002240 "_GPEPH10" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x31,0x5F, /* 00002248 "[.B.S11_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00002250 "._ADR..." */
+- 0x11,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00002258 "..._SUN." */
+- 0x11,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00002260 ".. _PS0." */
+- 0x70,0x0A,0x11,0x5C,0x2E,0x5F,0x47,0x50, /* 00002268 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00002270 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002278 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00002280 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x11,0x5C,0x2E,0x5F,0x47, /* 00002288 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00002290 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002298 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 000022A0 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x11,0x5C,0x2E,0x5F, /* 000022A8 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 000022B0 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000022B8 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 000022C0 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x31, /* 000022C8 "_GPEPH11" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 000022D0 ".+_STA.p" */
+- 0x0A,0x11,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000022D8 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 000022E0 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000022E8 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000022F0 "2.\._GPE" */
+- 0x50,0x48,0x31,0x31,0x5B,0x82,0x42,0x0B, /* 000022F8 "PH11[.B." */
+- 0x53,0x31,0x32,0x5F,0x08,0x5F,0x41,0x44, /* 00002300 "S12_._AD" */
+- 0x52,0x0C,0x00,0x00,0x12,0x00,0x08,0x5F, /* 00002308 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x12,0x14,0x20,0x5F, /* 00002310 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x12,0x5C, /* 00002318 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002320 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00002328 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00002330 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x12, /* 00002338 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002340 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00002348 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00002350 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00002358 ",_EJ0.p." */
+- 0x12,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002360 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00002368 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00002370 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002378 "p.\._GPE" */
+- 0x50,0x48,0x31,0x32,0x14,0x2B,0x5F,0x53, /* 00002380 "PH12.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x12,0x5C,0x2E, /* 00002388 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00002390 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00002398 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 000023A0 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x32, /* 000023A8 "_GPEPH12" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x33,0x5F, /* 000023B0 "[.B.S13_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 000023B8 "._ADR..." */
+- 0x13,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 000023C0 "..._SUN." */
+- 0x13,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 000023C8 ".. _PS0." */
+- 0x70,0x0A,0x13,0x5C,0x2E,0x5F,0x47,0x50, /* 000023D0 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 000023D8 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 000023E0 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 000023E8 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x13,0x5C,0x2E,0x5F,0x47, /* 000023F0 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 000023F8 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002400 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00002408 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x13,0x5C,0x2E,0x5F, /* 00002410 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00002418 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002420 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00002428 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x33, /* 00002430 "_GPEPH13" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00002438 ".+_STA.p" */
+- 0x0A,0x13,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002440 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00002448 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002450 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002458 "2.\._GPE" */
+- 0x50,0x48,0x31,0x33,0x5B,0x82,0x42,0x0B, /* 00002460 "PH13[.B." */
+- 0x53,0x31,0x34,0x5F,0x08,0x5F,0x41,0x44, /* 00002468 "S14_._AD" */
+- 0x52,0x0C,0x00,0x00,0x14,0x00,0x08,0x5F, /* 00002470 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x14,0x14,0x20,0x5F, /* 00002478 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x14,0x5C, /* 00002480 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002488 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00002490 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00002498 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x14, /* 000024A0 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 000024A8 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 000024B0 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 000024B8 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 000024C0 ",_EJ0.p." */
+- 0x14,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 000024C8 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 000024D0 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 000024D8 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000024E0 "p.\._GPE" */
+- 0x50,0x48,0x31,0x34,0x14,0x2B,0x5F,0x53, /* 000024E8 "PH14.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x14,0x5C,0x2E, /* 000024F0 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 000024F8 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00002500 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00002508 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x34, /* 00002510 "_GPEPH14" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x35,0x5F, /* 00002518 "[.B.S15_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00002520 "._ADR..." */
+- 0x15,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00002528 "..._SUN." */
+- 0x15,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00002530 ".. _PS0." */
+- 0x70,0x0A,0x15,0x5C,0x2E,0x5F,0x47,0x50, /* 00002538 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00002540 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002548 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00002550 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x15,0x5C,0x2E,0x5F,0x47, /* 00002558 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00002560 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002568 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00002570 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x15,0x5C,0x2E,0x5F, /* 00002578 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00002580 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002588 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00002590 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x35, /* 00002598 "_GPEPH15" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 000025A0 ".+_STA.p" */
+- 0x0A,0x15,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000025A8 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 000025B0 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000025B8 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000025C0 "2.\._GPE" */
+- 0x50,0x48,0x31,0x35,0x5B,0x82,0x42,0x0B, /* 000025C8 "PH15[.B." */
+- 0x53,0x31,0x36,0x5F,0x08,0x5F,0x41,0x44, /* 000025D0 "S16_._AD" */
+- 0x52,0x0C,0x00,0x00,0x16,0x00,0x08,0x5F, /* 000025D8 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x16,0x14,0x20,0x5F, /* 000025E0 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x16,0x5C, /* 000025E8 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000025F0 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 000025F8 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00002600 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x16, /* 00002608 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002610 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00002618 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00002620 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00002628 ",_EJ0.p." */
+- 0x16,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002630 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00002638 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00002640 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002648 "p.\._GPE" */
+- 0x50,0x48,0x31,0x36,0x14,0x2B,0x5F,0x53, /* 00002650 "PH16.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x16,0x5C,0x2E, /* 00002658 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00002660 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00002668 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00002670 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x36, /* 00002678 "_GPEPH16" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x37,0x5F, /* 00002680 "[.B.S17_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00002688 "._ADR..." */
+- 0x17,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00002690 "..._SUN." */
+- 0x17,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00002698 ".. _PS0." */
+- 0x70,0x0A,0x17,0x5C,0x2E,0x5F,0x47,0x50, /* 000026A0 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 000026A8 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 000026B0 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 000026B8 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x17,0x5C,0x2E,0x5F,0x47, /* 000026C0 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 000026C8 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 000026D0 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 000026D8 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x17,0x5C,0x2E,0x5F, /* 000026E0 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 000026E8 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000026F0 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 000026F8 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x37, /* 00002700 "_GPEPH17" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00002708 ".+_STA.p" */
+- 0x0A,0x17,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002710 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00002718 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002720 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002728 "2.\._GPE" */
+- 0x50,0x48,0x31,0x37,0x5B,0x82,0x42,0x0B, /* 00002730 "PH17[.B." */
+- 0x53,0x31,0x38,0x5F,0x08,0x5F,0x41,0x44, /* 00002738 "S18_._AD" */
+- 0x52,0x0C,0x00,0x00,0x18,0x00,0x08,0x5F, /* 00002740 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x18,0x14,0x20,0x5F, /* 00002748 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x18,0x5C, /* 00002750 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002758 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00002760 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00002768 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x18, /* 00002770 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002778 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00002780 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00002788 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00002790 ",_EJ0.p." */
+- 0x18,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002798 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 000027A0 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 000027A8 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000027B0 "p.\._GPE" */
+- 0x50,0x48,0x31,0x38,0x14,0x2B,0x5F,0x53, /* 000027B8 "PH18.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x18,0x5C,0x2E, /* 000027C0 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 000027C8 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 000027D0 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 000027D8 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x38, /* 000027E0 "_GPEPH18" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x39,0x5F, /* 000027E8 "[.B.S19_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 000027F0 "._ADR..." */
+- 0x19,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 000027F8 "..._SUN." */
+- 0x19,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00002800 ".. _PS0." */
+- 0x70,0x0A,0x19,0x5C,0x2E,0x5F,0x47,0x50, /* 00002808 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00002810 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002818 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00002820 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x19,0x5C,0x2E,0x5F,0x47, /* 00002828 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00002830 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002838 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00002840 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x19,0x5C,0x2E,0x5F, /* 00002848 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00002850 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002858 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00002860 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x39, /* 00002868 "_GPEPH19" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00002870 ".+_STA.p" */
+- 0x0A,0x19,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002878 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00002880 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002888 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002890 "2.\._GPE" */
+- 0x50,0x48,0x31,0x39,0x5B,0x82,0x42,0x0B, /* 00002898 "PH19[.B." */
+- 0x53,0x31,0x41,0x5F,0x08,0x5F,0x41,0x44, /* 000028A0 "S1A_._AD" */
+- 0x52,0x0C,0x00,0x00,0x1A,0x00,0x08,0x5F, /* 000028A8 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x1A,0x14,0x20,0x5F, /* 000028B0 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x1A,0x5C, /* 000028B8 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000028C0 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 000028C8 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 000028D0 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x1A, /* 000028D8 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 000028E0 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 000028E8 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 000028F0 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 000028F8 ",_EJ0.p." */
+- 0x1A,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002900 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00002908 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00002910 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002918 "p.\._GPE" */
+- 0x50,0x48,0x31,0x41,0x14,0x2B,0x5F,0x53, /* 00002920 "PH1A.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x1A,0x5C,0x2E, /* 00002928 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00002930 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00002938 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00002940 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x41, /* 00002948 "_GPEPH1A" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x42,0x5F, /* 00002950 "[.B.S1B_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00002958 "._ADR..." */
+- 0x1B,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00002960 "..._SUN." */
+- 0x1B,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00002968 ".. _PS0." */
+- 0x70,0x0A,0x1B,0x5C,0x2E,0x5F,0x47,0x50, /* 00002970 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00002978 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002980 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00002988 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x1B,0x5C,0x2E,0x5F,0x47, /* 00002990 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00002998 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 000029A0 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 000029A8 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x1B,0x5C,0x2E,0x5F, /* 000029B0 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 000029B8 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000029C0 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 000029C8 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x42, /* 000029D0 "_GPEPH1B" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 000029D8 ".+_STA.p" */
+- 0x0A,0x1B,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000029E0 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 000029E8 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 000029F0 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 000029F8 "2.\._GPE" */
+- 0x50,0x48,0x31,0x42,0x5B,0x82,0x42,0x0B, /* 00002A00 "PH1B[.B." */
+- 0x53,0x31,0x43,0x5F,0x08,0x5F,0x41,0x44, /* 00002A08 "S1C_._AD" */
+- 0x52,0x0C,0x00,0x00,0x1C,0x00,0x08,0x5F, /* 00002A10 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x1C,0x14,0x20,0x5F, /* 00002A18 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x1C,0x5C, /* 00002A20 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002A28 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00002A30 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00002A38 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x1C, /* 00002A40 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002A48 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00002A50 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00002A58 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00002A60 ",_EJ0.p." */
+- 0x1C,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002A68 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00002A70 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00002A78 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002A80 "p.\._GPE" */
+- 0x50,0x48,0x31,0x43,0x14,0x2B,0x5F,0x53, /* 00002A88 "PH1C.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x1C,0x5C,0x2E, /* 00002A90 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00002A98 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00002AA0 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00002AA8 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x43, /* 00002AB0 "_GPEPH1C" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x44,0x5F, /* 00002AB8 "[.B.S1D_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00002AC0 "._ADR..." */
+- 0x1D,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00002AC8 "..._SUN." */
+- 0x1D,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00002AD0 ".. _PS0." */
+- 0x70,0x0A,0x1D,0x5C,0x2E,0x5F,0x47,0x50, /* 00002AD8 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00002AE0 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002AE8 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00002AF0 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x1D,0x5C,0x2E,0x5F,0x47, /* 00002AF8 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00002B00 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002B08 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00002B10 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x1D,0x5C,0x2E,0x5F, /* 00002B18 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00002B20 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002B28 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00002B30 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x44, /* 00002B38 "_GPEPH1D" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00002B40 ".+_STA.p" */
+- 0x0A,0x1D,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002B48 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00002B50 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002B58 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002B60 "2.\._GPE" */
+- 0x50,0x48,0x31,0x44,0x5B,0x82,0x42,0x0B, /* 00002B68 "PH1D[.B." */
+- 0x53,0x31,0x45,0x5F,0x08,0x5F,0x41,0x44, /* 00002B70 "S1E_._AD" */
+- 0x52,0x0C,0x00,0x00,0x1E,0x00,0x08,0x5F, /* 00002B78 "R......_" */
+- 0x53,0x55,0x4E,0x0A,0x1E,0x14,0x20,0x5F, /* 00002B80 "SUN... _" */
+- 0x50,0x53,0x30,0x00,0x70,0x0A,0x1E,0x5C, /* 00002B88 "PS0.p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002B90 "._GPEDPT" */
+- 0x31,0x70,0x0A,0x80,0x5C,0x2E,0x5F,0x47, /* 00002B98 "1p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x32,0x14,0x20, /* 00002BA0 "PEDPT2. " */
+- 0x5F,0x50,0x53,0x33,0x00,0x70,0x0A,0x1E, /* 00002BA8 "_PS3.p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002BB0 "\._GPEDP" */
+- 0x54,0x31,0x70,0x0A,0x83,0x5C,0x2E,0x5F, /* 00002BB8 "T1p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x32,0x14, /* 00002BC0 "GPEDPT2." */
+- 0x2C,0x5F,0x45,0x4A,0x30,0x01,0x70,0x0A, /* 00002BC8 ",_EJ0.p." */
+- 0x1E,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002BD0 ".\._GPED" */
+- 0x50,0x54,0x31,0x70,0x0A,0x88,0x5C,0x2E, /* 00002BD8 "PT1p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x32, /* 00002BE0 "_GPEDPT2" */
+- 0x70,0x01,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002BE8 "p.\._GPE" */
+- 0x50,0x48,0x31,0x45,0x14,0x2B,0x5F,0x53, /* 00002BF0 "PH1E.+_S" */
+- 0x54,0x41,0x00,0x70,0x0A,0x1E,0x5C,0x2E, /* 00002BF8 "TA.p..\." */
+- 0x5F,0x47,0x50,0x45,0x44,0x50,0x54,0x31, /* 00002C00 "_GPEDPT1" */
+- 0x70,0x0A,0x89,0x5C,0x2E,0x5F,0x47,0x50, /* 00002C08 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x32,0xA4,0x5C,0x2E, /* 00002C10 "EDPT2.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x45, /* 00002C18 "_GPEPH1E" */
+- 0x5B,0x82,0x42,0x0B,0x53,0x31,0x46,0x5F, /* 00002C20 "[.B.S1F_" */
+- 0x08,0x5F,0x41,0x44,0x52,0x0C,0x00,0x00, /* 00002C28 "._ADR..." */
+- 0x1F,0x00,0x08,0x5F,0x53,0x55,0x4E,0x0A, /* 00002C30 "..._SUN." */
+- 0x1F,0x14,0x20,0x5F,0x50,0x53,0x30,0x00, /* 00002C38 ".. _PS0." */
+- 0x70,0x0A,0x1F,0x5C,0x2E,0x5F,0x47,0x50, /* 00002C40 "p..\._GP" */
+- 0x45,0x44,0x50,0x54,0x31,0x70,0x0A,0x80, /* 00002C48 "EDPT1p.." */
+- 0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44,0x50, /* 00002C50 "\._GPEDP" */
+- 0x54,0x32,0x14,0x20,0x5F,0x50,0x53,0x33, /* 00002C58 "T2. _PS3" */
+- 0x00,0x70,0x0A,0x1F,0x5C,0x2E,0x5F,0x47, /* 00002C60 ".p..\._G" */
+- 0x50,0x45,0x44,0x50,0x54,0x31,0x70,0x0A, /* 00002C68 "PEDPT1p." */
+- 0x83,0x5C,0x2E,0x5F,0x47,0x50,0x45,0x44, /* 00002C70 ".\._GPED" */
+- 0x50,0x54,0x32,0x14,0x2C,0x5F,0x45,0x4A, /* 00002C78 "PT2.,_EJ" */
+- 0x30,0x01,0x70,0x0A,0x1F,0x5C,0x2E,0x5F, /* 00002C80 "0.p..\._" */
+- 0x47,0x50,0x45,0x44,0x50,0x54,0x31,0x70, /* 00002C88 "GPEDPT1p" */
+- 0x0A,0x88,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002C90 "..\._GPE" */
+- 0x44,0x50,0x54,0x32,0x70,0x01,0x5C,0x2E, /* 00002C98 "DPT2p.\." */
+- 0x5F,0x47,0x50,0x45,0x50,0x48,0x31,0x46, /* 00002CA0 "_GPEPH1F" */
+- 0x14,0x2B,0x5F,0x53,0x54,0x41,0x00,0x70, /* 00002CA8 ".+_STA.p" */
+- 0x0A,0x1F,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002CB0 "..\._GPE" */
+- 0x44,0x50,0x54,0x31,0x70,0x0A,0x89,0x5C, /* 00002CB8 "DPT1p..\" */
+- 0x2E,0x5F,0x47,0x50,0x45,0x44,0x50,0x54, /* 00002CC0 "._GPEDPT" */
+- 0x32,0xA4,0x5C,0x2E,0x5F,0x47,0x50,0x45, /* 00002CC8 "2.\._GPE" */
+- 0x50,0x48,0x31,0x46,0x10,0x4D,0x52,0x5F, /* 00002CD0 "PH1F.MR_" */
+- 0x47,0x50,0x45,0x5B,0x80,0x50,0x48,0x50, /* 00002CD8 "GPE[.PHP" */
+- 0x5F,0x01,0x0B,0xC0,0x10,0x0A,0x22,0x5B, /* 00002CE0 "_....."[" */
+- 0x81,0x41,0x0B,0x50,0x48,0x50,0x5F,0x01, /* 00002CE8 ".A.PHP_." */
+- 0x50,0x53,0x54,0x41,0x08,0x50,0x53,0x54, /* 00002CF0 "PSTA.PST" */
+- 0x42,0x08,0x50,0x48,0x30,0x30,0x08,0x50, /* 00002CF8 "B.PH00.P" */
+- 0x48,0x30,0x31,0x08,0x50,0x48,0x30,0x32, /* 00002D00 "H01.PH02" */
+- 0x08,0x50,0x48,0x30,0x33,0x08,0x50,0x48, /* 00002D08 ".PH03.PH" */
+- 0x30,0x34,0x08,0x50,0x48,0x30,0x35,0x08, /* 00002D10 "04.PH05." */
+- 0x50,0x48,0x30,0x36,0x08,0x50,0x48,0x30, /* 00002D18 "PH06.PH0" */
+- 0x37,0x08,0x50,0x48,0x30,0x38,0x08,0x50, /* 00002D20 "7.PH08.P" */
+- 0x48,0x30,0x39,0x08,0x50,0x48,0x30,0x41, /* 00002D28 "H09.PH0A" */
+- 0x08,0x50,0x48,0x30,0x42,0x08,0x50,0x48, /* 00002D30 ".PH0B.PH" */
+- 0x30,0x43,0x08,0x50,0x48,0x30,0x44,0x08, /* 00002D38 "0C.PH0D." */
+- 0x50,0x48,0x30,0x45,0x08,0x50,0x48,0x30, /* 00002D40 "PH0E.PH0" */
+- 0x46,0x08,0x50,0x48,0x31,0x30,0x08,0x50, /* 00002D48 "F.PH10.P" */
+- 0x48,0x31,0x31,0x08,0x50,0x48,0x31,0x32, /* 00002D50 "H11.PH12" */
+- 0x08,0x50,0x48,0x31,0x33,0x08,0x50,0x48, /* 00002D58 ".PH13.PH" */
+- 0x31,0x34,0x08,0x50,0x48,0x31,0x35,0x08, /* 00002D60 "14.PH15." */
+- 0x50,0x48,0x31,0x36,0x08,0x50,0x48,0x31, /* 00002D68 "PH16.PH1" */
+- 0x37,0x08,0x50,0x48,0x31,0x38,0x08,0x50, /* 00002D70 "7.PH18.P" */
+- 0x48,0x31,0x39,0x08,0x50,0x48,0x31,0x41, /* 00002D78 "H19.PH1A" */
+- 0x08,0x50,0x48,0x31,0x42,0x08,0x50,0x48, /* 00002D80 ".PH1B.PH" */
+- 0x31,0x43,0x08,0x50,0x48,0x31,0x44,0x08, /* 00002D88 "1C.PH1D." */
+- 0x50,0x48,0x31,0x45,0x08,0x50,0x48,0x31, /* 00002D90 "PH1E.PH1" */
+- 0x46,0x08,0x5B,0x80,0x44,0x47,0x31,0x5F, /* 00002D98 "F.[.DG1_" */
+- 0x01,0x0B,0x44,0xB0,0x0A,0x04,0x5B,0x81, /* 00002DA0 "..D...[." */
+- 0x10,0x44,0x47,0x31,0x5F,0x01,0x44,0x50, /* 00002DA8 ".DG1_.DP" */
+- 0x54,0x31,0x08,0x44,0x50,0x54,0x32,0x08, /* 00002DB0 "T1.DPT2." */
+- 0x14,0x49,0x44,0x5F,0x4C,0x30,0x33,0x08, /* 00002DB8 ".ID_L03." */
+- 0x08,0x5F,0x54,0x5F,0x30,0x00,0x08,0x53, /* 00002DC0 "._T_0..S" */
+- 0x4C,0x54,0x5F,0x00,0x08,0x45,0x56,0x54, /* 00002DC8 "LT_..EVT" */
+- 0x5F,0x00,0x70,0x50,0x53,0x54,0x41,0x61, /* 00002DD0 "_.pPSTAa" */
+- 0x7B,0x61,0x0A,0x0F,0x45,0x56,0x54,0x5F, /* 00002DD8 "{a..EVT_" */
+- 0x70,0x50,0x53,0x54,0x42,0x61,0x7B,0x61, /* 00002DE0 "pPSTBa{a" */
+- 0x0A,0xFF,0x53,0x4C,0x54,0x5F,0x70,0x53, /* 00002DE8 "..SLT_pS" */
+- 0x4C,0x54,0x5F,0x44,0x50,0x54,0x31,0x70, /* 00002DF0 "LT_DPT1p" */
+- 0x45,0x56,0x54,0x5F,0x44,0x50,0x54,0x32, /* 00002DF8 "EVT_DPT2" */
+- 0x70,0x53,0x4C,0x54,0x5F,0x5F,0x54,0x5F, /* 00002E00 "pSLT__T_" */
+- 0x30,0xA0,0x1B,0x93,0x5F,0x54,0x5F,0x30, /* 00002E08 "0..._T_0" */
+- 0x00,0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42, /* 00002E10 "..\/._SB" */
+- 0x5F,0x50,0x43,0x49,0x30,0x53,0x30,0x30, /* 00002E18 "_PCI0S00" */
+- 0x5F,0x45,0x56,0x54,0x5F,0xA1,0x4C,0x3D, /* 00002E20 "_EVT_.L=" */
+- 0xA0,0x1B,0x93,0x5F,0x54,0x5F,0x30,0x01, /* 00002E28 "..._T_0." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002E30 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x31,0x5F, /* 00002E38 "PCI0S01_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x3B,0xA0, /* 00002E40 "EVT_.M;." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x02, /* 00002E48 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002E50 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x32,0x5F, /* 00002E58 "PCI0S02_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x39,0xA0, /* 00002E60 "EVT_.M9." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x03, /* 00002E68 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002E70 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x33,0x5F, /* 00002E78 "PCI0S03_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x37,0xA0, /* 00002E80 "EVT_.M7." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x04, /* 00002E88 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002E90 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x34,0x5F, /* 00002E98 "PCI0S04_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x35,0xA0, /* 00002EA0 "EVT_.M5." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x05, /* 00002EA8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002EB0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x35,0x5F, /* 00002EB8 "PCI0S05_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x33,0xA0, /* 00002EC0 "EVT_.M3." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x06, /* 00002EC8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002ED0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x36,0x5F, /* 00002ED8 "PCI0S06_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x31,0xA0, /* 00002EE0 "EVT_.M1." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x07, /* 00002EE8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002EF0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x37,0x5F, /* 00002EF8 "PCI0S07_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x2F,0xA0, /* 00002F00 "EVT_.M/." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x08, /* 00002F08 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002F10 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x38,0x5F, /* 00002F18 "PCI0S08_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x2D,0xA0, /* 00002F20 "EVT_.M-." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x09, /* 00002F28 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002F30 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x39,0x5F, /* 00002F38 "PCI0S09_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x2B,0xA0, /* 00002F40 "EVT_.M+." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x0A, /* 00002F48 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002F50 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x41,0x5F, /* 00002F58 "PCI0S0A_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x29,0xA0, /* 00002F60 "EVT_.M)." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x0B, /* 00002F68 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002F70 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x42,0x5F, /* 00002F78 "PCI0S0B_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x27,0xA0, /* 00002F80 "EVT_.M'." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x0C, /* 00002F88 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002F90 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x43,0x5F, /* 00002F98 "PCI0S0C_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x25,0xA0, /* 00002FA0 "EVT_.M%." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x0D, /* 00002FA8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002FB0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x44,0x5F, /* 00002FB8 "PCI0S0D_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x23,0xA0, /* 00002FC0 "EVT_.M#." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x0E, /* 00002FC8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002FD0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x45,0x5F, /* 00002FD8 "PCI0S0E_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x21,0xA0, /* 00002FE0 "EVT_.M!." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x0F, /* 00002FE8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00002FF0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x30,0x46,0x5F, /* 00002FF8 "PCI0S0F_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x1F,0xA0, /* 00003000 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x10, /* 00003008 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003010 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x30,0x5F, /* 00003018 "PCI0S10_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x1D,0xA0, /* 00003020 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x11, /* 00003028 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003030 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x31,0x5F, /* 00003038 "PCI0S11_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x1B,0xA0, /* 00003040 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x12, /* 00003048 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003050 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x32,0x5F, /* 00003058 "PCI0S12_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x19,0xA0, /* 00003060 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x13, /* 00003068 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003070 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x33,0x5F, /* 00003078 "PCI0S13_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x17,0xA0, /* 00003080 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x14, /* 00003088 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003090 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x34,0x5F, /* 00003098 "PCI0S14_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x15,0xA0, /* 000030A0 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x15, /* 000030A8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000030B0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x35,0x5F, /* 000030B8 "PCI0S15_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x13,0xA0, /* 000030C0 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x16, /* 000030C8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000030D0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x36,0x5F, /* 000030D8 "PCI0S16_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x11,0xA0, /* 000030E0 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x17, /* 000030E8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000030F0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x37,0x5F, /* 000030F8 "PCI0S17_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x0F,0xA0, /* 00003100 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x18, /* 00003108 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003110 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x38,0x5F, /* 00003118 "PCI0S18_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x0D,0xA0, /* 00003120 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x19, /* 00003128 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003130 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x39,0x5F, /* 00003138 "PCI0S19_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x0B,0xA0, /* 00003140 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x1A, /* 00003148 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003150 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x41,0x5F, /* 00003158 "PCI0S1A_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x09,0xA0, /* 00003160 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x1B, /* 00003168 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003170 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x42,0x5F, /* 00003178 "PCI0S1B_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x07,0xA0, /* 00003180 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x1C, /* 00003188 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 00003190 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x43,0x5F, /* 00003198 "PCI0S1C_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x4D,0x05,0xA0, /* 000031A0 "EVT_.M.." */
+- 0x1C,0x93,0x5F,0x54,0x5F,0x30,0x0A,0x1D, /* 000031A8 ".._T_0.." */
+- 0x86,0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F, /* 000031B0 ".\/._SB_" */
+- 0x50,0x43,0x49,0x30,0x53,0x31,0x44,0x5F, /* 000031B8 "PCI0S1D_" */
+- 0x45,0x56,0x54,0x5F,0xA1,0x3D,0xA0,0x1C, /* 000031C0 "EVT_.=.." */
+- 0x93,0x5F,0x54,0x5F,0x30,0x0A,0x1E,0x86, /* 000031C8 "._T_0..." */
+- 0x5C,0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50, /* 000031D0 "\/._SB_P" */
+- 0x43,0x49,0x30,0x53,0x31,0x45,0x5F,0x45, /* 000031D8 "CI0S1E_E" */
+- 0x56,0x54,0x5F,0xA1,0x1E,0xA0,0x1C,0x93, /* 000031E0 "VT_....." */
+- 0x5F,0x54,0x5F,0x30,0x0A,0x1F,0x86,0x5C, /* 000031E8 "_T_0...\" */
+- 0x2F,0x03,0x5F,0x53,0x42,0x5F,0x50,0x43, /* 000031F0 "/._SB_PC" */
+- 0x49,0x30,0x53,0x31,0x46,0x5F,0x45,0x56, /* 000031F8 "I0S1F_EV" */
+- 0x54,0x5F,
+-};
+-int DsdtLen=sizeof(AmlCode);
+diff -r 0477f9061c8a tools/firmware/hvmloader/acpi/ssdt_pm.h
+--- a/tools/firmware/hvmloader/acpi/ssdt_pm.h Fri Mar 20 17:42:46 2009 +0000
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,202 +0,0 @@
+-/*
+- *
+- * Intel ACPI Component Architecture
+- * ASL Optimizing Compiler version 20061109 [May 18 2007]
+- * Copyright (C) 2000 - 2006 Intel Corporation
+- * Supports ACPI Specification Revision 3.0a
+- *
+- * Compilation of "ssdt_pm.asl" - Sun Oct 12 23:57:51 2008
+- *
+- * C source code output
+- *
+- */
+-unsigned char AmlCode_PM[] =
+-{
+- 0x53,0x53,0x44,0x54,0xD6,0x05,0x00,0x00, /* 00000000 "SSDT...." */
+- 0x02,0xD9,0x58,0x65,0x6E,0x00,0x00,0x00, /* 00000008 "..Xen..." */
+- 0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00, /* 00000010 "HVM....." */
+- 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
+- 0x09,0x11,0x06,0x20,0x10,0x41,0x5B,0x5C, /* 00000020 "... .A[\" */
+- 0x5F,0x53,0x42,0x5F,0x5B,0x80,0x44,0x42, /* 00000028 "_SB_[.DB" */
+- 0x47,0x41,0x01,0x0B,0x40,0xB0,0x01,0x5B, /* 00000030 "GA..@..[" */
+- 0x81,0x0B,0x44,0x42,0x47,0x41,0x01,0x44, /* 00000038 "..DBGA.D" */
+- 0x42,0x47,0x31,0x08,0x5B,0x80,0x44,0x42, /* 00000040 "BG1.[.DB" */
+- 0x47,0x42,0x01,0x0B,0x44,0xB0,0x01,0x5B, /* 00000048 "GB..D..[" */
+- 0x81,0x0B,0x44,0x42,0x47,0x42,0x01,0x44, /* 00000050 "..DBGB.D" */
+- 0x42,0x47,0x32,0x08,0x5B,0x80,0x44,0x42, /* 00000058 "BG2.[.DB" */
+- 0x47,0x43,0x01,0x0B,0x46,0xB0,0x01,0x5B, /* 00000060 "GC..F..[" */
+- 0x81,0x0B,0x44,0x42,0x47,0x43,0x01,0x44, /* 00000068 "..DBGC.D" */
+- 0x42,0x47,0x33,0x08,0x5B,0x80,0x44,0x42, /* 00000070 "BG3.[.DB" */
+- 0x47,0x44,0x01,0x0B,0x48,0xB0,0x01,0x5B, /* 00000078 "GD..H..[" */
+- 0x81,0x0B,0x44,0x42,0x47,0x44,0x01,0x44, /* 00000080 "..DBGD.D" */
+- 0x42,0x47,0x34,0x08,0x5B,0x80,0x50,0x52, /* 00000088 "BG4.[.PR" */
+- 0x54,0x31,0x01,0x0A,0xB2,0x0A,0x02,0x5B, /* 00000090 "T1.....[" */
+- 0x81,0x10,0x50,0x52,0x54,0x31,0x01,0x50, /* 00000098 "..PRT1.P" */
+- 0x42,0x32,0x5F,0x08,0x50,0x42,0x32,0x41, /* 000000A0 "B2_.PB2A" */
+- 0x08,0x5B,0x80,0x50,0x52,0x54,0x32,0x01, /* 000000A8 ".[.PRT2." */
+- 0x0A,0x86,0x01,0x5B,0x81,0x0B,0x50,0x52, /* 000000B0 "...[..PR" */
+- 0x54,0x32,0x01,0x50,0x38,0x36,0x5F,0x08, /* 000000B8 "T2.P86_." */
+- 0x5B,0x80,0x50,0x52,0x54,0x33,0x01,0x0A, /* 000000C0 "[.PRT3.." */
+- 0x88,0x01,0x5B,0x81,0x0B,0x50,0x52,0x54, /* 000000C8 "..[..PRT" */
+- 0x33,0x01,0x50,0x38,0x38,0x5F,0x08,0x5B, /* 000000D0 "3.P88_.[" */
+- 0x01,0x53,0x59,0x4E,0x43,0x01,0x08,0x42, /* 000000D8 ".SYNC..B" */
+- 0x55,0x46,0x30,0x11,0x04,0x0B,0x00,0x01, /* 000000E0 "UF0....." */
+- 0x08,0x42,0x55,0x46,0x31,0x11,0x03,0x0A, /* 000000E8 ".BUF1..." */
+- 0x08,0x8B,0x42,0x55,0x46,0x31,0x00,0x42, /* 000000F0 "..BUF1.B" */
+- 0x55,0x46,0x41,0x8B,0x42,0x55,0x46,0x31, /* 000000F8 "UFA.BUF1" */
+- 0x0A,0x04,0x42,0x55,0x46,0x42,0x14,0x14, /* 00000100 "..BUFB.." */
+- 0x41,0x43,0x51,0x52,0x00,0x5B,0x23,0x53, /* 00000108 "ACQR.[#S" */
+- 0x59,0x4E,0x43,0xFF,0xFF,0x70,0x00,0x42, /* 00000110 "YNC..p.B" */
+- 0x55,0x46,0x41,0x14,0x31,0x49,0x4E,0x49, /* 00000118 "UFA.1INI" */
+- 0x54,0x01,0x70,0x42,0x55,0x46,0x41,0x60, /* 00000120 "T.pBUFA`" */
+- 0x75,0x60,0xA0,0x22,0x92,0x94,0x60,0x87, /* 00000128 "u`."..`." */
+- 0x42,0x55,0x46,0x30,0x8C,0x42,0x55,0x46, /* 00000130 "BUF0.BUF" */
+- 0x30,0x42,0x55,0x46,0x41,0x54,0x4D,0x50, /* 00000138 "0BUFATMP" */
+- 0x31,0x70,0x68,0x54,0x4D,0x50,0x31,0x70, /* 00000140 "1phTMP1p" */
+- 0x60,0x42,0x55,0x46,0x41,0x14,0x48,0x07, /* 00000148 "`BUFA.H." */
+- 0x57,0x50,0x52,0x54,0x02,0x70,0x69,0x5C, /* 00000150 "WPRT.pi\" */
+- 0x2E,0x5F,0x53,0x42,0x5F,0x50,0x38,0x36, /* 00000158 "._SB_P86" */
+- 0x5F,0x70,0x68,0x5C,0x2E,0x5F,0x53,0x42, /* 00000160 "_ph\._SB" */
+- 0x5F,0x50,0x42,0x32,0x5F,0x70,0x68,0x5C, /* 00000168 "_PB2_ph\" */
+- 0x2E,0x5F,0x53,0x42,0x5F,0x44,0x42,0x47, /* 00000170 "._SB_DBG" */
+- 0x32,0x70,0x69,0x5C,0x2E,0x5F,0x53,0x42, /* 00000178 "2pi\._SB" */
+- 0x5F,0x44,0x42,0x47,0x34,0x70,0x5C,0x2E, /* 00000180 "_DBG4p\." */
+- 0x5F,0x53,0x42,0x5F,0x50,0x42,0x32,0x5F, /* 00000188 "_SB_PB2_" */
+- 0x60,0xA2,0x11,0x92,0x93,0x60,0x00,0x70, /* 00000190 "`....`.p" */
+- 0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x50,0x42, /* 00000198 "\._SB_PB" */
+- 0x32,0x5F,0x60,0x70,0x5C,0x2E,0x5F,0x53, /* 000001A0 "2_`p\._S" */
+- 0x42,0x5F,0x50,0x38,0x36,0x5F,0x61,0x70, /* 000001A8 "B_P86_ap" */
+- 0x61,0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x44, /* 000001B0 "a\._SB_D" */
+- 0x42,0x47,0x33,0xA4,0x5C,0x2E,0x5F,0x53, /* 000001B8 "BG3.\._S" */
+- 0x42,0x5F,0x50,0x38,0x36,0x5F,0x14,0x1D, /* 000001C0 "B_P86_.." */
+- 0x48,0x4C,0x50,0x31,0x02,0xA0,0x16,0x95, /* 000001C8 "HLP1...." */
+- 0x69,0x87,0x68,0x8C,0x68,0x69,0x54,0x4D, /* 000001D0 "i.h.hiTM" */
+- 0x50,0x31,0x57,0x50,0x52,0x54,0x0A,0x7C, /* 000001D8 "P1WPRT.|" */
+- 0x54,0x4D,0x50,0x31,0x14,0x23,0x48,0x4C, /* 000001E0 "TMP1.#HL" */
+- 0x50,0x32,0x00,0x57,0x50,0x52,0x54,0x0A, /* 000001E8 "P2.WPRT." */
+- 0x7B,0x00,0x70,0x00,0x60,0xA2,0x12,0x95, /* 000001F0 "{.p.`..." */
+- 0x60,0x42,0x55,0x46,0x41,0x48,0x4C,0x50, /* 000001F8 "`BUFAHLP" */
+- 0x31,0x42,0x55,0x46,0x30,0x60,0x75,0x60, /* 00000200 "1BUF0`u`" */
+- 0x14,0x1F,0x48,0x4C,0x50,0x33,0x02,0xA0, /* 00000208 "..HLP3.." */
+- 0x18,0x95,0x69,0x87,0x68,0x8C,0x68,0x69, /* 00000210 "..i.h.hi" */
+- 0x54,0x4D,0x50,0x31,0x70,0x57,0x50,0x52, /* 00000218 "TMP1pWPR" */
+- 0x54,0x0A,0x7D,0x00,0x54,0x4D,0x50,0x31, /* 00000220 "T.}.TMP1" */
+- 0x14,0x23,0x48,0x4C,0x50,0x34,0x00,0x70, /* 00000228 ".#HLP4.p" */
+- 0x00,0x60,0xA2,0x19,0x95,0x60,0x42,0x55, /* 00000230 ".`...`BU" */
+- 0x46,0x42,0x72,0x42,0x55,0x46,0x41,0x60, /* 00000238 "FBrBUFA`" */
+- 0x61,0x48,0x4C,0x50,0x33,0x42,0x55,0x46, /* 00000240 "aHLP3BUF" */
+- 0x30,0x61,0x75,0x60,0x14,0x42,0x04,0x48, /* 00000248 "0au`.B.H" */
+- 0x4C,0x50,0x35,0x00,0x48,0x4C,0x50,0x32, /* 00000250 "LP5.HLP2" */
+- 0x70,0x57,0x50,0x52,0x54,0x0A,0x79,0x00, /* 00000258 "pWPRT.y." */
+- 0x42,0x55,0x46,0x42,0x72,0x42,0x55,0x46, /* 00000260 "BUFBrBUF" */
+- 0x41,0x42,0x55,0x46,0x42,0x60,0xA0,0x1C, /* 00000268 "ABUFB`.." */
+- 0x95,0x87,0x42,0x55,0x46,0x30,0x60,0x70, /* 00000270 "..BUF0`p" */
+- 0x87,0x42,0x55,0x46,0x30,0x60,0x74,0x60, /* 00000278 ".BUF0`t`" */
+- 0x42,0x55,0x46,0x41,0x60,0x70,0x60,0x42, /* 00000280 "BUFA`p`B" */
+- 0x55,0x46,0x42,0x48,0x4C,0x50,0x34,0x14, /* 00000288 "UFBHLP4." */
+- 0x32,0x48,0x4C,0x50,0x36,0x00,0x70,0x42, /* 00000290 "2HLP6.pB" */
+- 0x55,0x46,0x41,0x60,0x75,0x60,0xA0,0x21, /* 00000298 "UFA`u`.!" */
+- 0x92,0x94,0x60,0x87,0x42,0x55,0x46,0x30, /* 000002A0 "..`.BUF0" */
+- 0x8C,0x42,0x55,0x46,0x30,0x42,0x55,0x46, /* 000002A8 ".BUF0BUF" */
+- 0x41,0x54,0x4D,0x50,0x31,0x70,0x60,0x42, /* 000002B0 "ATMP1p`B" */
+- 0x55,0x46,0x41,0xA4,0x54,0x4D,0x50,0x31, /* 000002B8 "UFA.TMP1" */
+- 0xA4,0x00,0x14,0x35,0x48,0x4C,0x50,0x37, /* 000002C0 "...5HLP7" */
+- 0x00,0x70,0x42,0x55,0x46,0x41,0x60,0x72, /* 000002C8 ".pBUFA`r" */
+- 0x60,0x0A,0x04,0x60,0xA0,0x21,0x92,0x94, /* 000002D0 "`..`.!.." */
+- 0x60,0x87,0x42,0x55,0x46,0x30,0x8A,0x42, /* 000002D8 "`.BUF0.B" */
+- 0x55,0x46,0x30,0x42,0x55,0x46,0x41,0x53, /* 000002E0 "UF0BUFAS" */
+- 0x58,0x32,0x32,0x70,0x60,0x42,0x55,0x46, /* 000002E8 "X22p`BUF" */
+- 0x41,0xA4,0x53,0x58,0x32,0x32,0xA4,0x00, /* 000002F0 "A.SX22.." */
+- 0x14,0x1C,0x48,0x4C,0x50,0x38,0x02,0xA0, /* 000002F8 "..HLP8.." */
+- 0x15,0x95,0x69,0x87,0x68,0x8C,0x68,0x69, /* 00000300 "..i.h.hi" */
+- 0x54,0x4D,0x50,0x31,0x70,0x48,0x4C,0x50, /* 00000308 "TMP1pHLP" */
+- 0x36,0x54,0x4D,0x50,0x31,0x14,0x16,0x48, /* 00000310 "6TMP1..H" */
+- 0x4C,0x50,0x39,0x02,0x70,0x00,0x60,0xA2, /* 00000318 "LP9.p.`." */
+- 0x0C,0x95,0x60,0x69,0x48,0x4C,0x50,0x38, /* 00000320 "..`iHLP8" */
+- 0x68,0x60,0x75,0x60,0x14,0x22,0x48,0x4C, /* 00000328 "h`u`."HL" */
+- 0x50,0x41,0x00,0x70,0x48,0x4C,0x50,0x36, /* 00000330 "PA.pHLP6" */
+- 0x60,0x08,0x54,0x4D,0x50,0x5F,0x11,0x02, /* 00000338 "`.TMP_.." */
+- 0x60,0x48,0x4C,0x50,0x39,0x54,0x4D,0x50, /* 00000340 "`HLP9TMP" */
+- 0x5F,0x60,0xA4,0x54,0x4D,0x50,0x5F,0x14, /* 00000348 "_`.TMP_." */
+- 0x0C,0x52,0x45,0x4C,0x5F,0x00,0x5B,0x27, /* 00000350 ".REL_.['" */
+- 0x53,0x59,0x4E,0x43,0x5B,0x82,0x3C,0x41, /* 00000358 "SYNC[.<A" */
+- 0x43,0x5F,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00000360 "C__._HID" */
+- 0x0D,0x41,0x43,0x50,0x49,0x30,0x30,0x30, /* 00000368 ".ACPI000" */
+- 0x33,0x00,0x08,0x5F,0x50,0x43,0x4C,0x12, /* 00000370 "3.._PCL." */
+- 0x0F,0x03,0x5C,0x5F,0x53,0x42,0x5F,0x42, /* 00000378 "..\_SB_B" */
+- 0x41,0x54,0x30,0x42,0x41,0x54,0x31,0x14, /* 00000380 "AT0BAT1." */
+- 0x08,0x5F,0x50,0x53,0x52,0x00,0xA4,0x00, /* 00000388 "._PSR..." */
+- 0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4, /* 00000390 ".._STA.." */
+- 0x0A,0x0F,0x08,0x42,0x49,0x46,0x50,0x12, /* 00000398 "...BIFP." */
+- 0x02,0x0D,0x14,0x49,0x0C,0x42,0x49,0x46, /* 000003A0 "...I.BIF" */
+- 0x5F,0x01,0x41,0x43,0x51,0x52,0x49,0x4E, /* 000003A8 "_.ACQRIN" */
+- 0x49,0x54,0x01,0x49,0x4E,0x49,0x54,0x68, /* 000003B0 "IT.INITh" */
+- 0x48,0x4C,0x50,0x35,0x70,0x48,0x4C,0x50, /* 000003B8 "HLP5pHLP" */
+- 0x37,0x88,0x42,0x49,0x46,0x50,0x00,0x00, /* 000003C0 "7.BIFP.." */
+- 0x70,0x48,0x4C,0x50,0x37,0x88,0x42,0x49, /* 000003C8 "pHLP7.BI" */
+- 0x46,0x50,0x01,0x00,0x70,0x48,0x4C,0x50, /* 000003D0 "FP..pHLP" */
+- 0x37,0x88,0x42,0x49,0x46,0x50,0x0A,0x02, /* 000003D8 "7.BIFP.." */
+- 0x00,0x70,0x48,0x4C,0x50,0x37,0x88,0x42, /* 000003E0 ".pHLP7.B" */
+- 0x49,0x46,0x50,0x0A,0x03,0x00,0x70,0x48, /* 000003E8 "IFP...pH" */
+- 0x4C,0x50,0x37,0x88,0x42,0x49,0x46,0x50, /* 000003F0 "LP7.BIFP" */
+- 0x0A,0x04,0x00,0x70,0x48,0x4C,0x50,0x37, /* 000003F8 "...pHLP7" */
+- 0x88,0x42,0x49,0x46,0x50,0x0A,0x05,0x00, /* 00000400 ".BIFP..." */
+- 0x70,0x48,0x4C,0x50,0x37,0x88,0x42,0x49, /* 00000408 "pHLP7.BI" */
+- 0x46,0x50,0x0A,0x06,0x00,0x70,0x48,0x4C, /* 00000410 "FP...pHL" */
+- 0x50,0x37,0x88,0x42,0x49,0x46,0x50,0x0A, /* 00000418 "P7.BIFP." */
+- 0x07,0x00,0x70,0x48,0x4C,0x50,0x37,0x88, /* 00000420 "..pHLP7." */
+- 0x42,0x49,0x46,0x50,0x0A,0x08,0x00,0x70, /* 00000428 "BIFP...p" */
+- 0x48,0x4C,0x50,0x41,0x88,0x42,0x49,0x46, /* 00000430 "HLPA.BIF" */
+- 0x50,0x0A,0x09,0x00,0x70,0x48,0x4C,0x50, /* 00000438 "P...pHLP" */
+- 0x41,0x88,0x42,0x49,0x46,0x50,0x0A,0x0A, /* 00000440 "A.BIFP.." */
+- 0x00,0x70,0x48,0x4C,0x50,0x41,0x88,0x42, /* 00000448 ".pHLPA.B" */
+- 0x49,0x46,0x50,0x0A,0x0B,0x00,0x70,0x48, /* 00000450 "IFP...pH" */
+- 0x4C,0x50,0x41,0x88,0x42,0x49,0x46,0x50, /* 00000458 "LPA.BIFP" */
+- 0x0A,0x0C,0x00,0x52,0x45,0x4C,0x5F,0xA4, /* 00000460 "...REL_." */
+- 0x42,0x49,0x46,0x50,0x5B,0x82,0x4F,0x0B, /* 00000468 "BIFP[.O." */
+- 0x42,0x41,0x54,0x30,0x08,0x5F,0x48,0x49, /* 00000470 "BAT0._HI" */
+- 0x44,0x0C,0x41,0xD0,0x0C,0x0A,0x08,0x5F, /* 00000478 "D.A...._" */
+- 0x55,0x49,0x44,0x01,0x08,0x5F,0x50,0x43, /* 00000480 "UID.._PC" */
+- 0x4C,0x12,0x07,0x01,0x5C,0x5F,0x53,0x42, /* 00000488 "L...\_SB" */
+- 0x5F,0x14,0x14,0x5F,0x53,0x54,0x41,0x00, /* 00000490 "_.._STA." */
+- 0x70,0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x50, /* 00000498 "p\._SB_P" */
+- 0x38,0x38,0x5F,0x60,0xA4,0x60,0x14,0x0F, /* 000004A0 "88_`.`.." */
+- 0x5F,0x42,0x49,0x46,0x00,0x70,0x42,0x49, /* 000004A8 "_BIF.pBI" */
+- 0x46,0x5F,0x01,0x60,0xA4,0x60,0x14,0x46, /* 000004B0 "F_.`.`.F" */
+- 0x07,0x5F,0x42,0x53,0x54,0x00,0x70,0x01, /* 000004B8 "._BST.p." */
+- 0x5C,0x2E,0x5F,0x53,0x42,0x5F,0x44,0x42, /* 000004C0 "\._SB_DB" */
+- 0x47,0x31,0x41,0x43,0x51,0x52,0x49,0x4E, /* 000004C8 "G1ACQRIN" */
+- 0x49,0x54,0x0A,0x02,0x49,0x4E,0x49,0x54, /* 000004D0 "IT..INIT" */
+- 0x01,0x48,0x4C,0x50,0x35,0x08,0x42,0x53, /* 000004D8 ".HLP5.BS" */
+- 0x54,0x30,0x12,0x02,0x04,0x70,0x48,0x4C, /* 000004E0 "T0...pHL" */
+- 0x50,0x37,0x88,0x42,0x53,0x54,0x30,0x00, /* 000004E8 "P7.BST0." */
+- 0x00,0x70,0x48,0x4C,0x50,0x37,0x88,0x42, /* 000004F0 ".pHLP7.B" */
+- 0x53,0x54,0x30,0x01,0x00,0x70,0x48,0x4C, /* 000004F8 "ST0..pHL" */
+- 0x50,0x37,0x88,0x42,0x53,0x54,0x30,0x0A, /* 00000500 "P7.BST0." */
+- 0x02,0x00,0x70,0x48,0x4C,0x50,0x37,0x88, /* 00000508 "..pHLP7." */
+- 0x42,0x53,0x54,0x30,0x0A,0x03,0x00,0x52, /* 00000510 "BST0...R" */
+- 0x45,0x4C,0x5F,0x70,0x0A,0x02,0x5C,0x2E, /* 00000518 "EL_p..\." */
+- 0x5F,0x53,0x42,0x5F,0x44,0x42,0x47,0x31, /* 00000520 "_SB_DBG1" */
+- 0xA4,0x42,0x53,0x54,0x30,0x5B,0x82,0x47, /* 00000528 ".BST0[.G" */
+- 0x0A,0x42,0x41,0x54,0x31,0x08,0x5F,0x48, /* 00000530 ".BAT1._H" */
+- 0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0A,0x08, /* 00000538 "ID.A...." */
+- 0x5F,0x55,0x49,0x44,0x0A,0x02,0x08,0x5F, /* 00000540 "_UID..._" */
+- 0x50,0x43,0x4C,0x12,0x07,0x01,0x5C,0x5F, /* 00000548 "PCL...\_" */
+- 0x53,0x42,0x5F,0x14,0x09,0x5F,0x53,0x54, /* 00000550 "SB_.._ST" */
+- 0x41,0x00,0xA4,0x0A,0x0F,0x14,0x19,0x5F, /* 00000558 "A......_" */
+- 0x42,0x49,0x46,0x00,0x70,0x5C,0x2E,0x5F, /* 00000560 "BIF.p\._" */
+- 0x53,0x42,0x5F,0x50,0x42,0x32,0x5F,0x60, /* 00000568 "SB_PB2_`" */
+- 0xA4,0x42,0x49,0x46,0x5F,0x0A,0x02,0x14, /* 00000570 ".BIF_..." */
+- 0x4E,0x05,0x5F,0x42,0x53,0x54,0x00,0x41, /* 00000578 "N._BST.A" */
+- 0x43,0x51,0x52,0x49,0x4E,0x49,0x54,0x0A, /* 00000580 "CQRINIT." */
+- 0x02,0x49,0x4E,0x49,0x54,0x0A,0x02,0x48, /* 00000588 ".INIT..H" */
+- 0x4C,0x50,0x35,0x08,0x42,0x53,0x54,0x31, /* 00000590 "LP5.BST1" */
+- 0x12,0x02,0x04,0x70,0x48,0x4C,0x50,0x37, /* 00000598 "...pHLP7" */
+- 0x88,0x42,0x53,0x54,0x31,0x00,0x00,0x70, /* 000005A0 ".BST1..p" */
+- 0x48,0x4C,0x50,0x37,0x88,0x42,0x53,0x54, /* 000005A8 "HLP7.BST" */
+- 0x31,0x01,0x00,0x70,0x48,0x4C,0x50,0x37, /* 000005B0 "1..pHLP7" */
+- 0x88,0x42,0x53,0x54,0x31,0x0A,0x02,0x00, /* 000005B8 ".BST1..." */
+- 0x70,0x48,0x4C,0x50,0x37,0x88,0x42,0x53, /* 000005C0 "pHLP7.BS" */
+- 0x54,0x31,0x0A,0x03,0x00,0x52,0x45,0x4C, /* 000005C8 "T1...REL" */
+- 0x5F,0xA4,0x42,0x53,0x54,0x31,
+-};
+diff -r 0477f9061c8a tools/firmware/hvmloader/acpi/ssdt_tpm.h
+--- a/tools/firmware/hvmloader/acpi/ssdt_tpm.h Fri Mar 20 17:42:46 2009 +0000
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,25 +0,0 @@
+-/*
+- *
+- * Intel ACPI Component Architecture
+- * ASL Optimizing Compiler version 20060707 [Dec 30 2006]
+- * Copyright (C) 2000 - 2006 Intel Corporation
+- * Supports ACPI Specification Revision 3.0a
+- *
+- * Compilation of "ssdt_tpm.asl" - Sat Dec 30 15:31:27 2006
+- *
+- * C source code output
+- *
+- */
+-unsigned char AmlCode_TPM[] =
+-{
+- 0x53,0x53,0x44,0x54,0x4C,0x00,0x00,0x00, /* 00000000 "SSDTL..." */
+- 0x02,0x56,0x58,0x65,0x6E,0x00,0x00,0x00, /* 00000008 ".VXen..." */
+- 0x48,0x56,0x4D,0x00,0x00,0x00,0x00,0x00, /* 00000010 "HVM....." */
+- 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
+- 0x07,0x07,0x06,0x20,0x5B,0x82,0x26,0x54, /* 00000020 "... [.&T" */
+- 0x50,0x4D,0x5F,0x08,0x5F,0x48,0x49,0x44, /* 00000028 "PM_._HID" */
+- 0x0C,0x41,0xD0,0x0C,0x31,0x08,0x5F,0x43, /* 00000030 ".A..1._C" */
+- 0x52,0x53,0x11,0x11,0x0A,0x0E,0x86,0x09, /* 00000038 "RS......" */
+- 0x00,0x01,0x00,0x00,0xD4,0xFE,0x00,0x50, /* 00000040 ".......P" */
+- 0x00,0x00,0x79,0x00,
+-};
--- /dev/null
+diff -Nur a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c
+--- a/tools/firmware/hvmloader/acpi/build.c 2009-04-01 16:31:10.000000000 -0400
++++ b/tools/firmware/hvmloader/acpi/build.c 2009-04-01 17:04:59.000000000 -0400
+@@ -19,8 +19,12 @@
+ #include "acpi2_0.h"
+ #include "ssdt_tpm.h"
+ #include "ssdt_pm.h"
++#include "ssdt_hp_6930p_elitebook.h"
++#include "ssdt_dell_latitude_eseries.h"
++#include "ssdt_lenovo_t_and_x_series.h"
+ #include "../config.h"
+ #include "../util.h"
++#include "../smbios_types.h"
+
+ #define align16(sz) (((sz) + 15) & ~15)
+ #define fixed_strcpy(d, s) strncpy((d), (s), sizeof(d))
+@@ -33,6 +37,16 @@
+ extern unsigned char AmlCode[];
+ extern int DsdtLen;
+
++#define OEM_NAME_DELL "Dell"
++#define OEM_NAME_HP "Hewlett-Packard"
++#define OEM_NAME_LENOVO "LENOVO"
++
++#define OEM_MODEL_DELL_LATITUDE_1 "Latitude E4200"
++#define OEM_MODEL_DELL_LATITUDE_2 "Latitude E6500"
++#define OEM_MODEL_HP_EliteBook "HP EliteBook 6930p"
++#define OEM_MODEL_LENOVO_T400 "6475BY3"
++#define OEM_MODEL_LENOVO_X200 "74542NU"
++
+ static void set_checksum(
+ void *table, uint32_t checksum_offset, uint32_t length)
+ {
+@@ -59,6 +73,12 @@
+ return 1;
+ }
+
++static uint8_t oem_value_add_exists(void)
++{
++ outb(0x96, 100);
++ return (inb(0x96) == 100);
++}
++
+ static void pt_update_acpi_tables(struct acpi_header *header, struct hvm_acinfo_table *va_ac)
+ {
+ memcpy(header->oem_id, va_ac->oem_id, HVM_ACINFO_OEM_ID_SIZE);
+@@ -68,6 +88,59 @@
+ header->creator_revision = va_ac->creator_revision;
+ }
+
++static int construct_oem_ssdt(uint8_t *buf)
++{
++ struct smbios_type_1 *type1_info;
++ char *manufacturer, *model;
++ struct hvm_sminfo_table *pa_sm;
++ struct hvm_smtable_header *header;
++
++ pa_sm = get_hvm_sminfo_table();
++ if ( pa_sm == NULL )
++ return 0;
++
++ header = (struct hvm_smtable_header *)get_sminfo_by_type(pa_sm, 1);
++ if ( header == NULL )
++ return 0;
++ if ( header->sm_length < sizeof(struct smbios_type_1) )
++ return 0;
++
++ type1_info = (struct smbios_type_1 *)((char *)header + sizeof(struct hvm_smtable_header));
++ manufacturer = (char *)type1_info + type1_info->header.length;
++ model = manufacturer + strlen(manufacturer) + 1;
++
++ if ( strncmp(manufacturer, OEM_NAME_DELL, strlen(OEM_NAME_DELL)) == 0 )
++ {
++ if ( (strncmp(model, OEM_MODEL_DELL_LATITUDE_1, strlen(OEM_MODEL_DELL_LATITUDE_1)) != 0) &&
++ (strncmp(model, OEM_MODEL_DELL_LATITUDE_2, strlen(OEM_MODEL_DELL_LATITUDE_2)) != 0) )
++ return 0;
++
++ memcpy(buf, AmlCode_DELL_LATITUDE_ESERIES, sizeof(AmlCode_DELL_LATITUDE_ESERIES));
++ return align16(sizeof(AmlCode_DELL_LATITUDE_ESERIES));
++ }
++
++ if ( strncmp(manufacturer, OEM_NAME_HP, strlen(OEM_NAME_HP)) == 0 )
++ {
++ if ( strncmp(model, OEM_MODEL_HP_EliteBook, strlen(OEM_MODEL_HP_EliteBook)) != 0 )
++ return 0;
++
++ memcpy(buf, AmlCode_HP_6930P_ELITEBOOK, sizeof(AmlCode_HP_6930P_ELITEBOOK));
++ return align16(sizeof(AmlCode_HP_6930P_ELITEBOOK));
++ }
++
++ if ( strncmp(manufacturer, OEM_NAME_LENOVO, strlen(OEM_NAME_LENOVO)) == 0 )
++ {
++ if ( (strncmp(model, OEM_MODEL_LENOVO_T400, strlen(OEM_MODEL_LENOVO_T400)) != 0) &&
++ (strncmp(model, OEM_MODEL_LENOVO_X200, strlen(OEM_MODEL_LENOVO_X200)) != 0) )
++ return 0;
++
++ memcpy(buf, AmlCode_LENOVO_T_AND_X_SERIES, sizeof(AmlCode_LENOVO_T_AND_X_SERIES));
++ return align16(sizeof(AmlCode_LENOVO_T_AND_X_SERIES));
++ }
++
++ return 0;
++}
++
+ static int construct_madt(struct acpi_20_madt *madt, struct hvm_acinfo_table *va_ac)
+ {
+ struct acpi_20_madt_intsrcovr *intsrcovr;
+@@ -183,12 +256,13 @@
+
+ static int construct_secondary_tables(uint8_t *buf, unsigned long *table_ptrs, struct hvm_acinfo_table *va_ac)
+ {
+- int offset = 0, nr_tables = 0;
++ int offset = 0, nr_tables = 0, oem_ssdt_offset = 0;
+ struct acpi_20_madt *madt;
+ struct acpi_20_hpet *hpet;
+ struct acpi_20_tcpa *tcpa;
+ static const uint16_t tis_signature[] = {0x0001, 0x0001, 0x0001};
+ uint16_t *tis_hdr;
++ uint8_t *oem_ssdt;
+ void *lasa;
+
+ /* MADT. */
+@@ -222,6 +296,17 @@
+ offset += align16(va_ac->slic_length);
+ }
+
++ if ( oem_value_add_exists() )
++ {
++ oem_ssdt = &buf[offset];
++ oem_ssdt_offset = construct_oem_ssdt(oem_ssdt);
++ if ( oem_ssdt_offset != 0 )
++ {
++ offset += oem_ssdt_offset;
++ table_ptrs[nr_tables++] = (unsigned long)oem_ssdt;
++ }
++ }
++
+ /* TPM TCPA and SSDT. */
+ tis_hdr = (uint16_t *)0xFED40F00;
+ if ( (tis_hdr[0] == tis_signature[0]) &&
+diff -Nur a/tools/firmware/hvmloader/acpi/Makefile b/tools/firmware/hvmloader/acpi/Makefile
+--- a/tools/firmware/hvmloader/acpi/Makefile 2009-04-01 16:30:52.000000000 -0400
++++ b/tools/firmware/hvmloader/acpi/Makefile 2009-04-01 16:36:38.000000000 -0400
+@@ -19,7 +19,7 @@
+ include $(XEN_ROOT)/tools/firmware/Rules.mk
+
+ C_SRC = build.c dsdt.c static_tables.c
+-H_SRC = $(wildcard *.h) ssdt_pm.h ssdt_tpm.h
++H_SRC = $(wildcard *.h) ssdt_pm.h ssdt_hp_6930p_elitebook.h ssdt_dell_latitude_eseries.h ssdt_lenovo_t_and_x_series.h ssdt_tpm.h
+ OBJS = $(patsubst %.c,%.o,$(C_SRC))
+
+ build.o: $(H_SRC) build.c
+@@ -39,6 +39,27 @@
+ mv $*.hex $@
+ rm -f *.aml
+
++ssdt_hp_6930p_elitebook.h: ssdt_hp_6930p_elitebook.asl
++ $(MAKE) iasl
++ iasl -tc $<
++ sed -i'' -re 's/AmlCode/AmlCode_HP_6930P_ELITEBOOK/g' $*.hex
++ mv $*.hex $@
++ rm -f *.aml
++
++ssdt_dell_latitude_eseries.h: ssdt_dell_latitude_eseries.asl
++ $(MAKE) iasl
++ iasl -tc $<
++ sed -i'' -re 's/AmlCode/AmlCode_DELL_LATITUDE_ESERIES/g' $*.hex
++ mv $*.hex $@
++ rm -f *.aml
++
++ssdt_lenovo_t_and_x_series.h: ssdt_lenovo_t_and_x_series.asl
++ $(MAKE) iasl
++ iasl -tc $<
++ sed -i'' -re 's/AmlCode/AmlCode_LENOVO_T_AND_X_SERIES/g' $*.hex
++ mv $*.hex $@
++ rm -f *.aml
++
+ ssdt_tpm.h: ssdt_tpm.asl
+ $(MAKE) iasl
+ iasl -tc $<
+@@ -60,10 +81,11 @@
+ @echo "If wget failed, please download and compile manually from"
+ @echo "http://acpica.org/downloads/"
+ @echo
+- wget $(IASL_URL)
+- tar xzf $(IASL_VER).tar.gz
+- make -C $(IASL_VER)/compiler
+- $(INSTALL_PROG) $(IASL_VER)/compiler/iasl /$(BINDIR)/iasl
++ @exit 1
++# wget $(IASL_URL)
++# tar xzf $(IASL_VER).tar.gz
++# make -C $(IASL_VER)/compiler
++# $(INSTALL_PROG) $(IASL_VER)/compiler/iasl /$(BINDIR)/iasl
+
+ %.o: %.c
+ $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+@@ -72,6 +94,6 @@
+ $(AR) rc $@ $(OBJS)
+
+ clean:
+- rm -rf *.a *.o dsdt.c ssdt_pm.h ssdt_tpm.h $(IASL_VER) $(IASL_VER).tar.gz
++ rm -rf *.a *.o dsdt.c ssdt_pm.h ssdt_hp_6930p_elitebook.h ssdt_dell_latitude_eseries.h ssdt_lenovo_t_and_x_series.h ssdt_tpm.h $(IASL_VER) $(IASL_VER).tar.gz
+
+ install: all
+diff
+--- /dev/null
++++ b/tools/firmware/hvmloader/acpi/ssdt_dell_latitude_eseries.asl 2009-04-01 16:35:13.000000000 -0400
+@@ -0,0 +1,516 @@
++/*
++ * ssdt_dell_latitude_eseries.asl
++ *
++ * Copyright (c) 2009 Kamala Narasimhan
++ * Copyright (c) 2009 Citrix Systems, Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++/* SSDT for exposing Dell latitude eseries specific value add functionalities like
++ * hotkeys, special buttons.
++ */
++
++/* IMPLEMENTATION DETAILS: OEM value add features are generally exposed through
++ * WMI psuedo device objects. For our guests to benefit from such value add, we
++ * expose a psuedo device object in our vACPI layer also. This psuedo object is
++ * similar to the underlying base firmware object in the sense we expose the
++ * same _WDG method which describes the WMI methods, data objects and events
++ * provided by the WMI psuedo object. Guest wmi wrapper driver which automatically
++ * gets loaded upon identifying this WMI pseudo device object, calls _WDG to get
++ * known entry points and calls those entry points for further information exchange.
++ * Reference - http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
++ */
++
++/* COMMUNICATION DETAILS -
++ * Command port - 0x96
++ * Writes to this port describe what type of information is about
++ * to be exchanged. E.g., guid, input argument transfer etc.
++ * Data Port - 0x98 and 0x9A for byte and dword data transfer respectively.
++ * Communicates data to and from the backend. E.g. Input buffer values
++ * get written to this port and output buffer values are read from this
++ * port.
++ */
++
++DefinitionBlock ("SSDT_DELL_LATITUDE_ESERIES.aml", "SSDT", 2, "Xen", "HVM", 0)
++{
++ Scope (\_SB)
++ {
++
++ OperationRegion (LAT1, SystemIO, 0x96, 0x01)
++ Field (LAT1, ByteAcc, NoLock, Preserve)
++ {
++ P96, 8
++ }
++
++ OperationRegion (LAT2, SystemIO, 0x98, 0x01)
++ Field (LAT2, ByteAcc, NoLock, Preserve)
++ {
++ P98, 8
++ }
++
++ OperationRegion (LAT3, SystemIO, 0x9A, 0x04)
++ Field (LAT3, DWordAcc, NoLock, Preserve)
++ {
++ P9A, 32
++ }
++
++ Device (AMW0)
++ {
++ /* Exposing a pseudo device with HID PNP0C14 will
++ * result in Windows guest loading their WMI wrapper
++ * driver - wmiacpi.sys
++ */
++ Name (_HID, EisaId ("PNP0C14"))
++ Name (_UID, 0x00)
++
++ /* Following list of data blocks exposed by _WDG is same as the
++ * one provided by the underlying firmware. Refer to -
++ * http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
++ * for further information about _WDG and what it exposes.
++ */
++ Name (_WDG, Buffer (0x78)
++ {
++ /* Data Block 1 */
++ /* GUID */
++ 0xBC, 0xDC, 0x9D, 0x8D, 0x97, 0xA9, 0xDA, 0x11,
++ 0xB0, 0x12, 0xB6, 0x22, 0xA1, 0xEF, 0x54, 0x92,
++ 0x41, 0x41, /* Object ID - WQAA */
++ 0x01, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 2 */
++ /* GUID */
++ 0xCE, 0x93, 0x05, 0xA8, 0x97, 0xA9, 0xDA, 0x11,
++ 0xB0, 0x12, 0xB6, 0x22, 0xA1, 0xEF, 0x54, 0x92,
++ 0x42, 0x41, /*Object ID - WMBA */
++ 0x01, /* Instance count */
++ 0x02, /* Flag - Method */
++
++ /* Data Block 3 */
++ /* GUID */
++ 0x94, 0x59, 0xBB, 0x9D, 0x97, 0xA9, 0xDA, 0x11,
++ 0xB0, 0x12, 0xB6, 0x22, 0xA1, 0xEF, 0x54, 0x92,
++ 0xD0, 0x00, /* Event notification ID */
++ 0x01, /* Instance count */
++ 0x08, /* Flag - Event */
++
++ /* Data Block 4 */
++ /* GUID */
++ 0xE0, 0x6C, 0x77, 0xA3, 0x88, 0x1E, 0xDB, 0x11,
++ 0xA9, 0x8B, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66,
++ 0x42, 0x43, /* Object ID - WQBC */
++ 0x01, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 5 */
++ /* GUID */
++ 0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11,
++ 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10,
++ 0x4D, 0x4F, /* Object ID - WQMO */
++ 0x01, /* Instance count */
++ 0x00, /* Flag - Method */
++
++ /* Data Block 6 */
++ /* GUID */
++ 0x28, 0x07, 0xBD, 0x77, 0x34, 0x2E, 0x8C, 0x47,
++ 0xB6, 0x25, 0x67, 0xF0, 0x2A, 0x7E, 0x48, 0x97,
++ 0x42, 0x44, /* Object ID - WMBD */
++ 0x01, /* Instance count */
++ 0x02, /* Flag - Method */
++
++ })
++
++ /* Initialize cmd port and communicate invocation type
++ * i.e., method execution or query or set object
++ */
++ Method (INIT, 1, Serialized)
++ {
++ Store (100, P96)
++ Store (Arg0, P98)
++ }
++
++ /* Pass the guid pertaining to the operation */
++ Method (GUID, 1, Serialized)
++ {
++ Store (101, P96)
++ Store (0x0, Local0)
++ Store (Arg0, Local1)
++
++ While ( LLess(Local0,16) )
++ {
++ Add(Local1, Local0, Local2)
++ Store (DerefOf(Index (_WDG, Local2)), P98 )
++ Increment( Local0 )
++ }
++ }
++
++ /* Pass instance # for the associated object pertaining
++ * to the invocation.
++ */
++ Method (INST, 1, Serialized)
++ {
++ Store(102, P96)
++ Store(Arg0, P9A)
++ }
++
++ /* Pass method id relevant to the method about to be
++ * executed.
++ */
++ Method (MTID, 1, Serialized)
++ {
++ Store(103, P96)
++ Store(Arg0, P9A)
++ }
++
++ /* Pass input buffer pertaining to the current operation */
++ Method (IBUF, 1, Serialized)
++ {
++ Store (105, P96)
++ Store (SizeOf(Arg0), Local0)
++ Store (Local0, P9A)
++ ToBuffer (Arg0, Local1)
++ Store (0, Local2)
++ Store (104, P96)
++ While ( LLess(Local2,Local0) )
++ {
++ Store (DerefOf(Index (Local1, Local2)), P98)
++ Increment (Local2)
++ }
++ }
++
++ /* Now that the input arguments are passed, execute the command */
++ Method (EXEC, 0, Serialized)
++ {
++ Store (106, P96)
++ }
++
++ /* Get the output buffer pertaining to the just executed command */
++ Method (OBUF, 0, Serialized)
++ {
++ Store (108, P96)
++ Store (P9A, Local0)
++ Store (Buffer(Local0) {}, Local2)
++ Store (0, Local1)
++ Store (107, P96)
++ While ( LLess(Local1, Local0) )
++ {
++ Store (P98, Index(Local2, Local1))
++ Increment (Local1)
++ }
++ Return (Local2)
++ }
++
++ /* Get event data */
++ Method (_WED, 1, Serialized)
++ {
++ INIT (4)
++ Store (109, P96)
++ Store (Arg0, P98)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ /* Following are well know entry points as supplied by
++ * _WDG.
++ * @TODO: Though current testing suggest that defining
++ * a method for seralized execution is enough to prevent
++ * synchronization issues, consider using explicit mutexes
++ * for further protection.
++ */
++ Method (WQAA, 1, Serialized)
++ {
++ INIT (2)
++ GUID (0)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WMBA, 3, Serialized)
++ {
++ INIT (1)
++ GUID (20)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBC, 1, Serialized)
++ {
++ INIT (2)
++ GUID (60)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ /* Like all other well know entry points, we could delegate
++ * the below to the base firmware also. But, why ask for a
++ * static list (that too this big) and go through layer after
++ * layer to get it? Also, port i/o is not a good idea for this
++ * much data transfer. Luckily, this is the only place that appear
++ * to transfer so much data.
++ */
++ Name (WQMO, Buffer (0x06CD)
++ {
++ /* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00,
++ /* 0008 */ 0xBD, 0x06, 0x00, 0x00, 0x66, 0x23, 0x00, 0x00,
++ /* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54,
++ /* 0018 */ 0x98, 0x40, 0x91, 0x00, 0x01, 0x06, 0x18, 0x42,
++ /* 0020 */ 0x10, 0x11, 0x10, 0x22, 0x21, 0x30, 0x34, 0x32,
++ /* 0028 */ 0x0B, 0x03, 0x63, 0x04, 0x8A, 0x0B, 0x21, 0x07,
++ /* 0030 */ 0x10, 0x12, 0x07, 0x85, 0x12, 0x02, 0xA1, 0xFE,
++ /* 0038 */ 0x04, 0xF2, 0x2B, 0x00, 0xA1, 0x43, 0x01, 0x32,
++ /* 0040 */ 0x05, 0x18, 0x14, 0xE0, 0x14, 0x41, 0x04, 0xBD,
++ /* 0048 */ 0x0A, 0xB0, 0x29, 0xC0, 0xA4, 0x00, 0x8B, 0x02,
++ /* 0050 */ 0xB4, 0x0B, 0xB0, 0x2C, 0x40, 0xB7, 0x00, 0xE9,
++ /* 0058 */ 0xB0, 0x44, 0x24, 0x38, 0x4A, 0x0C, 0x38, 0x4A,
++ /* 0060 */ 0x27, 0xB6, 0x70, 0xC3, 0x06, 0x2F, 0x14, 0x45,
++ /* 0068 */ 0x33, 0x88, 0x92, 0xA0, 0x72, 0x01, 0xBE, 0x11,
++ /* 0070 */ 0x04, 0x5E, 0xAE, 0x00, 0xC9, 0x13, 0x90, 0x66,
++ /* 0078 */ 0x01, 0x86, 0x05, 0x58, 0x17, 0x20, 0x7B, 0x08,
++ /* 0080 */ 0x54, 0xEA, 0x10, 0x50, 0x72, 0x86, 0x80, 0x1A,
++ /* 0088 */ 0x40, 0xAB, 0x13, 0x10, 0x7E, 0xA5, 0x53, 0x42,
++ /* 0090 */ 0x12, 0x84, 0x33, 0x56, 0xF1, 0xF8, 0x9A, 0x45,
++ /* 0098 */ 0xD3, 0x73, 0x92, 0x73, 0x0C, 0x39, 0x1E, 0x17,
++ /* 00A0 */ 0x7A, 0x10, 0x3C, 0x90, 0x02, 0x10, 0x16, 0x1E,
++ /* 00A8 */ 0x42, 0x11, 0x60, 0x50, 0x12, 0xC6, 0x42, 0x5D,
++ /* 00B0 */ 0x8C, 0x1A, 0x35, 0x52, 0x36, 0x20, 0x43, 0x94,
++ /* 00B8 */ 0x36, 0x6A, 0xF4, 0x80, 0xCE, 0xEF, 0x48, 0xCE,
++ /* 00C0 */ 0xEE, 0xE8, 0x8E, 0x24, 0x81, 0x51, 0x8F, 0xE9,
++ /* 00C8 */ 0x18, 0x0B, 0x9B, 0x91, 0x50, 0x63, 0x34, 0x07,
++ /* 00D0 */ 0x45, 0xA0, 0x71, 0x83, 0xB6, 0x44, 0x58, 0x8D,
++ /* 00D8 */ 0x2B, 0xF6, 0x99, 0x59, 0xF8, 0xB0, 0x84, 0x71,
++ /* 00E0 */ 0x04, 0x07, 0x96, 0xA0, 0x51, 0x34, 0xCD, 0xF1,
++ /* 00E8 */ 0x6C, 0x43, 0x24, 0x38, 0x88, 0xD0, 0x18, 0x19,
++ /* 00F0 */ 0x10, 0xF2, 0x3C, 0x6C, 0x81, 0x1E, 0x79, 0x02,
++ /* 00F8 */ 0xBB, 0x47, 0x94, 0x42, 0x04, 0xCD, 0xF7, 0x44,
++ /* 0100 */ 0x6A, 0x14, 0xA0, 0x0D, 0x43, 0xB6, 0xCE, 0x06,
++ /* 0108 */ 0x1A, 0x6A, 0xAC, 0xC6, 0x50, 0x04, 0x11, 0x21,
++ /* 0110 */ 0x68, 0x14, 0x83, 0x45, 0x08, 0x15, 0xE2, 0xFF,
++ /* 0118 */ 0x1F, 0x25, 0xEA, 0x29, 0x05, 0x89, 0x5A, 0x19,
++ /* 0120 */ 0x88, 0xD0, 0x82, 0x19, 0x81, 0xD9, 0x1F, 0x04,
++ /* 0128 */ 0x89, 0x71, 0x66, 0xD0, 0x61, 0xC1, 0x32, 0x40,
++ /* 0130 */ 0x64, 0x44, 0xD0, 0x68, 0xD8, 0x59, 0xC0, 0xC3,
++ /* 0138 */ 0xF1, 0x4C, 0x9A, 0x9F, 0x98, 0x06, 0x67, 0x82,
++ /* 0140 */ 0xB1, 0x21, 0xA4, 0x01, 0x42, 0xA2, 0x0E, 0x0E,
++ /* 0148 */ 0x94, 0xC0, 0x52, 0x06, 0x4E, 0x6C, 0x8F, 0x4B,
++ /* 0150 */ 0xE3, 0x3B, 0xE3, 0xA8, 0x21, 0x4E, 0xFD, 0xCC,
++ /* 0158 */ 0xFC, 0x8F, 0xF0, 0x16, 0x7C, 0x04, 0xE0, 0x63,
++ /* 0160 */ 0xF0, 0x60, 0x0F, 0x21, 0xE0, 0x11, 0xB2, 0x33,
++ /* 0168 */ 0x80, 0x01, 0xF1, 0xDE, 0x27, 0x4D, 0xE6, 0xE2,
++ /* 0170 */ 0xB3, 0x00, 0x8C, 0xE1, 0xC3, 0x35, 0x3E, 0x0A,
++ /* 0178 */ 0x8D, 0x87, 0x9D, 0x0F, 0xD8, 0xB8, 0x38, 0xBC,
++ /* 0180 */ 0x0F, 0x05, 0x27, 0x5C, 0x2C, 0x88, 0x02, 0x40,
++ /* 0188 */ 0x48, 0xD6, 0xF9, 0x00, 0x3D, 0xEB, 0x63, 0x0B,
++ /* 0190 */ 0xF8, 0x30, 0xD0, 0xEC, 0x1D, 0x82, 0x10, 0xBC,
++ /* 0198 */ 0x08, 0xF8, 0xE8, 0xE0, 0xE3, 0x86, 0xC7, 0xFD,
++ /* 01A0 */ 0xBC, 0x01, 0x86, 0xC3, 0x81, 0x87, 0xE3, 0xD3,
++ /* 01A8 */ 0x06, 0x70, 0x19, 0x01, 0x97, 0xF6, 0xA4, 0x30,
++ /* 01B0 */ 0x81, 0x24, 0x3F, 0x01, 0x24, 0x06, 0x06, 0x75,
++ /* 01B8 */ 0x20, 0xF0, 0xC1, 0x02, 0xAE, 0x24, 0x38, 0xD4,
++ /* 01C0 */ 0xF0, 0x3C, 0xB1, 0x07, 0x84, 0xFF, 0xFF, 0x51,
++ /* 01C8 */ 0x9E, 0xC8, 0x8B, 0x81, 0xA7, 0xFF, 0x18, 0x00,
++ /* 01D0 */ 0xE3, 0x80, 0xE0, 0x69, 0x9D, 0x94, 0x6F, 0x1E,
++ /* 01D8 */ 0x0F, 0x12, 0x1E, 0x54, 0x98, 0x04, 0x3E, 0x25,
++ /* 01E0 */ 0x30, 0x34, 0x7E, 0xDC, 0x00, 0xEB, 0xA8, 0xF1,
++ /* 01E8 */ 0x07, 0x04, 0x78, 0x27, 0x89, 0xF3, 0xEB, 0x73,
++ /* 01F0 */ 0x00, 0x3A, 0x34, 0x9C, 0x22, 0x03, 0x79, 0x0D,
++ /* 01F8 */ 0x38, 0xE9, 0x53, 0xF2, 0xF8, 0x12, 0xF8, 0xCC,
++ /* 0200 */ 0x01, 0xFB, 0x6E, 0x70, 0x18, 0x07, 0x13, 0x22,
++ /* 0208 */ 0xC2, 0x7B, 0xC0, 0x53, 0x87, 0xEF, 0x1A, 0x8F,
++ /* 0210 */ 0x02, 0x81, 0x22, 0xF4, 0x76, 0xE6, 0xA0, 0xA7,
++ /* 0218 */ 0x10, 0xA3, 0x44, 0x3B, 0xAB, 0x30, 0x0F, 0x1C,
++ /* 0220 */ 0x51, 0x7C, 0xE4, 0x30, 0xC2, 0xBB, 0x87, 0xEF,
++ /* 0228 */ 0x04, 0x0F, 0x20, 0xAD, 0x4D, 0x4E, 0xB8, 0x81,
++ /* 0230 */ 0x9E, 0x39, 0x58, 0xB4, 0x33, 0x8B, 0x2C, 0x80,
++ /* 0238 */ 0x28, 0xD2, 0x68, 0x50, 0x67, 0x04, 0x9F, 0x06,
++ /* 0240 */ 0x3C, 0xAD, 0xA7, 0x18, 0x1F, 0x25, 0x0C, 0x72,
++ /* 0248 */ 0x86, 0x07, 0xF6, 0x9C, 0xF0, 0x18, 0xE0, 0x01,
++ /* 0250 */ 0xB3, 0xFB, 0x81, 0x8F, 0x13, 0x3E, 0x17, 0xE0,
++ /* 0258 */ 0x5D, 0x03, 0x6A, 0x86, 0x3E, 0x6C, 0xC0, 0x39,
++ /* 0260 */ 0x74, 0xE0, 0x4F, 0x13, 0xF8, 0x83, 0x05, 0x7E,
++ /* 0268 */ 0x3C, 0xBE, 0xE6, 0xB0, 0x09, 0x27, 0xB0, 0xFC,
++ /* 0270 */ 0x41, 0xA0, 0x46, 0x66, 0x68, 0xCF, 0xF2, 0xB4,
++ /* 0278 */ 0x5E, 0x03, 0x7C, 0xDA, 0x31, 0x81, 0xCF, 0x1B,
++ /* 0280 */ 0xFE, 0xFF, 0xFF, 0x73, 0x3C, 0x1E, 0xF0, 0x2B,
++ /* 0288 */ 0x3E, 0x5D, 0x90, 0xBB, 0x82, 0xE7, 0xEB, 0xB3,
++ /* 0290 */ 0x0B, 0xB3, 0x31, 0x1E, 0xD4, 0x28, 0x7C, 0xC0,
++ /* 0298 */ 0xC1, 0x9D, 0x5D, 0x7C, 0x04, 0xF0, 0xD9, 0x05,
++ /* 02A0 */ 0x78, 0x4E, 0xE2, 0x59, 0x02, 0xBC, 0x87, 0x00,
++ /* 02A8 */ 0x9F, 0x48, 0xE2, 0x3D, 0x6C, 0xC1, 0x18, 0x31,
++ /* 02B0 */ 0x1E, 0xF2, 0x8C, 0xAB, 0x1E, 0x86, 0x2E, 0x02,
++ /* 02B8 */ 0x56, 0x77, 0x5F, 0x41, 0x1D, 0xBD, 0xC0, 0x04,
++ /* 02C0 */ 0xF5, 0x9A, 0x81, 0x3B, 0xBD, 0x00, 0x9F, 0x53,
++ /* 02C8 */ 0x16, 0xBC, 0xFF, 0xFF, 0x29, 0x0B, 0xB8, 0x5F,
++ /* 02D0 */ 0x15, 0xF8, 0x11, 0x05, 0x0C, 0x90, 0x9D, 0x9D,
++ /* 02D8 */ 0x4E, 0x84, 0xF0, 0x5E, 0xF2, 0x1C, 0xE2, 0xDB,
++ /* 02E0 */ 0x95, 0x0F, 0x26, 0x41, 0x9E, 0x03, 0x22, 0x3C,
++ /* 02E8 */ 0x65, 0xF1, 0xFB, 0x40, 0x94, 0x98, 0x07, 0x14,
++ /* 02F0 */ 0x29, 0x8A, 0x11, 0x83, 0x3C, 0x61, 0xF9, 0x7A,
++ /* 02F8 */ 0x12, 0xC3, 0xD0, 0xC1, 0xC2, 0x85, 0x8F, 0xF0,
++ /* 0300 */ 0x94, 0x05, 0x58, 0xBC, 0x64, 0x61, 0x4E, 0x59,
++ /* 0308 */ 0x30, 0xDF, 0x06, 0x3E, 0x65, 0x81, 0xE3, 0xFF,
++ /* 0310 */ 0x7F, 0xCA, 0x02, 0xD7, 0xB8, 0x9F, 0xB2, 0x80,
++ /* 0318 */ 0x99, 0xF4, 0xA7, 0x80, 0x4F, 0x35, 0x7E, 0x02,
++ /* 0320 */ 0x28, 0xFA, 0xC1, 0x82, 0xC2, 0xF8, 0x94, 0x05,
++ /* 0328 */ 0xB8, 0x92, 0x77, 0x40, 0x00, 0xCD, 0xD9, 0xC9,
++ /* 0330 */ 0xB7, 0x05, 0x83, 0x1D, 0xB3, 0x2F, 0x19, 0x3E,
++ /* 0338 */ 0x25, 0x82, 0xE1, 0x90, 0xE1, 0x3B, 0xD5, 0xA1,
++ /* 0340 */ 0x3C, 0x72, 0x3C, 0x05, 0xF8, 0x88, 0x05, 0xF6,
++ /* 0348 */ 0x38, 0xC7, 0x00, 0x1D, 0x57, 0x7C, 0xC4, 0xF2,
++ /* 0350 */ 0xFF, 0xFF, 0x88, 0x05, 0x70, 0xE3, 0x00, 0x82,
++ /* 0358 */ 0x3F, 0x75, 0xC0, 0xBA, 0x07, 0x84, 0xF5, 0xA1,
++ /* 0360 */ 0x03, 0x78, 0xC8, 0x7E, 0x08, 0xE8, 0x0C, 0x63,
++ /* 0368 */ 0xC9, 0x20, 0xB2, 0x71, 0xAE, 0xA1, 0x63, 0xB4,
++ /* 0370 */ 0xF8, 0x85, 0xEA, 0xA6, 0x10, 0xFB, 0x60, 0xB8,
++ /* 0378 */ 0x6C, 0x20, 0x81, 0x7A, 0xB8, 0x16, 0x4C, 0x21,
++ /* 0380 */ 0x51, 0x34, 0x1A, 0x8D, 0x81, 0x09, 0x8C, 0xE0,
++ /* 0388 */ 0x0C, 0x62, 0x40, 0x67, 0x84, 0xD0, 0xA1, 0x0C,
++ /* 0390 */ 0xA7, 0xE2, 0x3C, 0x84, 0xFA, 0xFF, 0x13, 0x0C,
++ /* 0398 */ 0x75, 0x63, 0xA2, 0xB3, 0xF3, 0xFC, 0xF9, 0x6D,
++ /* 03A0 */ 0xC4, 0x27, 0x02, 0x03, 0xFB, 0x0A, 0xF1, 0x96,
++ /* 03A8 */ 0x01, 0x96, 0x61, 0x79, 0x71, 0x4F, 0x00, 0xC7,
++ /* 03B0 */ 0x78, 0x92, 0x09, 0xAA, 0x39, 0xD6, 0xA0, 0xE6,
++ /* 03B8 */ 0xE0, 0xAB, 0xC0, 0x1B, 0x99, 0x09, 0x7C, 0x05,
++ /* 03C0 */ 0x03, 0xDB, 0x69, 0x06, 0xA3, 0xEF, 0x4E, 0x00,
++ /* 03C8 */ 0x0A, 0x20, 0x1F, 0x05, 0x7C, 0x5F, 0x7E, 0x1B,
++ /* 03D0 */ 0x60, 0xB3, 0x78, 0x65, 0x36, 0x9A, 0xCF, 0x9F,
++ /* 03D8 */ 0x88, 0xA1, 0xA3, 0xC4, 0x0C, 0x9D, 0x82, 0x78,
++ /* 03E0 */ 0xE8, 0x0E, 0x3A, 0x74, 0xF4, 0x71, 0xC0, 0x27,
++ /* 03E8 */ 0x2B, 0x5C, 0xB0, 0xC3, 0x17, 0xB4, 0xC9, 0x1D,
++ /* 03F0 */ 0xED, 0x89, 0x79, 0x16, 0x9E, 0x27, 0x6E, 0xEE,
++ /* 03F8 */ 0x60, 0x3A, 0x22, 0xC1, 0x18, 0x3C, 0x66, 0xF2,
++ /* 0400 */ 0x60, 0x16, 0x38, 0x79, 0x50, 0xFC, 0xFF, 0x27,
++ /* 0408 */ 0x0F, 0x13, 0x1E, 0x13, 0xF6, 0x70, 0x48, 0x0F,
++ /* 0410 */ 0x1D, 0x1E, 0x19, 0x1F, 0xA7, 0x4F, 0x3F, 0x0C,
++ /* 0418 */ 0xFB, 0x74, 0xCE, 0xA5, 0xE8, 0x19, 0xE9, 0x8E,
++ /* 0420 */ 0xF1, 0xCC, 0x85, 0x81, 0xF5, 0xC8, 0x39, 0xAC,
++ /* 0428 */ 0xD1, 0xC2, 0x1E, 0xF0, 0x73, 0x88, 0xEF, 0x30,
++ /* 0430 */ 0x3E, 0xF0, 0x30, 0x58, 0x9F, 0x5E, 0xC0, 0x71,
++ /* 0438 */ 0xFC, 0x82, 0x7F, 0x1A, 0x00, 0xCF, 0x01, 0xC4,
++ /* 0440 */ 0x63, 0x78, 0x01, 0xE1, 0x04, 0x73, 0x9D, 0xA6,
++ /* 0448 */ 0x50, 0xF1, 0x4F, 0x53, 0x80, 0xF6, 0xFF, 0xFF,
++ /* 0450 */ 0x69, 0x0A, 0xE6, 0x61, 0xD0, 0x67, 0x08, 0x4F,
++ /* 0458 */ 0x25, 0xC8, 0xEB, 0xD3, 0xAB, 0xA0, 0x31, 0x9E,
++ /* 0460 */ 0x1B, 0x1E, 0xA8, 0x8E, 0x27, 0x4A, 0x88, 0x50,
++ /* 0468 */ 0x91, 0xCE, 0xE0, 0x55, 0x8A, 0x1F, 0xA4, 0xA2,
++ /* 0470 */ 0x04, 0x09, 0xF5, 0x1A, 0xF0, 0x34, 0xE8, 0x2B,
++ /* 0478 */ 0x44, 0x94, 0xA8, 0x21, 0x23, 0xBE, 0x58, 0xF9,
++ /* 0480 */ 0x34, 0xC5, 0x22, 0x9D, 0xA6, 0x00, 0x9A, 0x9C,
++ /* 0488 */ 0x18, 0xF0, 0xA7, 0x29, 0x58, 0xB7, 0x04, 0xCF,
++ /* 0490 */ 0xEE, 0x11, 0x83, 0x9F, 0xA7, 0xC0, 0xFD, 0xFF,
++ /* 0498 */ 0x3F, 0x4F, 0xE1, 0xF2, 0x9C, 0xA7, 0x68, 0x96,
++ /* 04A0 */ 0xF3, 0x14, 0xEA, 0x7C, 0xE1, 0x24, 0x4B, 0x15,
++ /* 04A8 */ 0xFE, 0x23, 0x85, 0x11, 0x8E, 0x87, 0x13, 0x58,
++ /* 04B0 */ 0xFF, 0x89, 0x0A, 0xA5, 0x9C, 0x42, 0xCA, 0xCE,
++ /* 04B8 */ 0x41, 0x28, 0x2D, 0xE7, 0x20, 0x0A, 0xE2, 0x73,
++ /* 04C0 */ 0x10, 0x9C, 0x13, 0x15, 0x36, 0xD9, 0x89, 0x0A,
++ /* 04C8 */ 0xFA, 0x15, 0x07, 0x77, 0x41, 0x86, 0x3D, 0x2F,
++ /* 04D0 */ 0xB6, 0xBE, 0x77, 0x2A, 0xC0, 0x92, 0xBC, 0xC9,
++ /* 04D8 */ 0xA3, 0x04, 0x4D, 0x9E, 0x82, 0x78, 0xF2, 0xBE,
++ /* 04E0 */ 0x0D, 0xF9, 0x4E, 0x05, 0x37, 0xDC, 0x9D, 0x0A,
++ /* 04E8 */ 0x14, 0xC3, 0x07, 0xC3, 0xFF, 0x7F, 0xF8, 0xB0,
++ /* 04F0 */ 0x6F, 0x55, 0x80, 0x9B, 0xE0, 0xB7, 0x2A, 0x40,
++ /* 04F8 */ 0xCF, 0x00, 0x9F, 0x07, 0xC0, 0x72, 0x0D, 0xE1,
++ /* 0500 */ 0xD7, 0x2A, 0xDF, 0x08, 0x30, 0x07, 0x82, 0x67,
++ /* 0508 */ 0x1E, 0x63, 0x62, 0x2E, 0x33, 0x7A, 0x2B, 0xF8,
++ /* 0510 */ 0x0A, 0xE5, 0x25, 0x4A, 0x1E, 0x0C, 0xEA, 0x6E,
++ /* 0518 */ 0x05, 0xF6, 0xFF, 0xFF, 0xDD, 0x0A, 0xD8, 0x5E,
++ /* 0520 */ 0xB4, 0xC1, 0x73, 0x57, 0x78, 0x14, 0xF2, 0xA1,
++ /* 0528 */ 0xC0, 0x37, 0x2B, 0xF8, 0xC3, 0x38, 0x82, 0xC3,
++ /* 0530 */ 0x8F, 0xF0, 0xDC, 0x6B, 0x84, 0xE7, 0x2A, 0x5F,
++ /* 0538 */ 0x7B, 0xC1, 0x1D, 0xFB, 0x39, 0xA2, 0x43, 0x80,
++ /* 0540 */ 0x6F, 0x56, 0x80, 0xE9, 0xFF, 0xFF, 0xCD, 0x0A,
++ /* 0548 */ 0xAC, 0x6F, 0x10, 0x9F, 0x6B, 0xE0, 0x06, 0x3E,
++ /* 0550 */ 0x97, 0xD0, 0xEB, 0x3F, 0xF0, 0xBC, 0x30, 0x82,
++ /* 0558 */ 0xE7, 0x18, 0xE1, 0xDB, 0x28, 0xEE, 0x84, 0x03,
++ /* 0560 */ 0x36, 0xA3, 0x27, 0x1C, 0x04, 0x38, 0xFE, 0x66,
++ /* 0568 */ 0x06, 0x6B, 0x0C, 0x7D, 0xA2, 0xE8, 0x8C, 0x81,
++ /* 0570 */ 0xBB, 0x9A, 0x01, 0x8F, 0x1B, 0x91, 0x87, 0xC0,
++ /* 0578 */ 0x4F, 0x13, 0x1E, 0x02, 0x1F, 0x40, 0xAB, 0xD3,
++ /* 0580 */ 0x23, 0x67, 0x9F, 0x53, 0xC2, 0x1D, 0x07, 0xF8,
++ /* 0588 */ 0x94, 0x70, 0x03, 0xE0, 0xFF, 0x7F, 0x82, 0x01,
++ /* 0590 */ 0x6E, 0x9C, 0xA8, 0xE8, 0x37, 0x4E, 0x80, 0x10,
++ /* 0598 */ 0x20, 0x11, 0x5E, 0x35, 0x7D, 0x88, 0x79, 0xD0,
++ /* 05A0 */ 0xF4, 0x60, 0xDE, 0x62, 0x8C, 0xF3, 0xD6, 0xF0,
++ /* 05A8 */ 0xB2, 0xE9, 0x83, 0x8C, 0xF1, 0xC2, 0x44, 0x39,
++ /* 05B0 */ 0x86, 0x43, 0x8A, 0x19, 0xC5, 0x88, 0x41, 0x42,
++ /* 05B8 */ 0xBC, 0x71, 0x1A, 0xC3, 0xA8, 0xC1, 0xC2, 0x45,
++ /* 05C0 */ 0x8F, 0xF0, 0x20, 0xC3, 0xE2, 0xDC, 0x38, 0x01,
++ /* 05C8 */ 0x21, 0xFF, 0xFF, 0x83, 0x0C, 0x60, 0xE5, 0x68,
++ /* 05D0 */ 0xE6, 0x83, 0x08, 0xFC, 0xE3, 0xC3, 0x9B, 0x42,
++ /* 05D8 */ 0xF0, 0xA7, 0x10, 0x60, 0x22, 0xFE, 0xBE, 0x49,
++ /* 05E0 */ 0x85, 0xDF, 0x37, 0x51, 0x63, 0xB4, 0xF8, 0x85,
++ /* 05E8 */ 0xEA, 0xFA, 0xEC, 0xB9, 0x78, 0xDA, 0x96, 0x7D,
++ /* 05F0 */ 0xDB, 0x44, 0x09, 0xA6, 0x90, 0xA8, 0x13, 0x22,
++ /* 05F8 */ 0x4A, 0xC6, 0x09, 0x91, 0x82, 0x18, 0xD0, 0x19,
++ /* 0600 */ 0x6F, 0x9B, 0x90, 0x43, 0xDD, 0x36, 0xA1, 0xDF,
++ /* 0608 */ 0x1E, 0x9E, 0xE1, 0xC1, 0x79, 0xD6, 0x04, 0xDB,
++ /* 0610 */ 0xFF, 0xFF, 0xAC, 0x09, 0x4C, 0xA5, 0x0D, 0x1D,
++ /* 0618 */ 0x25, 0x66, 0xE8, 0x14, 0xC4, 0xF7, 0x56, 0x38,
++ /* 0620 */ 0x87, 0x28, 0x7C, 0xB0, 0xB3, 0x26, 0x28, 0x4E,
++ /* 0628 */ 0x4C, 0xE0, 0x99, 0x3B, 0xF6, 0xA4, 0x09, 0xD8,
++ /* 0630 */ 0x89, 0x7C, 0xD2, 0x04, 0x82, 0xFF, 0xFF, 0xE3,
++ /* 0638 */ 0x18, 0xD8, 0x8F, 0x54, 0xB8, 0xD3, 0x00, 0xDC,
++ /* 0640 */ 0x03, 0x88, 0xC7, 0x70, 0x9C, 0xEF, 0x4F, 0x06,
++ /* 0648 */ 0x79, 0x1E, 0xF1, 0x81, 0xC0, 0x47, 0x19, 0xA6,
++ /* 0650 */ 0xD0, 0xA6, 0x4F, 0x8D, 0x46, 0xAD, 0x1A, 0x94,
++ /* 0658 */ 0xA9, 0x51, 0xA6, 0x41, 0xAD, 0x3E, 0x95, 0x1A,
++ /* 0660 */ 0x33, 0x76, 0xC0, 0xB0, 0x88, 0xB5, 0x6A, 0xB0,
++ /* 0668 */ 0x0E, 0xB5, 0x5E, 0x81, 0x58, 0xD2, 0x13, 0x43,
++ /* 0670 */ 0x20, 0x16, 0xE5, 0x01, 0x84, 0xC5, 0x35, 0x01,
++ /* 0678 */ 0xC2, 0x84, 0xAF, 0x4A, 0x20, 0x8E, 0x0D, 0x42,
++ /* 0680 */ 0xC5, 0xEA, 0x80, 0x68, 0x64, 0x88, 0x06, 0x11,
++ /* 0688 */ 0x90, 0x43, 0xF8, 0x00, 0x62, 0x91, 0x40, 0x04,
++ /* 0690 */ 0xE4, 0xC8, 0x4A, 0x40, 0x98, 0x60, 0x27, 0x20,
++ /* 0698 */ 0x2C, 0xF3, 0xAB, 0x4A, 0x80, 0x16, 0x60, 0x05,
++ /* 06A0 */ 0x88, 0xE9, 0xD1, 0x02, 0xC4, 0xD4, 0x81, 0x08,
++ /* 06A8 */ 0xC8, 0x29, 0xCC, 0x80, 0x30, 0x0D, 0xAB, 0x12,
++ /* 06B0 */ 0x88, 0xF3, 0x83, 0xD0, 0xD4, 0x76, 0x40, 0x98,
++ /* 06B8 */ 0x66, 0x3D, 0x20, 0x2C, 0xA9, 0x1F, 0x70, 0x16,
++ /* 06C0 */ 0x1B, 0x44, 0x40, 0x56, 0x60, 0x08, 0x88, 0xE9,
++ /* 06C8 */ 0x01, 0x11, 0x90, 0xFF, 0xFF
++ })
++
++ Method (WMBD, 3, Serialized)
++ {
++ INIT (1)
++ GUID (100)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ }
++ }
++
++ /* Wire GPE events to notify OEM
++ * added value events.
++ */
++ Scope (\_GPE)
++ {
++ Method (_L18, 0, Serialized)
++ {
++ Notify (\_SB.AMW0, 0xD0)
++ }
++ }
++}
++
+diff
+--- /dev/null
++++ b/tools/firmware/hvmloader/acpi/ssdt_hp_6930p_elitebook.asl 2009-04-01 16:35:21.000000000 -0400
+@@ -0,0 +1,1309 @@
++/*
++ * ssdt_hp_6930p_elitebook.asl
++ *
++ * Copyright (c) 2009 Kamala Narasimhan
++ * Copyright (c) 2009 Citrix Systems, Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++/* SSDT for exposing HP 6930p elitebook specific value add functionalities like
++ * hotkeys, special buttons (e.g., wireless button, presentation button etc.).
++ */
++
++/* IMPLEMENTATION DETAILS: OEM value add features are generally exposed through
++ * WMI psuedo device objects. For our guests to benefit from such value add, we
++ * expose a psuedo device object in our vACPI layer also. This psuedo object is
++ * similar to the underlying base firmware object in the sense we expose the
++ * same _WDG method which describes the WMI methods, data objects and events
++ * provided by the WMI psuedo object. Guest wmi wrapper driver which automatically
++ * gets loaded upon identifying this WMI pseudo device object, calls _WDG to get
++ * known entry points and calls those entry points for further information exchange.
++ * Reference - http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
++ */
++
++/* COMMUNICATION DETAILS -
++ * Command port - 0x96
++ * Writes to this port describe what type of information is about
++ * to be exchanged. E.g., guid, input argument transfer etc.
++ * Data Port - 0x98 and 0x9A for byte and dword data transfer respectively.
++ * Communicates data to and from the backend. E.g. Input buffer values
++ * get written to this port and output buffer values are read from this
++ * port.
++ */
++
++DefinitionBlock ("SSDT_HP_6930P_ELITEBOOK.aml", "SSDT", 2, "Xen", "HVM", 0)
++{
++ Scope (\_SB)
++ {
++
++ OperationRegion (HP1, SystemIO, 0x96, 0x01)
++ Field (HP1, ByteAcc, NoLock, Preserve)
++ {
++ P96, 8
++ }
++
++ OperationRegion (HP2, SystemIO, 0x98, 0x01)
++ Field (HP2, ByteAcc, NoLock, Preserve)
++ {
++ P98, 8
++ }
++
++ OperationRegion (HP3, SystemIO, 0x9A, 0x04)
++ Field (HP3, DWordAcc, NoLock, Preserve)
++ {
++ P9A, 32
++ }
++
++ Device (WMID)
++ {
++ /* Exposing a pseudo device with HID PNP0C14 will
++ * result in Windows guest loading their WMI wrapper
++ * driver - wmiacpi.sys
++ */
++ Name (_HID, EisaId ("PNP0C14"))
++ Name (_UID, 0x00)
++
++ /* Following list of data blocks exposed by _WDG is same as the
++ * one provided by the underlying firmware. Refer to -
++ * http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
++ * for further information about _WDG and what it exposes.
++ */
++ Name (_WDG, Buffer (0xF0)
++ {
++ /* Data Block 1 */
++ /* GUID */
++ 0x34, 0xF0, 0xB7, 0x5F, 0x63, 0x2C, 0xE9, 0x45,
++ 0xBE, 0x91, 0x3D, 0x44, 0xE2, 0xC7, 0x07, 0xE4,
++ 0x41, 0x41, /* Object ID - WMAA */
++ 0x01, /* Instance count */
++ 0x02, /* Flag - Method */
++
++ /* Data Block 2 */
++ /* GUID */
++ 0x79, 0x42, 0xF2, 0x95, 0x7B, 0x4D, 0x34, 0x43,
++ 0x93, 0x87, 0xAC, 0xCD, 0xC6, 0x7E, 0xF6, 0x1C,
++ 0x80, 0x00, /* Event notification ID */
++ 0x01, /* Instance count */
++ 0x08, /* Flag - Event */
++
++ /* Data Block 3 */
++ /* GUID */
++ 0x18, 0x43, 0x81, 0x2B, 0xE8, 0x4B, 0x07, 0x47,
++ 0x9D, 0x84, 0xA1, 0x90, 0xA8, 0x59, 0xB5, 0xD0,
++ 0xA0, 0x00, /* Event notification ID */
++ 0x01, /* Instance count */
++ 0x08, /* Flag - Event */
++
++ /* Data Block 4 */
++ /* GUID */
++ 0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11,
++ 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10,
++ 0x41, 0x42, /* Object ID - WQAB */
++ 0x01, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 5 */
++ /* GUID */
++ 0xEB, 0x91, 0x4C, 0x1F, 0x5C, 0xDC, 0x0B, 0x46,
++ 0x95, 0x1D, 0xC7, 0xCB, 0x9B, 0x4B, 0x8D, 0x5E,
++ 0x42, 0x41, /* Object ID - WMBA */
++ 0x01, /* Instance count */
++ 0x02, /* Flag - Method */
++
++ /* Data Block 6 */
++ /* GUID */
++ 0x49, 0x4B, 0x11, 0x2D, 0xFB, 0x2D, 0x30, 0x41,
++ 0xB8, 0xFE, 0x4A, 0x3C, 0x09, 0xE7, 0x51, 0x33,
++ 0x42, 0x43, /* Object ID - WQBC */
++ 0x74, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 7 */
++ /* GUID */
++ 0xE3, 0x08, 0x8D, 0x98, 0xF4, 0x68, 0x35, 0x4C,
++ 0xAF, 0x3E, 0x6A, 0x1B, 0x81, 0x06, 0xF8, 0x3C,
++ 0x42, 0x44, /* Object ID - WQBD */
++ 0x19, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 8 */
++ /* GUID */
++ 0x46, 0x97, 0xEA, 0x14, 0x1F, 0xCE, 0x98, 0x40,
++ 0xA0, 0xE0, 0x70, 0x45, 0xCB, 0x4D, 0xA7, 0x45,
++ 0x42, 0x45, /* Object ID - WQBE */
++ 0x01, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 9 */
++ /* GUID */
++ 0x28, 0x20, 0x2F, 0x32, 0x84, 0x0F, 0x01, 0x49,
++ 0x98, 0x8E, 0x01, 0x51, 0x76, 0x04, 0x9E, 0x2D,
++ 0x42, 0x46, /* Object ID - WQBF */
++ 0x01, /* Instance count */
++ 0x00, /* Flag Data */
++
++ /* Data Block 10 */
++ /* GUID */
++ 0x3D, 0xDE, 0x32, 0x82, 0x3D, 0x66, 0x27, 0x43,
++ 0xA8, 0xF4, 0xE2, 0x93, 0xAD, 0xB9, 0xBF, 0x05,
++ 0x42, 0x47, /* Object ID - WQBG */
++ 0x01, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 11 */
++ /* GUID */
++ 0x36, 0x64, 0x1F, 0x8F, 0x42, 0x9F, 0xC8, 0x42,
++ 0xBA, 0xDC, 0x0E, 0x94, 0x24, 0xF2, 0x0C, 0x9A,
++ 0x42, 0x48, /* Object ID - WQBH */
++ 0x00, /* Instance count */
++ 0x00, /* Flag - Data */
++
++ /* Data Block 12 */
++ /* GUID */
++ 0x35, 0x64, 0x1F, 0x8F, 0x42, 0x9F, 0xC8, 0x42,
++ 0xBA, 0xDC, 0x0E, 0x94, 0x24, 0xF2, 0x0C, 0x9A,
++ 0x42, 0x49, /* Object ID - WQBI */
++ 0x00, /* Instance count */
++ 0x00 /* Flag - Data */
++ })
++
++ /* Initialize cmd port and communicate invocation type
++ * i.e., method execution or query or set object
++ */
++ Method (INIT, 1, Serialized)
++ {
++ Store (100, P96)
++ Store (Arg0, P98)
++ }
++
++ /* Pass the guid pertaining to the operation */
++ Method (GUID, 1, Serialized)
++ {
++ Store (101, P96)
++ Store (0x0, Local0)
++ Store (Arg0, Local1)
++
++ While ( LLess(Local0,16) )
++ {
++ Add(Local1, Local0, Local2)
++ Store (DerefOf(Index (_WDG, Local2)), P98 )
++ Increment( Local0 )
++ }
++ }
++
++ /* Pass instance # for the associated object pertaining
++ * to the invocation.
++ */
++ Method (INST, 1, Serialized)
++ {
++ Store(102, P96)
++ Store(Arg0, P9A)
++ }
++
++ /* Pass method id relevant to the method about to be
++ * executed.
++ */
++ Method (MTID, 1, Serialized)
++ {
++ Store(103, P96)
++ Store(Arg0, P9A)
++ }
++
++ /* Pass input buffer pertaining to the current operation */
++ Method (IBUF, 1, Serialized)
++ {
++ Store (105, P96)
++ Store (SizeOf(Arg0), Local0)
++ Store (Local0, P9A)
++ ToBuffer (Arg0, Local1)
++ Store (0, Local2)
++ Store (104, P96)
++ While ( LLess(Local2,Local0) )
++ {
++ Store (DerefOf(Index (Local1, Local2)), P98)
++ Increment (Local2)
++ }
++ }
++
++ /* Now that the input arguments are passed, execute the command */
++ Method (EXEC, 0, Serialized)
++ {
++ Store (106, P96)
++ }
++
++ /* Get the output buffer pertaining to the just executed command */
++ Method (OBUF, 0, Serialized)
++ {
++ Store (108, P96)
++ Store (P9A, Local0)
++ Store (Buffer(Local0) {}, Local2)
++ Store (0, Local1)
++ Store (107, P96)
++ While ( LLess(Local1, Local0) )
++ {
++ Store (P98, Index(Local2, Local1))
++ Increment (Local1)
++ }
++ Return (Local2)
++ }
++
++ /* Get event data */
++ Method (_WED, 1, Serialized)
++ {
++ INIT (4)
++ Store (109, P96)
++ Store (Arg0, P98)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ /* Following are well know entry points as supplied by
++ * _WDG.
++ * @TODO: Though current testing suggest that defining
++ * a method for seralized execution is enough to prevent
++ * synchronization issues, consider using explicit mutexes
++ * for further protection.
++ */
++ Method (WMAA, 3, Serialized)
++ {
++ INIT (1)
++ GUID (0)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WMBA, 3, Serialized)
++ {
++ INIT (1)
++ GUID (80)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ /* Like all other well know entry points, we could delegate
++ * the below to the base firmware also. But, why ask for a
++ * static list (that too this big) and go through layer after
++ * layer to get it? Also, port i/o is not a good idea for this
++ * much data transfer. Luckily, this is the only place that appear
++ * to transfer so much data.
++ */
++ Name (WQAB, Buffer (0x1C53)
++ {
++ /* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00,
++ /* 0008 */ 0x43, 0x1C, 0x00, 0x00, 0xEA, 0xB4, 0x00, 0x00,
++ /* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54,
++ /* 0018 */ 0x98, 0x2D, 0x96, 0x00, 0x01, 0x06, 0x18, 0x42,
++ /* 0020 */ 0x10, 0x47, 0x10, 0x92, 0x46, 0x62, 0x02, 0x89,
++ /* 0028 */ 0x80, 0x90, 0x18, 0x18, 0x14, 0x81, 0x85, 0x00,
++ /* 0030 */ 0x49, 0x02, 0x88, 0xC4, 0x41, 0xE1, 0x20, 0xD4,
++ /* 0038 */ 0x9F, 0x40, 0x7E, 0x05, 0x20, 0x74, 0x28, 0x40,
++ /* 0040 */ 0xA6, 0x00, 0x83, 0x02, 0x9C, 0x22, 0x88, 0xA0,
++ /* 0048 */ 0x57, 0x01, 0x36, 0x05, 0x98, 0x14, 0x60, 0x51,
++ /* 0050 */ 0x80, 0x76, 0x01, 0x96, 0x05, 0xE8, 0x16, 0x20,
++ /* 0058 */ 0x1D, 0x96, 0x88, 0x04, 0x47, 0x89, 0x01, 0x47,
++ /* 0060 */ 0xE9, 0xC4, 0x16, 0x6E, 0xD8, 0xE0, 0x85, 0xA2,
++ /* 0068 */ 0x68, 0x06, 0x51, 0x12, 0x94, 0x8B, 0x20, 0x5D,
++ /* 0070 */ 0x10, 0x52, 0x2E, 0xC0, 0x37, 0x82, 0x06, 0x10,
++ /* 0078 */ 0xA5, 0x77, 0x01, 0xB6, 0x05, 0x98, 0x86, 0x27,
++ /* 0080 */ 0xD2, 0x20, 0xE4, 0x60, 0x08, 0x54, 0xCE, 0x80,
++ /* 0088 */ 0x20, 0x69, 0x44, 0x21, 0x1E, 0xA7, 0x44, 0x08,
++ /* 0090 */ 0x0A, 0x84, 0x90, 0xD4, 0xF1, 0xA0, 0xA0, 0x71,
++ /* 0098 */ 0x88, 0xAD, 0xCE, 0x46, 0x93, 0xA9, 0x74, 0x7E,
++ /* 00A0 */ 0x48, 0x82, 0x70, 0xC6, 0x2A, 0x7E, 0x3A, 0x9A,
++ /* 00A8 */ 0xD0, 0xD9, 0x9C, 0x60, 0xE7, 0x18, 0x72, 0x3C,
++ /* 00B0 */ 0x48, 0xF4, 0x20, 0xB8, 0x00, 0x0F, 0x1C, 0x2C,
++ /* 00B8 */ 0x34, 0x84, 0x22, 0x6B, 0x80, 0xC1, 0x8C, 0xDD,
++ /* 00C0 */ 0x63, 0xB1, 0x0B, 0x4E, 0x0A, 0xEC, 0x61, 0xB3,
++ /* 00C8 */ 0x01, 0x19, 0xA2, 0x24, 0x38, 0xD4, 0x11, 0xC0,
++ /* 00D0 */ 0x12, 0x05, 0x98, 0x1F, 0x87, 0x0C, 0x0F, 0x95,
++ /* 00D8 */ 0x8C, 0x25, 0x24, 0x1B, 0xAB, 0x87, 0xC2, 0xA5,
++ /* 00E0 */ 0x40, 0x68, 0x6C, 0x27, 0xED, 0x19, 0x45, 0x2C,
++ /* 00E8 */ 0x79, 0x4A, 0x82, 0x49, 0xE0, 0x51, 0x44, 0x36,
++ /* 00F0 */ 0x1A, 0x27, 0x28, 0x1B, 0x1A, 0x25, 0x03, 0x42,
++ /* 00F8 */ 0x9E, 0x05, 0x58, 0x07, 0x26, 0x04, 0x76, 0x2F,
++ /* 0100 */ 0xC0, 0x9A, 0x00, 0x73, 0xB3, 0x90, 0xB1, 0xB9,
++ /* 0108 */ 0xE8, 0xFF, 0x0F, 0x71, 0xB0, 0x31, 0xDA, 0x9A,
++ /* 0110 */ 0xAE, 0x90, 0xC2, 0xC4, 0x88, 0x12, 0x2C, 0x5E,
++ /* 0118 */ 0xC5, 0xC3, 0x10, 0xCA, 0x93, 0x42, 0xA8, 0x48,
++ /* 0120 */ 0x95, 0xA1, 0x68, 0xB4, 0x51, 0x2A, 0x14, 0xE0,
++ /* 0128 */ 0x4C, 0x80, 0x30, 0x5C, 0x1D, 0x03, 0x82, 0x46,
++ /* 0130 */ 0x88, 0x15, 0x29, 0x56, 0xFB, 0x83, 0x20, 0xF1,
++ /* 0138 */ 0x2D, 0x40, 0x54, 0x01, 0xA2, 0x48, 0xA3, 0x41,
++ /* 0140 */ 0x9D, 0x03, 0x3C, 0x5C, 0x0F, 0xF5, 0xF0, 0x3D,
++ /* 0148 */ 0xF6, 0x93, 0x0C, 0x72, 0x90, 0x67, 0xF1, 0xA8,
++ /* 0150 */ 0x70, 0x9C, 0x06, 0x49, 0xE0, 0x0B, 0x80, 0x4F,
++ /* 0158 */ 0x08, 0x1E, 0x38, 0xDE, 0x35, 0xA0, 0x66, 0x7C,
++ /* 0160 */ 0xBC, 0x4C, 0x10, 0x1C, 0x6A, 0x88, 0x1E, 0x68,
++ /* 0168 */ 0xB8, 0x13, 0x38, 0x44, 0x06, 0xE8, 0x49, 0x3D,
++ /* 0170 */ 0x52, 0x60, 0x07, 0x77, 0x32, 0xEF, 0x01, 0xAF,
++ /* 0178 */ 0x0A, 0xCD, 0x5E, 0x12, 0x08, 0xC1, 0xF1, 0xF8,
++ /* 0180 */ 0x7E, 0xC0, 0x26, 0x9C, 0xC0, 0xF2, 0x07, 0x81,
++ /* 0188 */ 0x1A, 0x99, 0xA1, 0x3D, 0xCA, 0xD3, 0x8A, 0x19,
++ /* 0190 */ 0xF2, 0x31, 0xC1, 0x04, 0x16, 0x0B, 0x21, 0x05,
++ /* 0198 */ 0x10, 0x1A, 0x0F, 0xF8, 0x6F, 0x00, 0x8F, 0x17,
++ /* 01A0 */ 0xBE, 0x12, 0xC4, 0xF6, 0x80, 0x12, 0x0C, 0x0B,
++ /* 01A8 */ 0x21, 0x23, 0xAB, 0xF0, 0x78, 0xE8, 0x28, 0x7C,
++ /* 01B0 */ 0x95, 0x38, 0x9C, 0xD3, 0x8A, 0x67, 0x82, 0xE1,
++ /* 01B8 */ 0x20, 0xF4, 0x05, 0x90, 0x00, 0x51, 0xE7, 0x0C,
++ /* 01C0 */ 0xD4, 0x61, 0xC1, 0xE7, 0x04, 0x76, 0x33, 0x38,
++ /* 01C8 */ 0x83, 0x47, 0x00, 0x8F, 0xE4, 0x84, 0xFC, 0x2B,
++ /* 01D0 */ 0xF1, 0xC0, 0xE0, 0x03, 0xE2, 0xEF, 0x1F, 0xA7,
++ /* 01D8 */ 0xEC, 0x11, 0x9C, 0xA9, 0x01, 0x7D, 0x1C, 0xF0,
++ /* 01E0 */ 0xFF, 0x7F, 0x28, 0x7C, 0x88, 0x1E, 0xDF, 0x29,
++ /* 01E8 */ 0x1F, 0xAF, 0x4F, 0x17, 0x96, 0x35, 0x4E, 0xE8,
++ /* 01F0 */ 0x77, 0x08, 0x9F, 0x38, 0x7C, 0x64, 0x71, 0x44,
++ /* 01F8 */ 0x08, 0x39, 0x39, 0x05, 0xA0, 0x81, 0x4F, 0xF7,
++ /* 0200 */ 0xEC, 0x22, 0x9C, 0xAE, 0x27, 0xE5, 0x40, 0xC3,
++ /* 0208 */ 0xA0, 0xE3, 0x04, 0xC7, 0x79, 0x00, 0x1C, 0xE3,
++ /* 0210 */ 0x84, 0x7F, 0x2E, 0x80, 0x3F, 0x40, 0x7E, 0xCA,
++ /* 0218 */ 0x78, 0xC5, 0x48, 0xE0, 0x98, 0x23, 0x44, 0x9F,
++ /* 0220 */ 0x6B, 0x3C, 0x42, 0x2C, 0xFC, 0x53, 0x45, 0xE1,
++ /* 0228 */ 0x03, 0x21, 0x63, 0x04, 0x17, 0xA0, 0xC7, 0x08,
++ /* 0230 */ 0x7C, 0x03, 0x8E, 0x11, 0x7D, 0x94, 0xE0, 0xEA,
++ /* 0238 */ 0x0F, 0x1A, 0x74, 0x80, 0xB8, 0xFF, 0xFF, 0x00,
++ /* 0240 */ 0xE1, 0x83, 0x7A, 0x80, 0xC0, 0x37, 0xFA, 0xD1,
++ /* 0248 */ 0x03, 0x3D, 0x2E, 0x8B, 0x3E, 0x0F, 0xC8, 0xF8,
++ /* 0250 */ 0x89, 0x46, 0xF3, 0xE2, 0xA7, 0x03, 0x7E, 0xF8,
++ /* 0258 */ 0x00, 0x0F, 0xA8, 0x87, 0x84, 0x03, 0xC5, 0x4C,
++ /* 0260 */ 0x9B, 0x83, 0x3E, 0xBB, 0x1C, 0x3A, 0x76, 0xB8,
++ /* 0268 */ 0xE0, 0x3F, 0x81, 0x80, 0x4B, 0xDE, 0x21, 0x0C,
++ /* 0270 */ 0x14, 0x23, 0xC6, 0x9F, 0x83, 0x7C, 0x0A, 0x03,
++ /* 0278 */ 0xFF, 0xFF, 0xFF, 0x14, 0x06, 0xFE, 0xE1, 0xF0,
++ /* 0280 */ 0x20, 0x4F, 0x07, 0x9F, 0xB6, 0xA8, 0x74, 0x18,
++ /* 0288 */ 0xD4, 0x81, 0x0B, 0xB0, 0x32, 0x89, 0x08, 0xCF,
++ /* 0290 */ 0x12, 0xB5, 0x41, 0xE8, 0xD4, 0xF0, 0x36, 0xF1,
++ /* 0298 */ 0xB6, 0xE5, 0x5B, 0x40, 0x9C, 0xD3, 0xEC, 0xED,
++ /* 02A0 */ 0xC0, 0x45, 0x30, 0x22, 0xD4, 0x0C, 0x45, 0x4E,
++ /* 02A8 */ 0x5A, 0x11, 0x63, 0x44, 0x79, 0xDC, 0x32, 0xCA,
++ /* 02B0 */ 0xDB, 0xD6, 0x0B, 0x40, 0xBC, 0x13, 0x7B, 0xDE,
++ /* 02B8 */ 0x32, 0x46, 0xF0, 0xC8, 0x0F, 0x5C, 0x2C, 0xC6,
++ /* 02C0 */ 0xEA, 0xF5, 0x5F, 0xF3, 0x81, 0x0B, 0x70, 0xF6,
++ /* 02C8 */ 0xFF, 0x3F, 0x70, 0x01, 0x1C, 0x0A, 0x7A, 0x18,
++ /* 02D0 */ 0x42, 0x0F, 0xC3, 0x53, 0x39, 0x97, 0x87, 0xC8,
++ /* 02D8 */ 0x53, 0x89, 0x18, 0x35, 0x4C, 0xD4, 0x67, 0x28,
++ /* 02E0 */ 0xDF, 0x2D, 0x7C, 0x20, 0x02, 0xDF, 0x99, 0x0B,
++ /* 02E8 */ 0xF8, 0xFD, 0xFF, 0x0F, 0x44, 0x70, 0x8E, 0x29,
++ /* 02F0 */ 0xB8, 0x33, 0x0D, 0x78, 0x7C, 0xCE, 0x40, 0x20,
++ /* 02F8 */ 0xA7, 0xE2, 0x43, 0x0D, 0x60, 0x41, 0xF4, 0x13,
++ /* 0300 */ 0xC2, 0x27, 0x1A, 0x2A, 0x13, 0x06, 0x75, 0xA8,
++ /* 0308 */ 0x01, 0xAC, 0x5C, 0x61, 0x9E, 0x46, 0xCF, 0xF9,
++ /* 0310 */ 0x59, 0xC6, 0xA7, 0x1A, 0x1F, 0x4A, 0x8D, 0x63,
++ /* 0318 */ 0x88, 0x97, 0x99, 0x87, 0x1A, 0x1F, 0x0B, 0x5E,
++ /* 0320 */ 0x49, 0x7D, 0xA8, 0x31, 0x54, 0x9C, 0x87, 0x1A,
++ /* 0328 */ 0x0F, 0x37, 0x50, 0xD4, 0x37, 0x9B, 0x67, 0x1B,
++ /* 0330 */ 0xA3, 0xC7, 0xF7, 0x0D, 0xD5, 0x10, 0x0F, 0x35,
++ /* 0338 */ 0x4C, 0xF2, 0x4A, 0x35, 0x16, 0x1F, 0x6A, 0xC0,
++ /* 0340 */ 0xF1, 0xFF, 0x3F, 0xD4, 0x00, 0xFC, 0xFF, 0xFF,
++ /* 0348 */ 0x1F, 0x6A, 0x00, 0x47, 0x47, 0x03, 0x38, 0x47,
++ /* 0350 */ 0x46, 0xDC, 0xD1, 0x00, 0x5C, 0x87, 0x52, 0xE0,
++ /* 0358 */ 0x70, 0x34, 0x00, 0x1E, 0x47, 0x21, 0x30, 0x5F,
++ /* 0360 */ 0x68, 0x7C, 0x14, 0x02, 0x16, 0xFF, 0xFF, 0xA3,
++ /* 0368 */ 0x10, 0xF8, 0x65, 0x9F, 0x83, 0x50, 0x42, 0x8F,
++ /* 0370 */ 0x42, 0x80, 0xA0, 0xDB, 0xCF, 0x53, 0xC4, 0xB3,
++ /* 0378 */ 0x8F, 0x2F, 0x3F, 0x0F, 0x04, 0x11, 0x5E, 0xF3,
++ /* 0380 */ 0x7D, 0x0A, 0xF2, 0x21, 0xDF, 0x47, 0x21, 0x06,
++ /* 0388 */ 0x63, 0x28, 0x5F, 0x83, 0x7C, 0x14, 0x62, 0x50,
++ /* 0390 */ 0xAF, 0x41, 0xBE, 0xEF, 0x1B, 0xE4, 0xF1, 0x22,
++ /* 0398 */ 0x48, 0xEC, 0x67, 0x02, 0x1F, 0x85, 0x98, 0xE8,
++ /* 03A0 */ 0xA3, 0x10, 0xA0, 0xF0, 0xFF, 0x7F, 0x14, 0x02,
++ /* 03A8 */ 0xF8, 0xFF, 0xFF, 0x3F, 0x0A, 0x01, 0xCE, 0x02,
++ /* 03B0 */ 0x1C, 0x0D, 0x40, 0x37, 0xAD, 0x47, 0x21, 0xF0,
++ /* 03B8 */ 0xDE, 0x59, 0x4E, 0xFB, 0x04, 0x7C, 0x16, 0x02,
++ /* 03C0 */ 0xCC, 0xFE, 0xFF, 0xCF, 0x42, 0xC0, 0xEC, 0x28,
++ /* 03C8 */ 0x74, 0x14, 0x67, 0xF9, 0x2A, 0xF4, 0x04, 0xF0,
++ /* 03D0 */ 0x02, 0x10, 0x23, 0xCC, 0x3B, 0xD0, 0x4B, 0x26,
++ /* 03D8 */ 0xBB, 0x8B, 0x1B, 0xE7, 0xC9, 0xE5, 0x2C, 0x9E,
++ /* 03E0 */ 0xC4, 0x7D, 0x09, 0xF2, 0x81, 0xE2, 0x59, 0xC8,
++ /* 03E8 */ 0x50, 0xA7, 0x1B, 0xF4, 0x8D, 0xDC, 0x03, 0x8B,
++ /* 03F0 */ 0x19, 0x3F, 0xC4, 0xF3, 0x90, 0x21, 0x9E, 0x85,
++ /* 03F8 */ 0x00, 0x76, 0xFD, 0xFF, 0xCF, 0x42, 0x00, 0xFF,
++ /* 0400 */ 0xFF, 0xFF, 0x47, 0x03, 0xF8, 0x2F, 0x00, 0x9F,
++ /* 0408 */ 0x85, 0x80, 0xE7, 0x09, 0xE0, 0x41, 0xDB, 0x67,
++ /* 0410 */ 0x21, 0x80, 0x33, 0x87, 0xCB, 0xF3, 0x7F, 0x05,
++ /* 0418 */ 0x3A, 0x96, 0xF7, 0x08, 0xCF, 0xFA, 0x24, 0x5F,
++ /* 0420 */ 0x2F, 0x3D, 0xD3, 0x87, 0x82, 0x67, 0x21, 0x86,
++ /* 0428 */ 0x75, 0x18, 0x3E, 0x0B, 0x31, 0x88, 0x17, 0x4D,
++ /* 0430 */ 0x43, 0xBC, 0x70, 0xFA, 0x30, 0xE0, 0xFF, 0x3F,
++ /* 0438 */ 0x5E, 0xE0, 0x57, 0x4E, 0x03, 0x05, 0x09, 0xF4,
++ /* 0440 */ 0x2C, 0x04, 0x30, 0xFE, 0xFF, 0x7F, 0x16, 0x02,
++ /* 0448 */ 0xC8, 0xB8, 0x46, 0x9D, 0x85, 0x80, 0xE5, 0x6D,
++ /* 0450 */ 0xE5, 0x19, 0xDB, 0xA7, 0x95, 0x04, 0xFF, 0xFF,
++ /* 0458 */ 0x67, 0x21, 0xC0, 0x41, 0x2E, 0x23, 0x07, 0x21,
++ /* 0460 */ 0x4C, 0xC4, 0x87, 0x83, 0x8F, 0x99, 0x80, 0x9E,
++ /* 0468 */ 0x29, 0xBE, 0xB8, 0x1B, 0xE3, 0x09, 0xE0, 0x45,
++ /* 0470 */ 0xE2, 0x31, 0x93, 0x1D, 0x35, 0x0D, 0xF3, 0x2C,
++ /* 0478 */ 0x64, 0xBC, 0xB3, 0x78, 0x0D, 0x78, 0x82, 0xF7,
++ /* 0480 */ 0xE4, 0x9F, 0x85, 0x18, 0xD8, 0x61, 0x05, 0x7B,
++ /* 0488 */ 0x14, 0x32, 0xA8, 0xC1, 0x63, 0x87, 0x08, 0x13,
++ /* 0490 */ 0xE8, 0x59, 0x88, 0xC5, 0x7D, 0xAE, 0xE8, 0x3C,
++ /* 0498 */ 0xE1, 0xB3, 0x10, 0xF0, 0xFE, 0xFF, 0x9F, 0x25,
++ /* 04A0 */ 0xE0, 0x5E, 0x0D, 0x9E, 0x85, 0x00, 0x13, 0x87,
++ /* 04A8 */ 0x0D, 0x9F, 0x35, 0xC0, 0x33, 0x7C, 0x8F, 0xEA,
++ /* 04B0 */ 0x1C, 0x1E, 0x8F, 0x81, 0x7F, 0x56, 0x1D, 0xE7,
++ /* 04B8 */ 0x04, 0x96, 0x7B, 0xD1, 0xB2, 0x71, 0xA0, 0xA1,
++ /* 04C0 */ 0x23, 0xB2, 0x3A, 0x20, 0x8D, 0x0D, 0x73, 0x29,
++ /* 04C8 */ 0x89, 0x7C, 0x72, 0x6C, 0xD4, 0x56, 0x04, 0xA7,
++ /* 04D0 */ 0x33, 0x93, 0x4F, 0x00, 0xD6, 0x42, 0x21, 0x05,
++ /* 04D8 */ 0x34, 0x1A, 0x8B, 0xE1, 0x9D, 0xF9, 0xE8, 0x44,
++ /* 04E0 */ 0x41, 0x0C, 0xE8, 0xE3, 0x90, 0x6D, 0x1C, 0x0A,
++ /* 04E8 */ 0x50, 0x7B, 0xD1, 0x14, 0xC8, 0x39, 0x07, 0xA3,
++ /* 04F0 */ 0x7F, 0x76, 0x74, 0x36, 0xBE, 0x13, 0x70, 0x0D,
++ /* 04F8 */ 0x10, 0x3A, 0x25, 0x18, 0xDA, 0x6A, 0x04, 0xFC,
++ /* 0500 */ 0xFF, 0x67, 0x89, 0x01, 0x33, 0xFE, 0x53, 0x8C,
++ /* 0508 */ 0x09, 0x7C, 0x8E, 0xC1, 0x1F, 0x0C, 0xF0, 0x03,
++ /* 0510 */ 0x7F, 0x31, 0xA8, 0xFA, 0x5E, 0xA0, 0xFB, 0x82,
++ /* 0518 */ 0xD5, 0xDD, 0x64, 0x20, 0xCC, 0xC8, 0x04, 0xF5,
++ /* 0520 */ 0x9D, 0x0E, 0x40, 0x01, 0xE4, 0x0B, 0x81, 0xCF,
++ /* 0528 */ 0x51, 0x0F, 0x05, 0x6C, 0x22, 0x21, 0xC2, 0x44,
++ /* 0530 */ 0x33, 0x3A, 0x62, 0xC2, 0xA8, 0xE8, 0x13, 0xA6,
++ /* 0538 */ 0x20, 0x9E, 0xB0, 0x63, 0x4D, 0x18, 0x3D, 0x13,
++ /* 0540 */ 0x5F, 0x74, 0xD8, 0x88, 0x31, 0x21, 0xAE, 0x1E,
++ /* 0548 */ 0xD0, 0x26, 0x18, 0xD4, 0x97, 0x22, 0x58, 0x43,
++ /* 0550 */ 0xE6, 0x63, 0xF1, 0x05, 0x02, 0x37, 0x65, 0x30,
++ /* 0558 */ 0xCE, 0x89, 0x5D, 0x13, 0x7C, 0xD9, 0xC1, 0xCD,
++ /* 0560 */ 0x19, 0x8C, 0xF0, 0x98, 0xBB, 0x18, 0xBF, 0x3A,
++ /* 0568 */ 0x79, 0x74, 0xFC, 0xA0, 0xE0, 0x1B, 0x0E, 0xC3,
++ /* 0570 */ 0x7E, 0x32, 0xF3, 0x8C, 0xDE, 0xCB, 0x7C, 0x8D,
++ /* 0578 */ 0xC3, 0xC0, 0x7A, 0xBC, 0x1C, 0xD6, 0x68, 0x61,
++ /* 0580 */ 0x0F, 0xED, 0x3D, 0xC4, 0xFF, 0xFF, 0x43, 0x8C,
++ /* 0588 */ 0xCF, 0x13, 0xC6, 0x08, 0xEB, 0xDB, 0x0B, 0x38,
++ /* 0590 */ 0xEE, 0x59, 0xF0, 0xEF, 0x1A, 0xE0, 0xB9, 0x84,
++ /* 0598 */ 0xF8, 0xAE, 0x01, 0x30, 0xF0, 0xFF, 0x7F, 0xD7,
++ /* 05A0 */ 0x00, 0x4E, 0xD7, 0x04, 0xDF, 0x35, 0x80, 0xF7,
++ /* 05A8 */ 0xD0, 0x7D, 0xD7, 0x00, 0xAE, 0xD9, 0xEF, 0x1A,
++ /* 05B0 */ 0xA8, 0x63, 0x80, 0x15, 0xDE, 0x35, 0xA0, 0x5D,
++ /* 05B8 */ 0xD9, 0xDE, 0xD7, 0x9E, 0xB0, 0xAC, 0xE9, 0xB2,
++ /* 05C0 */ 0x81, 0x52, 0x73, 0xD9, 0x00, 0x14, 0xFC, 0xFF,
++ /* 05C8 */ 0x2F, 0x1B, 0x80, 0x01, 0x29, 0x13, 0x46, 0x85,
++ /* 05D0 */ 0x9F, 0x30, 0x05, 0xF1, 0x84, 0x1D, 0xEC, 0xB2,
++ /* 05D8 */ 0x01, 0x8A, 0x18, 0x97, 0x0D, 0xD0, 0x8F, 0xED,
++ /* 05E0 */ 0x65, 0x03, 0x18, 0xDC, 0x13, 0xF8, 0x6D, 0x03,
++ /* 05E8 */ 0x78, 0x43, 0xFA, 0xB6, 0x01, 0xD6, 0xFF, 0xFF,
++ /* 05F0 */ 0x6D, 0x03, 0xAC, 0xF9, 0x6F, 0x1B, 0x28, 0x0E,
++ /* 05F8 */ 0xAB, 0xBC, 0x6D, 0x40, 0x3C, 0xC9, 0x33, 0x02,
++ /* 0600 */ 0xAB, 0xBA, 0x6E, 0xA0, 0xF4, 0x5C, 0x37, 0x00,
++ /* 0608 */ 0x12, 0x88, 0x99, 0x30, 0x2A, 0xFE, 0x84, 0x29,
++ /* 0610 */ 0x88, 0x27, 0xEC, 0x68, 0xD7, 0x0D, 0x50, 0x04,
++ /* 0618 */ 0xB9, 0x6E, 0x80, 0x7E, 0x5E, 0x09, 0xFE, 0xFF,
++ /* 0620 */ 0xAF, 0x1B, 0xC0, 0xE0, 0xA2, 0x80, 0xB9, 0x6F,
++ /* 0628 */ 0x00, 0x6F, 0x58, 0x7E, 0xDF, 0x00, 0x7C, 0xDC,
++ /* 0630 */ 0xC4, 0x31, 0xF7, 0x0D, 0xC0, 0xCC, 0xFF, 0xFF,
++ /* 0638 */ 0xBE, 0x01, 0xB0, 0xE7, 0xA2, 0x80, 0xBB, 0x6F,
++ /* 0640 */ 0x00, 0xEF, 0x8B, 0xB4, 0xEF, 0x1B, 0x60, 0xFE,
++ /* 0648 */ 0xFF, 0xDF, 0x37, 0xC0, 0x28, 0x6D, 0xFD, 0x1E,
++ /* 0650 */ 0x1C, 0x3D, 0x21, 0x78, 0x7C, 0xB8, 0xFB, 0xA5,
++ /* 0658 */ 0xC7, 0xE7, 0xBB, 0x39, 0x38, 0x06, 0x79, 0x8C,
++ /* 0660 */ 0x87, 0x76, 0xC0, 0xAF, 0xEF, 0x9E, 0x98, 0xEF,
++ /* 0668 */ 0xE6, 0xC0, 0xFF, 0x4C, 0x70, 0x3C, 0x18, 0x68,
++ /* 0670 */ 0x1C, 0x62, 0xAB, 0x97, 0x06, 0x72, 0x34, 0x38,
++ /* 0678 */ 0x3F, 0xDC, 0x19, 0x81, 0x61, 0x15, 0x7F, 0xF2,
++ /* 0680 */ 0x47, 0x38, 0xC7, 0xD0, 0xD9, 0xE1, 0x20, 0xB1,
++ /* 0688 */ 0x83, 0xE0, 0xC1, 0x56, 0x6D, 0x02, 0x85, 0x86,
++ /* 0690 */ 0x50, 0x14, 0x18, 0x14, 0x8B, 0x0F, 0x18, 0xF8,
++ /* 0698 */ 0x61, 0xB3, 0xB3, 0x00, 0x93, 0x04, 0x87, 0x3A,
++ /* 06A0 */ 0x02, 0xF8, 0x3E, 0xD1, 0xFC, 0x38, 0x74, 0x37,
++ /* 06A8 */ 0x38, 0x54, 0x8F, 0xE5, 0xA1, 0x80, 0x9E, 0x01,
++ /* 06B0 */ 0x71, 0xC7, 0x0C, 0x32, 0x69, 0xCF, 0x28, 0xE2,
++ /* 06B8 */ 0x53, 0xC2, 0x29, 0x85, 0x49, 0xE0, 0xF3, 0x03,
++ /* 06C0 */ 0x43, 0xE3, 0x04, 0xAF, 0x0D, 0xA1, 0xF9, 0xFF,
++ /* 06C8 */ 0xFF, 0xA4, 0xC0, 0x3C, 0xDF, 0x31, 0x04, 0x6C,
++ /* 06D0 */ 0x02, 0xBB, 0xBF, 0x64, 0xC8, 0xDA, 0xC0, 0x75,
++ /* 06D8 */ 0x4B, 0x32, 0x44, 0x6F, 0x38, 0xB2, 0x85, 0xA2,
++ /* 06E0 */ 0xE9, 0x44, 0x79, 0xDF, 0x88, 0x62, 0x67, 0x08,
++ /* 06E8 */ 0xC2, 0x88, 0x12, 0x2C, 0xC8, 0xA3, 0x42, 0xAC,
++ /* 06F0 */ 0x28, 0x2F, 0x05, 0x46, 0x88, 0x18, 0xE2, 0x95,
++ /* 06F8 */ 0x23, 0xD0, 0x09, 0x87, 0x0F, 0xF2, 0xD8, 0x14,
++ /* 0700 */ 0xA7, 0xFD, 0x41, 0x90, 0x58, 0x4F, 0x02, 0x8D,
++ /* 0708 */ 0xC5, 0x91, 0x46, 0x83, 0x3A, 0x07, 0x78, 0xB8,
++ /* 0710 */ 0x3E, 0xC4, 0x78, 0xF8, 0x0F, 0x21, 0x06, 0x39,
++ /* 0718 */ 0xC8, 0x73, 0x7B, 0x54, 0x38, 0x4E, 0x5F, 0x25,
++ /* 0720 */ 0x4C, 0xF0, 0x02, 0xE0, 0x83, 0x0A, 0x1C, 0xD7,
++ /* 0728 */ 0x80, 0x9A, 0xF1, 0x33, 0x06, 0x58, 0x8E, 0xE3,
++ /* 0730 */ 0x3E, 0xA9, 0xC0, 0x1D, 0x8F, 0xEF, 0x07, 0x6C,
++ /* 0738 */ 0xC2, 0x09, 0x2C, 0x7F, 0x10, 0xA8, 0xE3, 0x0C,
++ /* 0740 */ 0x9F, 0xE7, 0x0B, 0x8B, 0x21, 0x1F, 0x13, 0x4C,
++ /* 0748 */ 0x60, 0xB1, 0x27, 0x1B, 0x3A, 0x1E, 0xF0, 0xDF,
++ /* 0750 */ 0x63, 0x1E, 0x2F, 0x7C, 0x32, 0xF1, 0x7C, 0x4D,
++ /* 0758 */ 0x30, 0x22, 0x84, 0x9C, 0x8C, 0x07, 0x7D, 0x87,
++ /* 0760 */ 0xC0, 0x5C, 0x6F, 0xD8, 0xB9, 0x85, 0x8B, 0x3A,
++ /* 0768 */ 0x68, 0xA0, 0x4E, 0x0B, 0x3E, 0x28, 0xB0, 0x9B,
++ /* 0770 */ 0x11, 0xE6, 0xB8, 0xCE, 0xCF, 0x2A, 0x60, 0xF8,
++ /* 0778 */ 0xFF, 0x9F, 0x55, 0x60, 0x8F, 0x10, 0xFE, 0xED,
++ /* 0780 */ 0xC1, 0xF3, 0xF2, 0x95, 0xE1, 0xD5, 0x21, 0x81,
++ /* 0788 */ 0x43, 0x8E, 0x10, 0x3D, 0x2E, 0x8F, 0x10, 0x73,
++ /* 0790 */ 0x3E, 0xC2, 0x0C, 0x11, 0x5C, 0x67, 0x01, 0x70,
++ /* 0798 */ 0x0C, 0x11, 0xF8, 0x1C, 0x70, 0xC0, 0x71, 0x69,
++ /* 07A0 */ 0xE2, 0x03, 0xF5, 0x01, 0x07, 0x70, 0x70, 0x4D,
++ /* 07A8 */ 0xC3, 0x1D, 0x70, 0xC0, 0x71, 0x16, 0x60, 0xFF,
++ /* 07B0 */ 0xFF, 0xC3, 0x0D, 0x2C, 0x49, 0x26, 0x0E, 0x23,
++ /* 07B8 */ 0x18, 0x11, 0x30, 0x28, 0x02, 0x02, 0xA4, 0xB3,
++ /* 07C0 */ 0x80, 0x0F, 0x29, 0x00, 0x1F, 0xAE, 0x0C, 0x0F,
++ /* 07C8 */ 0x29, 0xD8, 0x93, 0x86, 0x07, 0x8E, 0x1B, 0x85,
++ /* 07D0 */ 0x07, 0x8D, 0x0B, 0x30, 0x68, 0x7A, 0xE2, 0x80,
++ /* 07D8 */ 0x7F, 0x4C, 0xF0, 0x19, 0x05, 0x1C, 0xE3, 0x06,
++ /* 07E0 */ 0xDF, 0x2A, 0x0C, 0xFC, 0xFF, 0x3F, 0x30, 0xCC,
++ /* 07E8 */ 0xE1, 0xC2, 0x63, 0x39, 0x8A, 0xA0, 0x07, 0x1E,
++ /* 07F0 */ 0xD4, 0xF7, 0x8C, 0x33, 0xF7, 0x24, 0x8F, 0xD1,
++ /* 07F8 */ 0x51, 0x0F, 0x27, 0xF4, 0xE4, 0x85, 0x3B, 0x57,
++ /* 0800 */ 0xF9, 0x0A, 0x71, 0x14, 0x18, 0xB8, 0x77, 0x29,
++ /* 0808 */ 0x8F, 0xCF, 0x17, 0x2B, 0xC3, 0x63, 0x46, 0xFB,
++ /* 0810 */ 0x1E, 0x72, 0xD6, 0x11, 0x02, 0xE2, 0x2F, 0x75,
++ /* 0818 */ 0x6C, 0xC0, 0x60, 0x39, 0x18, 0x00, 0x87, 0x01,
++ /* 0820 */ 0xE3, 0x13, 0x0D, 0x58, 0x67, 0x1B, 0x3C, 0xF4,
++ /* 0828 */ 0x69, 0x31, 0xC4, 0xE3, 0x0B, 0xFB, 0x56, 0x61,
++ /* 0830 */ 0x82, 0xEA, 0x41, 0x75, 0x12, 0xF4, 0xD0, 0xC0,
++ /* 0838 */ 0x01, 0xE8, 0xA1, 0xC1, 0x3F, 0xB9, 0x90, 0xFB,
++ /* 0840 */ 0x2B, 0x1D, 0x82, 0xB5, 0xE2, 0x69, 0xDE, 0x47,
++ /* 0848 */ 0x1E, 0xF3, 0xDC, 0xA2, 0xBC, 0x0D, 0x3C, 0x07,
++ /* 0850 */ 0xF0, 0xD3, 0x82, 0x87, 0xE3, 0x63, 0x81, 0xC7,
++ /* 0858 */ 0xE9, 0x4B, 0x58, 0x82, 0xF7, 0x1A, 0x9F, 0x6C,
++ /* 0860 */ 0x1E, 0x5C, 0x58, 0xB2, 0x21, 0xA0, 0x06, 0xEB,
++ /* 0868 */ 0x21, 0x60, 0xA6, 0x9A, 0xC0, 0x49, 0x46, 0x80,
++ /* 0870 */ 0xCA, 0x00, 0xA1, 0x1B, 0xCB, 0xE9, 0x3E, 0x8B,
++ /* 0878 */ 0x84, 0x38, 0xCD, 0x47, 0x99, 0xC7, 0x02, 0x8F,
++ /* 0880 */ 0xF5, 0xC1, 0xC0, 0xFF, 0x7F, 0xCD, 0x23, 0xD4,
++ /* 0888 */ 0x7D, 0xCD, 0x33, 0x7B, 0x3A, 0xC0, 0xAC, 0x22,
++ /* 0890 */ 0xDC, 0x7B, 0xCE, 0x1B, 0x86, 0xD1, 0x9E, 0x2D,
++ /* 0898 */ 0x7C, 0xCD, 0x78, 0xD6, 0x34, 0x42, 0x38, 0x76,
++ /* 08A0 */ 0x83, 0xF3, 0x48, 0x8C, 0xF0, 0x82, 0xC0, 0x4E,
++ /* 08A8 */ 0x0C, 0x0F, 0x30, 0xC6, 0x39, 0x79, 0xC3, 0xFA,
++ /* 08B0 */ 0xC2, 0xCB, 0x40, 0x83, 0x19, 0xDB, 0x97, 0x01,
++ /* 08B8 */ 0x36, 0x2A, 0xDF, 0x88, 0xC0, 0x97, 0xFC, 0x62,
++ /* 08C0 */ 0x00, 0x65, 0x16, 0xBE, 0x9E, 0xF8, 0xA0, 0xC4,
++ /* 08C8 */ 0x2E, 0x06, 0x2C, 0xE5, 0xC5, 0x00, 0x54, 0x37,
++ /* 08D0 */ 0x0C, 0x5F, 0x0C, 0xE0, 0x5F, 0x89, 0x5E, 0x0C,
++ /* 08D8 */ 0xC0, 0x70, 0x71, 0xF2, 0x3D, 0xC0, 0x1E, 0xEE,
++ /* 08E0 */ 0xA3, 0x74, 0x9C, 0xBE, 0xFD, 0xBD, 0x19, 0xF8,
++ /* 08E8 */ 0x6C, 0xC0, 0x60, 0x3C, 0xC3, 0x30, 0xC6, 0x08,
++ /* 08F0 */ 0xE3, 0x51, 0x86, 0x31, 0xC1, 0xDC, 0xB7, 0x03,
++ /* 08F8 */ 0xE8, 0x39, 0x87, 0x81, 0x4A, 0x78, 0x3B, 0x80,
++ /* 0900 */ 0x72, 0x0E, 0xE8, 0xF2, 0x68, 0x42, 0x4F, 0x01,
++ /* 0908 */ 0x4F, 0x07, 0x3E, 0x29, 0x1A, 0xA2, 0xAF, 0xB1,
++ /* 0910 */ 0x0A, 0x26, 0x50, 0xC4, 0x07, 0x0D, 0x3E, 0xB5,
++ /* 0918 */ 0x28, 0x3E, 0x15, 0x78, 0x2D, 0xCF, 0x4E, 0xE1,
++ /* 0920 */ 0xE2, 0x9C, 0x89, 0xA7, 0x6A, 0x38, 0x03, 0xBD,
++ /* 0928 */ 0xE6, 0x86, 0x63, 0xFF, 0x7F, 0x38, 0xFC, 0xA9,
++ /* 0930 */ 0xE0, 0x35, 0x80, 0x1D, 0x24, 0x3D, 0x2D, 0x23,
++ /* 0938 */ 0xC2, 0x38, 0xA4, 0x3C, 0x32, 0xF8, 0xB6, 0x18,
++ /* 0940 */ 0xC7, 0x90, 0x0F, 0x91, 0xBE, 0x13, 0x18, 0xF2,
++ /* 0948 */ 0x21, 0xEF, 0x79, 0xC7, 0xC0, 0xAF, 0x08, 0x71,
++ /* 0950 */ 0x9E, 0xB2, 0x7C, 0x67, 0xF0, 0x65, 0x01, 0x7C,
++ /* 0958 */ 0x91, 0x2E, 0x0B, 0x68, 0x68, 0x9F, 0x64, 0x7C,
++ /* 0960 */ 0x41, 0x30, 0xEC, 0x89, 0xB3, 0x00, 0x77, 0x05,
++ /* 0968 */ 0x50, 0x81, 0xFA, 0xAE, 0x00, 0xFF, 0x42, 0xF0,
++ /* 0970 */ 0xAE, 0x00, 0x86, 0x79, 0xF9, 0x56, 0xC0, 0x35,
++ /* 0978 */ 0x1D, 0x4A, 0xD0, 0x67, 0x12, 0x5F, 0x17, 0x70,
++ /* 0980 */ 0x53, 0x64, 0xA9, 0x8E, 0x0A, 0xD0, 0x53, 0x4C,
++ /* 0988 */ 0x02, 0x75, 0x47, 0xF7, 0x51, 0x01, 0xC6, 0x4D,
++ /* 0990 */ 0xD9, 0x07, 0x54, 0x76, 0x5A, 0x60, 0x67, 0x21,
++ /* 0998 */ 0x76, 0x1D, 0xC1, 0x5D, 0x49, 0x18, 0xCA, 0xB3,
++ /* 09A0 */ 0x81, 0x2F, 0x59, 0xFC, 0x70, 0x00, 0x03, 0xDC,
++ /* 09A8 */ 0xB3, 0x38, 0xC4, 0x08, 0xB1, 0xD9, 0x81, 0xEB,
++ /* 09B0 */ 0x75, 0xD2, 0x70, 0x2F, 0x44, 0xEC, 0xFF, 0x7F,
++ /* 09B8 */ 0x32, 0x00, 0xE3, 0x51, 0x1B, 0x1C, 0x27, 0x9D,
++ /* 09C0 */ 0xF0, 0x91, 0x9E, 0x59, 0xF8, 0x49, 0x19, 0x30,
++ /* 09C8 */ 0x71, 0xF2, 0x03, 0xE3, 0xC9, 0x1A, 0xC6, 0x00,
++ /* 09D0 */ 0xB8, 0xBC, 0x57, 0x95, 0x81, 0xFC, 0x43, 0x90,
++ /* 09D8 */ 0x20, 0x18, 0xD4, 0x29, 0x19, 0x38, 0x1C, 0xC5,
++ /* 09E0 */ 0x70, 0xA7, 0x64, 0x78, 0x50, 0xF8, 0xC3, 0x00,
++ /* 09E8 */ 0xE6, 0x46, 0xE8, 0x7B, 0x82, 0xA1, 0xDE, 0x93,
++ /* 09F0 */ 0x0E, 0xE3, 0x91, 0xD0, 0x04, 0x3E, 0x2D, 0xC3,
++ /* 09F8 */ 0xFA, 0xFF, 0x9F, 0x96, 0xF9, 0x39, 0x21, 0xFE,
++ /* 0A00 */ 0x53, 0xCE, 0xFB, 0xC5, 0x83, 0xB2, 0x31, 0xA2,
++ /* 0A08 */ 0xBC, 0x2A, 0xFB, 0x9C, 0x69, 0x14, 0x76, 0x4B,
++ /* 0A10 */ 0x7E, 0x73, 0x78, 0x55, 0xF6, 0x69, 0xF9, 0xDC,
++ /* 0A18 */ 0x22, 0xBD, 0x2F, 0x7B, 0xE4, 0x31, 0xE3, 0xC4,
++ /* 0A20 */ 0x0A, 0x12, 0xE8, 0x7D, 0x23, 0x4A, 0xD8, 0x18,
++ /* 0A28 */ 0xE1, 0x02, 0x3D, 0x2D, 0xB3, 0x63, 0xBB, 0x87,
++ /* 0A30 */ 0xEC, 0xB3, 0x02, 0xEE, 0xEC, 0x00, 0x77, 0x7A,
++ /* 0A38 */ 0xFC, 0xF4, 0x00, 0x38, 0x01, 0x7A, 0x7A, 0x00,
++ /* 0A40 */ 0xDB, 0x79, 0x03, 0xEE, 0x81, 0x00, 0x71, 0xFC,
++ /* 0A48 */ 0x47, 0x05, 0xBF, 0xB2, 0x50, 0x38, 0x7E, 0x6C,
++ /* 0A50 */ 0xE7, 0xC7, 0x12, 0xDC, 0xE1, 0xC0, 0x47, 0x06,
++ /* 0A58 */ 0x1F, 0x20, 0x71, 0x43, 0xF1, 0xA1, 0x02, 0x79,
++ /* 0A60 */ 0x16, 0x00, 0xC5, 0xE8, 0xD9, 0x08, 0xD8, 0x0D,
++ /* 0A68 */ 0xE6, 0xA5, 0x25, 0xCA, 0xFF, 0xFF, 0xBD, 0x81,
++ /* 0A70 */ 0x9D, 0x52, 0x70, 0x07, 0x01, 0xF0, 0x1D, 0x03,
++ /* 0A78 */ 0xC0, 0x3B, 0x18, 0x2E, 0x6B, 0xCC, 0x28, 0x21,
++ /* 0A80 */ 0x30, 0x1A, 0x33, 0xEE, 0x10, 0xC2, 0x4F, 0x04,
++ /* 0A88 */ 0xB8, 0x31, 0x7B, 0xDC, 0x1E, 0x33, 0xEE, 0x38,
++ /* 0A90 */ 0xCB, 0x47, 0xF5, 0x94, 0x11, 0xCA, 0x07, 0x0E,
++ /* 0A98 */ 0x76, 0xCE, 0x78, 0x23, 0xE0, 0x43, 0x07, 0x1E,
++ /* 0AA0 */ 0x07, 0x18, 0xDC, 0x91, 0x02, 0x8C, 0x97, 0x03,
++ /* 0AA8 */ 0x36, 0x76, 0x70, 0x07, 0x21, 0xA7, 0x40, 0x96,
++ /* 0AB0 */ 0x0E, 0xA3, 0xB1, 0xE3, 0x64, 0x03, 0xE9, 0x18,
++ /* 0AB8 */ 0xE3, 0x43, 0xAE, 0xC7, 0x8E, 0x1B, 0xAC, 0xC7,
++ /* 0AC0 */ 0x8E, 0x3B, 0xBE, 0x60, 0xFF, 0xFF, 0xC7, 0x17,
++ /* 0AC8 */ 0x30, 0x8C, 0x81, 0x8B, 0x1F, 0x06, 0xFA, 0xE6,
++ /* 0AD0 */ 0xE7, 0xD1, 0x19, 0xDC, 0xC3, 0xF6, 0x09, 0x26,
++ /* 0AD8 */ 0xC6, 0x1B, 0x4C, 0x88, 0x47, 0x96, 0x97, 0x96,
++ /* 0AE0 */ 0x08, 0x0F, 0x2D, 0xBE, 0xB9, 0xBC, 0xB4, 0xF8,
++ /* 0AE8 */ 0x16, 0x63, 0x94, 0x10, 0x11, 0x0E, 0x26, 0xCE,
++ /* 0AF0 */ 0x13, 0x8C, 0x11, 0x0E, 0x3C, 0x8A, 0x21, 0x22,
++ /* 0AF8 */ 0x9C, 0x40, 0x88, 0x93, 0x3E, 0xD9, 0x20, 0xE1,
++ /* 0B00 */ 0x63, 0x84, 0x8D, 0x16, 0xE5, 0x09, 0x86, 0x8D,
++ /* 0B08 */ 0x85, 0x9F, 0x57, 0x3C, 0x78, 0x7E, 0x5A, 0xF3,
++ /* 0B10 */ 0x5D, 0xD0, 0x93, 0x39, 0xC7, 0x87, 0x2C, 0x4F,
++ /* 0B18 */ 0xED, 0x71, 0xD2, 0x87, 0x59, 0xDC, 0xA0, 0x1E,
++ /* 0B20 */ 0x1C, 0xD9, 0x5D, 0xC7, 0xC7, 0x6B, 0xEC, 0x29,
++ /* 0B28 */ 0xC8, 0x43, 0xE0, 0x27, 0x02, 0x5F, 0x10, 0x3D,
++ /* 0B30 */ 0x59, 0xDF, 0xF5, 0xD8, 0xBD, 0xCC, 0x18, 0xD5,
++ /* 0B38 */ 0x4F, 0x01, 0x75, 0x4C, 0x39, 0x83, 0x57, 0x08,
++ /* 0B40 */ 0x76, 0xCF, 0xF3, 0x21, 0xDB, 0x77, 0x49, 0x36,
++ /* 0B48 */ 0x0A, 0xDC, 0x21, 0xC1, 0x67, 0x24, 0x7E, 0xAA,
++ /* 0B50 */ 0xF0, 0x30, 0x3C, 0x0A, 0x18, 0x33, 0x78, 0x47,
++ /* 0B58 */ 0x38, 0xB4, 0x10, 0x07, 0xFC, 0xBE, 0xCB, 0x86,
++ /* 0B60 */ 0x1A, 0xE3, 0xF4, 0x7C, 0xFE, 0x60, 0x83, 0x80,
++ /* 0B68 */ 0x0F, 0x75, 0xA8, 0x1E, 0xE6, 0x51, 0xBD, 0x14,
++ /* 0B70 */ 0x32, 0x9C, 0xB3, 0x83, 0x3B, 0x08, 0xEC, 0xF1,
++ /* 0B78 */ 0xC3, 0x83, 0xE0, 0x37, 0x4B, 0x3E, 0x08, 0x76,
++ /* 0B80 */ 0xBE, 0x79, 0x83, 0x33, 0xC8, 0xFF, 0xFF, 0x18,
++ /* 0B88 */ 0x60, 0x9F, 0xA9, 0x7C, 0x34, 0x41, 0x1C, 0x01,
++ /* 0B90 */ 0xD1, 0xE7, 0x0F, 0x8F, 0xE1, 0x4D, 0x8E, 0x0F,
++ /* 0B98 */ 0x07, 0x7B, 0xF4, 0xC0, 0x9D, 0x44, 0xE0, 0x1E,
++ /* 0BA0 */ 0xBB, 0x0E, 0xDA, 0xD7, 0x38, 0x5F, 0xB4, 0x60,
++ /* 0BA8 */ 0xDC, 0xF7, 0x9E, 0x45, 0xC0, 0x8F, 0xF1, 0xD8,
++ /* 0BB0 */ 0x02, 0x8E, 0x43, 0x09, 0xB8, 0x83, 0x1D, 0xD7,
++ /* 0BB8 */ 0x38, 0x84, 0xA2, 0xC0, 0xE8, 0x50, 0x82, 0x8B,
++ /* 0BC0 */ 0x01, 0x24, 0x18, 0xC7, 0x38, 0xA3, 0xA1, 0x2F,
++ /* 0BC8 */ 0x91, 0x3E, 0xA4, 0xC1, 0x19, 0x34, 0xEC, 0x79,
++ /* 0BD0 */ 0x3E, 0xA1, 0x70, 0x7B, 0x02, 0x14, 0x9D, 0x50,
++ /* 0BD8 */ 0x40, 0x86, 0xFB, 0x0C, 0x82, 0x3D, 0x21, 0xF0,
++ /* 0BE0 */ 0x33, 0x08, 0xFB, 0xFF, 0x1F, 0x1C, 0x3D, 0xEE,
++ /* 0BE8 */ 0xF7, 0x46, 0x9F, 0x1A, 0xD9, 0xDC, 0x1F, 0x02,
++ /* 0BF0 */ 0x4E, 0xE0, 0xDC, 0xD9, 0xA9, 0x19, 0x77, 0x66,
++ /* 0BF8 */ 0xC0, 0x9E, 0x3F, 0x3C, 0x04, 0x7E, 0x2E, 0xF0,
++ /* 0C00 */ 0xF0, 0x3D, 0x04, 0xFC, 0xE0, 0x1F, 0x98, 0x0D,
++ /* 0C08 */ 0x0E, 0xC6, 0x53, 0x84, 0xAF, 0x1D, 0x1C, 0x9C,
++ /* 0C10 */ 0x9F, 0x06, 0x0C, 0xCE, 0x5F, 0xA1, 0x3E, 0xCF,
++ /* 0C18 */ 0x33, 0x70, 0xEC, 0xA9, 0xD7, 0xF7, 0x0E, 0xCF,
++ /* 0C20 */ 0xD7, 0x87, 0x0A, 0xFC, 0x4D, 0xCF, 0x87, 0x0A,
++ /* 0C28 */ 0x70, 0x1C, 0x1E, 0xF8, 0x61, 0x85, 0x0D, 0xE1,
++ /* 0C30 */ 0x51, 0x00, 0x7F, 0x6A, 0xF1, 0xF1, 0x2F, 0xCE,
++ /* 0C38 */ 0x53, 0x04, 0xBB, 0x8D, 0x60, 0x0F, 0x17, 0x80,
++ /* 0C40 */ 0xA3, 0x68, 0x67, 0x31, 0x54, 0x98, 0xB3, 0x18,
++ /* 0C48 */ 0xF9, 0xFF, 0x9F, 0xA3, 0x50, 0x67, 0x31, 0x7A,
++ /* 0C50 */ 0xB8, 0x00, 0x5C, 0x08, 0x3E, 0x1E, 0x80, 0xE6,
++ /* 0C58 */ 0x20, 0xF0, 0xB8, 0xE0, 0x0B, 0xC1, 0x91, 0x1C,
++ /* 0C60 */ 0xC8, 0xD3, 0x01, 0xE0, 0x53, 0x1E, 0x09, 0x3D,
++ /* 0C68 */ 0x1F, 0x59, 0x10, 0x0C, 0xEA, 0x7C, 0xE0, 0x13,
++ /* 0C70 */ 0x8A, 0x8F, 0x1D, 0xFC, 0x6C, 0xE0, 0x1B, 0xB9,
++ /* 0C78 */ 0x87, 0xCA, 0x4F, 0xCD, 0x3E, 0x69, 0xF3, 0xE0,
++ /* 0C80 */ 0x3F, 0x69, 0xD9, 0x80, 0x51, 0xA0, 0x61, 0xA0,
++ /* 0C88 */ 0x46, 0xE4, 0x23, 0xD2, 0xFF, 0xFF, 0xB9, 0x0D,
++ /* 0C90 */ 0x1B, 0x60, 0x68, 0xF4, 0x1C, 0x0E, 0xE3, 0x80,
++ /* 0C98 */ 0xEB, 0x73, 0x38, 0x76, 0x40, 0x3E, 0x87, 0xC3,
++ /* 0CA0 */ 0x3F, 0x47, 0xC3, 0x1F, 0x1B, 0x3B, 0xDD, 0xF3,
++ /* 0CA8 */ 0x81, 0xC1, 0xBA, 0x7E, 0x63, 0x06, 0x06, 0xB6,
++ /* 0CB0 */ 0x6F, 0x91, 0x07, 0x06, 0x1C, 0x51, 0xCF, 0xC6,
++ /* 0CB8 */ 0x57, 0x08, 0x0F, 0x0C, 0x6C, 0x80, 0x1E, 0x18,
++ /* 0CC0 */ 0xF0, 0x89, 0x05, 0x21, 0x27, 0x03, 0x43, 0x9D,
++ /* 0CC8 */ 0x32, 0x8C, 0x1C, 0xF3, 0x89, 0xC3, 0xC3, 0xF0,
++ /* 0CD0 */ 0xA1, 0x22, 0xEA, 0x33, 0xC0, 0x23, 0x1E, 0x1B,
++ /* 0CD8 */ 0x1B, 0xFB, 0xFF, 0x8F, 0x0D, 0x2C, 0xC7, 0x16,
++ /* 0CE0 */ 0x8F, 0x0D, 0xFC, 0x47, 0x78, 0xFC, 0xD8, 0xE0,
++ /* 0CE8 */ 0x8C, 0xE5, 0xD1, 0xC4, 0x97, 0x99, 0x23, 0x3B,
++ /* 0CF0 */ 0x8D, 0x33, 0x7B, 0x0D, 0xF1, 0xD1, 0xEE, 0xF1,
++ /* 0CF8 */ 0xDB, 0x63, 0x03, 0x97, 0x85, 0xB1, 0x01, 0xA5,
++ /* 0D00 */ 0x90, 0x63, 0x43, 0x1F, 0x52, 0x7C, 0x0A, 0xB0,
++ /* 0D08 */ 0x71, 0x54, 0x32, 0x0F, 0x1F, 0xAF, 0x7C, 0x62,
++ /* 0D10 */ 0x38, 0xBA, 0x20, 0x6F, 0xE8, 0xBE, 0x5C, 0xF8,
++ /* 0D18 */ 0x48, 0x63, 0x30, 0x5F, 0x5A, 0x7C, 0x06, 0xE5,
++ /* 0D20 */ 0x43, 0x04, 0x97, 0x86, 0x21, 0x02, 0xA5, 0x50,
++ /* 0D28 */ 0x43, 0x44, 0x8F, 0xE7, 0xFF, 0xFF, 0x08, 0xE6,
++ /* 0D30 */ 0x21, 0xB2, 0xA1, 0x81, 0xF7, 0x1B, 0xA3, 0xA1,
++ /* 0D38 */ 0x01, 0xA1, 0x70, 0x43, 0x43, 0x1F, 0xD6, 0x7C,
++ /* 0D40 */ 0x08, 0x60, 0x10, 0xBE, 0x0D, 0xB0, 0xAB, 0x80,
++ /* 0D48 */ 0xAF, 0x42, 0x1E, 0xE0, 0x93, 0x28, 0x1B, 0x1E,
++ /* 0D50 */ 0xF8, 0x06, 0xE5, 0xE1, 0x01, 0x9F, 0xF0, 0xC0,
++ /* 0D58 */ 0x5E, 0x85, 0x87, 0x47, 0xCF, 0x4A, 0x1E, 0x1E,
++ /* 0D60 */ 0x3C, 0x90, 0xC7, 0x08, 0x76, 0x0E, 0xF1, 0xE0,
++ /* 0D68 */ 0xC0, 0x61, 0x62, 0x70, 0xA0, 0x38, 0xFA, 0xE3,
++ /* 0D70 */ 0x86, 0xC0, 0x2E, 0xB3, 0x9E, 0x38, 0xBF, 0xB2,
++ /* 0D78 */ 0x78, 0x50, 0xF8, 0xFF, 0xFF, 0x11, 0x00, 0xD6,
++ /* 0D80 */ 0x71, 0x06, 0x7C, 0xC1, 0x0E, 0x07, 0xE8, 0x63,
++ /* 0D88 */ 0x22, 0x1B, 0xC3, 0x43, 0xC4, 0x83, 0xAB, 0x07,
++ /* 0D90 */ 0xE2, 0x6B, 0xC7, 0x6B, 0x31, 0xEE, 0x68, 0x00,
++ /* 0D98 */ 0x2E, 0x15, 0x47, 0x03, 0xA0, 0x74, 0xB0, 0x05,
++ /* 0DA0 */ 0xC7, 0x3D, 0xCD, 0x47, 0x3B, 0xCC, 0x1C, 0x3D,
++ /* 0DA8 */ 0x80, 0xE7, 0x37, 0x8F, 0x96, 0x9F, 0xDF, 0x00,
++ /* 0DB0 */ 0x47, 0x41, 0x0F, 0xB6, 0x74, 0xE0, 0x8E, 0x06,
++ /* 0DB8 */ 0x83, 0x3A, 0xBF, 0x61, 0xFE, 0xFF, 0xE7, 0x37,
++ /* 0DC0 */ 0x30, 0x44, 0x00, 0xD7, 0x99, 0xC6, 0xE7, 0x17,
++ /* 0DC8 */ 0x38, 0x43, 0x3D, 0x68, 0x5F, 0x13, 0x3C, 0x6B,
++ /* 0DD0 */ 0xDF, 0xB8, 0xD8, 0x39, 0x01, 0x5C, 0x03, 0xF2,
++ /* 0DD8 */ 0x49, 0x07, 0x38, 0x02, 0x9F, 0xC4, 0x03, 0xFE,
++ /* 0DE0 */ 0xA1, 0x81, 0x79, 0x58, 0x1E, 0x1A, 0xF0, 0x39,
++ /* 0DE8 */ 0x1A, 0xE0, 0x4E, 0x14, 0xE0, 0xB9, 0x8D, 0xE0,
++ /* 0DF0 */ 0x0E, 0x14, 0xC0, 0xE2, 0xFF, 0x7F, 0xA0, 0x00,
++ /* 0DF8 */ 0x56, 0x47, 0x7C, 0x8F, 0x8B, 0x43, 0xE3, 0x10,
++ /* 0E00 */ 0x1F, 0xD2, 0xCE, 0xD9, 0xE7, 0xAF, 0x33, 0xC5,
++ /* 0E08 */ 0x9D, 0x45, 0xC0, 0x70, 0xA2, 0x47, 0xBC, 0xD3,
++ /* 0E10 */ 0x0C, 0xE4, 0x07, 0x86, 0x84, 0xC0, 0xA0, 0x4E,
++ /* 0E18 */ 0x40, 0x1E, 0x8A, 0x0F, 0x06, 0x1C, 0xD8, 0x47,
++ /* 0E20 */ 0x04, 0x76, 0x2E, 0x60, 0x07, 0x28, 0xC3, 0xF1,
++ /* 0E28 */ 0xB3, 0x80, 0x4F, 0x09, 0x0F, 0x35, 0xC7, 0xF1,
++ /* 0E30 */ 0xB8, 0xE9, 0xBB, 0x99, 0x21, 0xD9, 0xD5, 0xE0,
++ /* 0E38 */ 0xF9, 0x07, 0x7B, 0xDA, 0x85, 0x73, 0xC4, 0x05,
++ /* 0E40 */ 0x17, 0x81, 0xCF, 0x3A, 0x1E, 0x05, 0x3F, 0x3D,
++ /* 0E48 */ 0x78, 0x8E, 0x6F, 0x0C, 0x3E, 0x3D, 0x30, 0xF7,
++ /* 0E50 */ 0x02, 0xCC, 0x1D, 0xBA, 0x85, 0x70, 0x4C, 0xAF,
++ /* 0E58 */ 0x0F, 0x31, 0x8E, 0xFA, 0xB1, 0xA1, 0x2D, 0x01,
++ /* 0E60 */ 0xDA, 0x50, 0x74, 0x07, 0x78, 0x19, 0x88, 0x12,
++ /* 0E68 */ 0xE2, 0x08, 0x22, 0xB5, 0x86, 0xA2, 0x99, 0x47,
++ /* 0E70 */ 0x8A, 0x12, 0x30, 0x9E, 0x61, 0x1A, 0x9B, 0x8C,
++ /* 0E78 */ 0x20, 0x63, 0x84, 0x8E, 0x13, 0x2C, 0x4A, 0xB4,
++ /* 0E80 */ 0x57, 0x80, 0xF6, 0x47, 0xCB, 0x56, 0xAC, 0xB1,
++ /* 0E88 */ 0x38, 0xD2, 0xC9, 0x12, 0x3D, 0x6C, 0x1F, 0xB3,
++ /* 0E90 */ 0xF1, 0xA7, 0x55, 0xCC, 0xFF, 0x9F, 0xE0, 0x55,
++ /* 0E98 */ 0xC5, 0x07, 0x05, 0x1F, 0x00, 0xF0, 0x2E, 0x01,
++ /* 0EA0 */ 0x75, 0x75, 0xF4, 0xB8, 0x7D, 0xDE, 0x00, 0xFF,
++ /* 0EA8 */ 0xF5, 0x02, 0x4B, 0x50, 0xFE, 0x20, 0x50, 0x23,
++ /* 0EB0 */ 0x33, 0xB4, 0xC7, 0xF9, 0x36, 0x63, 0xC8, 0x27,
++ /* 0EB8 */ 0x27, 0x13, 0x58, 0xEC, 0x09, 0x15, 0x68, 0x0C,
++ /* 0EC0 */ 0xFE, 0x69, 0xC3, 0xD7, 0x76, 0xCF, 0xD7, 0xE7,
++ /* 0EC8 */ 0x38, 0x80, 0x0F, 0xFF, 0xFF, 0x73, 0x1C, 0x60,
++ /* 0ED0 */ 0x68, 0x38, 0xB8, 0xA3, 0x0F, 0xDC, 0x2B, 0x09,
++ /* 0ED8 */ 0x3F, 0xFC, 0x00, 0xCE, 0x80, 0x1E, 0x7E, 0xC0,
++ /* 0EE0 */ 0x3E, 0x54, 0xDC, 0x10, 0x78, 0x84, 0x15, 0xD1,
++ /* 0EE8 */ 0xC3, 0x80, 0x45, 0xC3, 0xA0, 0xCE, 0x6B, 0xD8,
++ /* 0EF0 */ 0xFF, 0xFF, 0x79, 0x0D, 0xB6, 0x38, 0x70, 0x1D,
++ /* 0EF8 */ 0x54, 0x7D, 0x36, 0x86, 0x33, 0xA8, 0xD3, 0xEE,
++ /* 0F00 */ 0xFD, 0xAE, 0x40, 0x2E, 0x22, 0x1E, 0xF4, 0xF9,
++ /* 0F08 */ 0x3C, 0x3B, 0xB0, 0x03, 0x1B, 0xF0, 0x1F, 0x1B,
++ /* 0F10 */ 0x9C, 0x1B, 0xC0, 0x53, 0x74, 0x84, 0x63, 0x03,
++ /* 0F18 */ 0xFB, 0x89, 0x0D, 0x38, 0x9D, 0xED, 0xE0, 0x5C,
++ /* 0F20 */ 0xA1, 0xD8, 0x6D, 0x1F, 0x37, 0x34, 0xB0, 0xD9,
++ /* 0F28 */ 0x18, 0x1A, 0xC8, 0xFE, 0xFF, 0x87, 0x4F, 0xE0,
++ /* 0F30 */ 0x75, 0xE8, 0xE2, 0x97, 0x8A, 0xE7, 0x2F, 0x7E,
++ /* 0F38 */ 0xB8, 0x03, 0x9C, 0x4B, 0x3B, 0xD9, 0xA1, 0xC4,
++ /* 0F40 */ 0x1C, 0xEE, 0x00, 0x29, 0xFF, 0xFF, 0xC3, 0x1D,
++ /* 0F48 */ 0xB8, 0xEE, 0x72, 0xEF, 0x0C, 0x2F, 0x0D, 0x9E,
++ /* 0F50 */ 0xD3, 0xBB, 0x9D, 0x31, 0x5E, 0xEA, 0x8C, 0x10,
++ /* 0F58 */ 0x85, 0xDD, 0x06, 0xA2, 0xD9, 0xDB, 0xE1, 0x8E,
++ /* 0F60 */ 0x9C, 0xF0, 0x38, 0x66, 0xA4, 0x27, 0xBD, 0x60,
++ /* 0F68 */ 0x91, 0x22, 0x1E, 0x4E, 0x94, 0x10, 0xC1, 0x5E,
++ /* 0F70 */ 0x27, 0x9E, 0xF2, 0x1E, 0xEE, 0x98, 0x90, 0xC3,
++ /* 0F78 */ 0x1D, 0xD0, 0x71, 0x7D, 0xB8, 0x03, 0x2A, 0x27,
++ /* 0F80 */ 0x2A, 0xFC, 0xE1, 0x0E, 0x30, 0xFB, 0xFF, 0x3F,
++ /* 0F88 */ 0xDC, 0x01, 0x8C, 0x3A, 0xA3, 0xE1, 0x0E, 0x77,
++ /* 0F90 */ 0x60, 0x3B, 0xFD, 0x00, 0xE7, 0xFF, 0xFF, 0xE9,
++ /* 0F98 */ 0x07, 0x78, 0x8F, 0x15, 0xC6, 0x18, 0x78, 0xB4,
++ /* 0FA0 */ 0x25, 0x51, 0x20, 0x87, 0x81, 0x41, 0x11, 0x38,
++ /* 0FA8 */ 0xC8, 0xA1, 0x8E, 0x06, 0x3B, 0xBD, 0x40, 0x99,
++ /* 0FB0 */ 0xCB, 0x81, 0x9E, 0xC2, 0x33, 0x82, 0x0F, 0x60,
++ /* 0FB8 */ 0x60, 0x3F, 0xD5, 0x01, 0x87, 0x53, 0x03, 0x3E,
++ /* 0FC0 */ 0xD0, 0x09, 0x05, 0x3D, 0x0A, 0x9F, 0x4D, 0xC0,
++ /* 0FC8 */ 0x7B, 0xA4, 0x03, 0x36, 0xFF, 0xFF, 0xB3, 0x09,
++ /* 0FD0 */ 0x7B, 0x35, 0xFA, 0x6C, 0x82, 0x63, 0x31, 0xEA,
++ /* 0FD8 */ 0x1B, 0xC4, 0x21, 0xBE, 0x74, 0xF8, 0xDC, 0xF8,
++ /* 0FE0 */ 0x4E, 0xE3, 0x4B, 0x00, 0xE6, 0xFA, 0x61, 0x82,
++ /* 0FE8 */ 0x31, 0x21, 0xF4, 0xC9, 0xF2, 0xA9, 0x0E, 0x38,
++ /* 0FF0 */ 0x1D, 0x4E, 0xE0, 0x8D, 0x1E, 0x77, 0x5A, 0xF0,
++ /* 0FF8 */ 0x70, 0x38, 0xB8, 0x67, 0xF3, 0x2C, 0xF1, 0x44,
++ /* 1000 */ 0xE4, 0x71, 0xF8, 0x74, 0x02, 0xBC, 0x0E, 0x18,
++ /* 1008 */ 0x98, 0x19, 0x84, 0x7F, 0x08, 0x61, 0xA7, 0x4F,
++ /* 1010 */ 0x1F, 0x99, 0x3C, 0xF7, 0x77, 0x23, 0x9F, 0x4E,
++ /* 1018 */ 0x00, 0x5F, 0xFF, 0xFF, 0xA3, 0x1E, 0xB0, 0x90,
++ /* 1020 */ 0xA8, 0xE1, 0x9C, 0x87, 0x11, 0x05, 0x83, 0x3A,
++ /* 1028 */ 0xEA, 0x01, 0xD6, 0x2E, 0x7A, 0x36, 0x86, 0xA0,
++ /* 1030 */ 0x8B, 0xC0, 0x19, 0x84, 0x78, 0xBC, 0x7B, 0xC5,
++ /* 1038 */ 0x8B, 0xE4, 0x3B, 0x40, 0x9C, 0x47, 0x3D, 0x83,
++ /* 1040 */ 0xBD, 0x7D, 0x3C, 0x48, 0x44, 0x89, 0xF3, 0xA8,
++ /* 1048 */ 0xE7, 0xD1, 0x87, 0xF2, 0xE4, 0x43, 0x9D, 0x7E,
++ /* 1050 */ 0xAC, 0xB0, 0x81, 0x9E, 0xF8, 0x5E, 0xF4, 0x42,
++ /* 1058 */ 0x1A, 0xE1, 0x51, 0x8F, 0x09, 0x7A, 0x79, 0xE8,
++ /* 1060 */ 0x70, 0xE5, 0xA3, 0x1E, 0x60, 0xE5, 0xFF, 0x7F,
++ /* 1068 */ 0xD4, 0x03, 0xF8, 0xFF, 0xFF, 0x3F, 0xEA, 0x81,
++ /* 1070 */ 0xF9, 0xF4, 0x04, 0xF8, 0x3F, 0xD6, 0xE0, 0x8E,
++ /* 1078 */ 0x8A, 0x60, 0x3B, 0x3F, 0x01, 0x2E, 0xFE, 0xFF,
++ /* 1080 */ 0xE7, 0x27, 0x30, 0x0D, 0xDD, 0xE7, 0x27, 0x30,
++ /* 1088 */ 0x8F, 0x16, 0xE6, 0x01, 0x01, 0x71, 0x56, 0x44,
++ /* 1090 */ 0x85, 0x7F, 0xC8, 0x18, 0x0E, 0x15, 0x1C, 0x48,
++ /* 1098 */ 0xBF, 0x28, 0x1F, 0x01, 0x81, 0xCB, 0x51, 0x11,
++ /* 10A0 */ 0x38, 0x9C, 0x59, 0xF0, 0x42, 0x4E, 0x1D, 0xE8,
++ /* 10A8 */ 0xF1, 0x18, 0xF4, 0x95, 0xC3, 0x57, 0x02, 0x7E,
++ /* 10B0 */ 0xE4, 0x60, 0xA1, 0x8F, 0x1C, 0xA0, 0x3A, 0x2C,
++ /* 10B8 */ 0x82, 0xEF, 0xC8, 0x01, 0x8E, 0xEB, 0x55, 0x60,
++ /* 10C0 */ 0xFE, 0xFF, 0x07, 0x66, 0xB7, 0x83, 0xD7, 0x4F,
++ /* 10C8 */ 0x4F, 0xE2, 0x31, 0xEA, 0x38, 0x43, 0x14, 0x8E,
++ /* 10D0 */ 0x49, 0x0E, 0x06, 0x91, 0xDE, 0xC1, 0xD8, 0x00,
++ /* 10D8 */ 0x5F, 0x5E, 0x7C, 0xA8, 0xF2, 0x31, 0x10, 0x18,
++ /* 10E0 */ 0x42, 0x9C, 0x0D, 0x3F, 0x5D, 0x18, 0xF3, 0x74,
++ /* 10E8 */ 0xF8, 0x31, 0x10, 0xB0, 0x2E, 0xF5, 0x0C, 0x88,
++ /* 10F0 */ 0x12, 0x77, 0x0C, 0x04, 0x52, 0xFF, 0xFF, 0x63,
++ /* 10F8 */ 0x20, 0x70, 0xBD, 0x04, 0x7A, 0xCC, 0x67, 0xFC,
++ /* 1100 */ 0xE6, 0xF7, 0xE4, 0x17, 0xA5, 0xB6, 0xEB, 0x9F,
++ /* 1108 */ 0xEE, 0x06, 0xC6, 0x7A, 0x08, 0x78, 0x02, 0xF4,
++ /* 1110 */ 0xFD, 0xCF, 0xC7, 0x8A, 0x28, 0x01, 0xA3, 0xC4,
++ /* 1118 */ 0x7A, 0x11, 0x34, 0x66, 0x8C, 0x60, 0xEF, 0x80,
++ /* 1120 */ 0x31, 0x1F, 0x09, 0x3D, 0xC2, 0x68, 0xC1, 0x0D,
++ /* 1128 */ 0xF4, 0x18, 0xC8, 0x84, 0x1D, 0x03, 0x01, 0x12,
++ /* 1130 */ 0xFD, 0xFF, 0x8F, 0x81, 0x00, 0x23, 0x4F, 0x50,
++ /* 1138 */ 0xC0, 0xF6, 0xFF, 0x7F, 0x82, 0x02, 0x0C, 0x1D,
++ /* 1140 */ 0x05, 0xC1, 0x7C, 0x86, 0x02, 0xAC, 0x1D, 0x05,
++ /* 1148 */ 0xC1, 0x3E, 0x5A, 0x98, 0xA3, 0xE0, 0x82, 0x5E,
++ /* 1150 */ 0x1E, 0x06, 0xA2, 0x12, 0x24, 0xFC, 0xFF, 0x8F,
++ /* 1158 */ 0x82, 0xD8, 0xF8, 0x6B, 0x13, 0x8C, 0x43, 0x9D,
++ /* 1160 */ 0x5E, 0xD0, 0x07, 0x05, 0x0F, 0xFB, 0xA9, 0xC0,
++ /* 1168 */ 0x93, 0x38, 0x55, 0x5F, 0x0B, 0x8E, 0xE2, 0x09,
++ /* 1170 */ 0xC0, 0x87, 0x41, 0xE0, 0x3F, 0x34, 0x58, 0x93,
++ /* 1178 */ 0x28, 0x7E, 0x68, 0xA0, 0x3E, 0x7B, 0x80, 0x6F,
++ /* 1180 */ 0x68, 0xE0, 0x88, 0x7A, 0xC6, 0x41, 0x9F, 0x88,
++ /* 1188 */ 0x7C, 0x36, 0x88, 0xF9, 0xE6, 0x11, 0xE1, 0xC9,
++ /* 1190 */ 0xC3, 0xD7, 0x07, 0x76, 0xF2, 0xF4, 0xA9, 0x29,
++ /* 1198 */ 0x50, 0x94, 0xF7, 0x0D, 0x1E, 0xE7, 0x94, 0x03,
++ /* 11A0 */ 0xAA, 0xC3, 0x2F, 0x38, 0x0E, 0xBC, 0x30, 0xFE,
++ /* 11A8 */ 0xFF, 0x07, 0x5E, 0x76, 0x9C, 0xF2, 0xB1, 0x04,
++ /* 11B0 */ 0x7C, 0x67, 0x52, 0x38, 0x37, 0x17, 0xDF, 0xF1,
++ /* 11B8 */ 0xD8, 0x69, 0x00, 0x6C, 0x3A, 0x4E, 0x03, 0x40,
++ /* 11C0 */ 0xE9, 0x58, 0xC5, 0xCF, 0x93, 0x60, 0x82, 0x39,
++ /* 11C8 */ 0x98, 0xF7, 0x6B, 0x7B, 0x3F, 0xDE, 0xD0, 0xD3,
++ /* 11D0 */ 0x24, 0xE0, 0xF8, 0xFF, 0x7F, 0x9A, 0x84, 0x21,
++ /* 11D8 */ 0xE2, 0x28, 0x89, 0x8A, 0xFD, 0x90, 0xF2, 0x69,
++ /* 11E0 */ 0x12, 0x90, 0x77, 0x67, 0x30, 0xC2, 0xF9, 0x87,
++ /* 11E8 */ 0x78, 0x80, 0x08, 0xF1, 0x20, 0x69, 0x90, 0x38,
++ /* 11F0 */ 0x41, 0x5E, 0x06, 0x9E, 0x26, 0x7D, 0x99, 0x8C,
++ /* 11F8 */ 0xF3, 0x40, 0x19, 0xE5, 0x75, 0xD2, 0x08, 0x47,
++ /* 1200 */ 0x1F, 0xCF, 0x40, 0x2F, 0x92, 0x21, 0x5E, 0x25,
++ /* 1208 */ 0x1F, 0x2C, 0xDF, 0x27, 0x8D, 0x16, 0x2B, 0xF8,
++ /* 1210 */ 0x31, 0x3E, 0x4D, 0xB2, 0xC8, 0x2B, 0xD6, 0x69,
++ /* 1218 */ 0x12, 0xB0, 0xF9, 0xFF, 0x3F, 0x4D, 0x02, 0xFC,
++ /* 1220 */ 0xFF, 0xFF, 0x9F, 0x1D, 0xD8, 0xC1, 0x0A, 0x38,
++ /* 1228 */ 0x1E, 0xC3, 0xC0, 0x71, 0xB0, 0x02, 0x2E, 0xE7,
++ /* 1230 */ 0x79, 0xF0, 0x1C, 0x1F, 0x61, 0x1C, 0x99, 0x00,
++ /* 1238 */ 0xD7, 0xFF, 0xFF, 0xB1, 0xC2, 0x18, 0x03, 0x4F,
++ /* 1240 */ 0xF6, 0x34, 0xA0, 0xC7, 0x01, 0x8B, 0x3A, 0x30,
++ /* 1248 */ 0x09, 0x86, 0xB3, 0xF8, 0xB0, 0xE0, 0x23, 0x02,
++ /* 1250 */ 0x3F, 0x2C, 0x78, 0x04, 0x15, 0x8F, 0x93, 0x1E,
++ /* 1258 */ 0x8B, 0x7C, 0x98, 0x64, 0x87, 0x04, 0x1F, 0x42,
++ /* 1260 */ 0x3C, 0x48, 0x9F, 0x50, 0xC1, 0x73, 0xB0, 0x82,
++ /* 1268 */ 0x77, 0x5D, 0x82, 0x73, 0x2A, 0x00, 0xDC, 0x68,
++ /* 1270 */ 0x57, 0x71, 0xBA, 0x60, 0x01, 0x0E, 0x60, 0xB2,
++ /* 1278 */ 0x71, 0x0C, 0xA1, 0x1C, 0x8E, 0xF9, 0xF6, 0xD0,
++ /* 1280 */ 0x34, 0xD9, 0x91, 0x0C, 0x66, 0x2C, 0x48, 0x9D,
++ /* 1288 */ 0x04, 0x3C, 0x00, 0x07, 0x82, 0x91, 0x76, 0x12,
++ /* 1290 */ 0x8D, 0xC6, 0x70, 0x56, 0x0B, 0x23, 0x38, 0x83,
++ /* 1298 */ 0xF8, 0x38, 0xE2, 0x5C, 0x47, 0x2A, 0xF4, 0x6E,
++ /* 12A0 */ 0x74, 0x9C, 0x42, 0x05, 0xB9, 0x97, 0xD0, 0x79,
++ /* 12A8 */ 0xFB, 0x6E, 0xC0, 0xDF, 0x69, 0x1E, 0x8B, 0x81,
++ /* 12B0 */ 0x7D, 0x43, 0xF0, 0xFF, 0xFF, 0x76, 0x02, 0x7F,
++ /* 12B8 */ 0x2E, 0x56, 0x03, 0x8A, 0x1A, 0x80, 0xD1, 0x30,
++ /* 12C0 */ 0xA7, 0x80, 0xA7, 0x12, 0x70, 0x05, 0x9B, 0x1B,
++ /* 12C8 */ 0xFA, 0xC2, 0x62, 0xAD, 0x53, 0xD1, 0xF1, 0xE9,
++ /* 12D0 */ 0x7D, 0xE0, 0xE0, 0x80, 0xC7, 0xEC, 0x3D, 0x38,
++ /* 12D8 */ 0x58, 0x68, 0x1E, 0x1C, 0xD8, 0xB2, 0x0D, 0x0E,
++ /* 12E0 */ 0xAD, 0xE4, 0x2E, 0x42, 0x0E, 0x1F, 0xF8, 0xD9,
++ /* 12E8 */ 0x01, 0x07, 0x40, 0xCF, 0x0E, 0x16, 0x92, 0x67,
++ /* 12F0 */ 0x07, 0x36, 0x7D, 0x67, 0x11, 0x50, 0x00, 0xF9,
++ /* 12F8 */ 0xDE, 0xE1, 0x73, 0xCB, 0xFF, 0xFF, 0xD9, 0x83,
++ /* 1300 */ 0x8D, 0xE1, 0xD1, 0xC5, 0x68, 0x46, 0xE7, 0x9A,
++ /* 1308 */ 0x6E, 0x13, 0x28, 0x15, 0xB7, 0x09, 0x0A, 0xE2,
++ /* 1310 */ 0x1B, 0x80, 0x13, 0xD2, 0xE8, 0x9E, 0x86, 0x9B,
++ /* 1318 */ 0x89, 0xF1, 0x1F, 0x31, 0x7C, 0x44, 0x38, 0xA4,
++ /* 1320 */ 0xB3, 0x35, 0xC1, 0x3C, 0x90, 0x7A, 0x3F, 0xFA,
++ /* 1328 */ 0xB2, 0x87, 0x9F, 0x7D, 0xC8, 0x07, 0x17, 0x4F,
++ /* 1330 */ 0xC3, 0xD7, 0x1B, 0x72, 0xEF, 0xA0, 0xD3, 0xF6,
++ /* 1338 */ 0x99, 0x01, 0x73, 0x42, 0xF6, 0x75, 0x2A, 0x81,
++ /* 1340 */ 0x65, 0x5D, 0x25, 0xA8, 0x87, 0x0B, 0x08, 0xBD,
++ /* 1348 */ 0xD0, 0xF8, 0x5E, 0x98, 0xE0, 0xE1, 0xCC, 0xB7,
++ /* 1350 */ 0xB3, 0xF7, 0x12, 0x76, 0x38, 0x4C, 0xF0, 0x6E,
++ /* 1358 */ 0x98, 0x60, 0xDE, 0x41, 0xA0, 0x46, 0xE5, 0x41,
++ /* 1360 */ 0x60, 0x2E, 0xFF, 0x2C, 0xDF, 0x18, 0x50, 0xC9,
++ /* 1368 */ 0x2E, 0x5A, 0xF4, 0x0C, 0xF3, 0x0E, 0xE3, 0x4B,
++ /* 1370 */ 0x82, 0xAF, 0x1F, 0x3E, 0xB7, 0x78, 0x01, 0xAF,
++ /* 1378 */ 0x5B, 0x30, 0x08, 0x9E, 0x81, 0x5E, 0x5D, 0x7C,
++ /* 1380 */ 0xCB, 0x37, 0xF0, 0xAB, 0xC0, 0x1B, 0x4D, 0x88,
++ /* 1388 */ 0x60, 0x86, 0x3D, 0xFC, 0xB7, 0x7D, 0xA3, 0xFA,
++ /* 1390 */ 0xA6, 0x63, 0xAC, 0xD7, 0x11, 0x8F, 0x94, 0x1F,
++ /* 1398 */ 0x5B, 0x0E, 0x28, 0xD2, 0x5B, 0x9F, 0x27, 0xE0,
++ /* 13A0 */ 0xB3, 0x8C, 0x8F, 0x83, 0x27, 0xE5, 0x7B, 0xA5,
++ /* 13A8 */ 0xD1, 0x5F, 0x21, 0x7C, 0xF8, 0x31, 0xB2, 0xCF,
++ /* 13B0 */ 0x39, 0xEC, 0x60, 0xC8, 0x06, 0xC5, 0x11, 0x1F,
++ /* 13B8 */ 0x18, 0x5E, 0x6A, 0x3C, 0x15, 0x76, 0xEE, 0x82,
++ /* 13C0 */ 0x71, 0x70, 0x60, 0xC7, 0x22, 0xCC, 0x51, 0x0F,
++ /* 13C8 */ 0x5C, 0x27, 0x1B, 0x03, 0xB3, 0xFF, 0xFF, 0xC9,
++ /* 13D0 */ 0x01, 0x9C, 0xF0, 0x98, 0x13, 0xB3, 0xCF, 0x1B,
++ /* 13D8 */ 0xBE, 0x19, 0x78, 0x5C, 0xFC, 0xC8, 0xE1, 0xE3,
++ /* 13E0 */ 0x1D, 0xC3, 0x3E, 0x4D, 0x1F, 0x8D, 0x5E, 0xDE,
++ /* 13E8 */ 0x7C, 0x7A, 0xC1, 0xC0, 0xFA, 0xD2, 0xC0, 0x61,
++ /* 13F0 */ 0x8D, 0x16, 0xF6, 0x31, 0xE0, 0xCC, 0x7D, 0x21,
++ /* 13F8 */ 0xC2, 0x9D, 0x3A, 0xC1, 0x02, 0x88, 0xBF, 0x95,
++ /* 1400 */ 0x3C, 0x72, 0x78, 0x02, 0x06, 0x64, 0xB9, 0xD7,
++ /* 1408 */ 0xA5, 0x03, 0x11, 0x3F, 0xE5, 0x59, 0xDD, 0x81,
++ /* 1410 */ 0x08, 0x81, 0xF1, 0x38, 0xFA, 0xF8, 0xE1, 0xD9,
++ /* 1418 */ 0xF8, 0x28, 0xE0, 0x63, 0x94, 0x67, 0x7E, 0x46,
++ /* 1420 */ 0x91, 0x5E, 0x19, 0xAC, 0xE5, 0x44, 0x84, 0x52,
++ /* 1428 */ 0x01, 0xA3, 0xC0, 0x34, 0xBA, 0x73, 0xF0, 0x88,
++ /* 1430 */ 0x30, 0x82, 0x33, 0x88, 0x47, 0xEB, 0x9B, 0x0B,
++ /* 1438 */ 0x30, 0x3D, 0x13, 0x01, 0x97, 0xEB, 0xA5, 0x71,
++ /* 1440 */ 0xFD, 0xFF, 0xBF, 0x2C, 0x62, 0xA7, 0x6D, 0xDC,
++ /* 1448 */ 0x57, 0x54, 0x9F, 0x8E, 0x3D, 0xF1, 0xD3, 0x86,
++ /* 1450 */ 0x71, 0x32, 0x02, 0x7C, 0xDC, 0x75, 0x00, 0xFE,
++ /* 1458 */ 0xFC, 0xFF, 0xEF, 0x3A, 0x00, 0xB7, 0xEE, 0x0F,
++ /* 1460 */ 0xBE, 0xEB, 0x00, 0xD7, 0x48, 0xAB, 0xA2, 0x22,
++ /* 1468 */ 0x7E, 0x0B, 0x0A, 0x01, 0x83, 0x1A, 0x9D, 0xAF,
++ /* 1470 */ 0x15, 0xF8, 0x63, 0x09, 0x23, 0xF8, 0xFF, 0x07,
++ /* 1478 */ 0xF7, 0x79, 0xC5, 0x70, 0x7C, 0xE0, 0x1E, 0xDF,
++ /* 1480 */ 0xEB, 0xCA, 0x69, 0x3D, 0x1B, 0xF8, 0xC6, 0x62,
++ /* 1488 */ 0x48, 0x76, 0x41, 0xC5, 0xDD, 0x2F, 0x7C, 0xA3,
++ /* 1490 */ 0xF6, 0x54, 0x5F, 0x14, 0xDE, 0x13, 0x7C, 0x47,
++ /* 1498 */ 0x60, 0x50, 0x30, 0xEE, 0xA8, 0x98, 0x03, 0x2A,
++ /* 14A0 */ 0x1C, 0x82, 0x33, 0x3E, 0x0A, 0xCC, 0x20, 0x7D,
++ /* 14A8 */ 0x48, 0x79, 0x3D, 0xF0, 0x60, 0x99, 0xFB, 0xE3,
++ /* 14B0 */ 0x86, 0x2E, 0x11, 0x0F, 0x1B, 0x4F, 0x06, 0xCD,
++ /* 14B8 */ 0xA1, 0xE8, 0x4C, 0x70, 0x0A, 0x6D, 0x0D, 0x4B,
++ /* 14C0 */ 0x38, 0xEF, 0x1B, 0x21, 0xA2, 0x04, 0x7B, 0xE1,
++ /* 14C8 */ 0x78, 0x63, 0x78, 0x9A, 0x8D, 0x12, 0x2F, 0x52,
++ /* 14D0 */ 0xC0, 0x68, 0x51, 0x82, 0xF5, 0x06, 0x21, 0xD0,
++ /* 14D8 */ 0x48, 0x21, 0x02, 0x86, 0x28, 0x0E, 0x4B, 0x70,
++ /* 14E0 */ 0xD1, 0xDB, 0xBF, 0xC6, 0xB3, 0x37, 0x81, 0x8E,
++ /* 14E8 */ 0x32, 0x8E, 0x74, 0xDC, 0x41, 0x0F, 0xDB, 0x37,
++ /* 14F0 */ 0x56, 0x7E, 0xBE, 0xF7, 0xB8, 0x7C, 0x01, 0xC5,
++ /* 14F8 */ 0x10, 0xBC, 0x66, 0xF8, 0x0B, 0xE0, 0x03, 0x00,
++ /* 1500 */ 0xDE, 0x35, 0xA0, 0x66, 0xFE, 0x78, 0x00, 0x96,
++ /* 1508 */ 0xEB, 0x35, 0xF8, 0xE4, 0x0F, 0x02, 0x75, 0x99,
++ /* 1510 */ 0xE1, 0x67, 0x0F, 0xDF, 0x5C, 0x7D, 0x0F, 0x38,
++ /* 1518 */ 0x2C, 0x76, 0xEB, 0xE6, 0xE3, 0x01, 0xFF, 0xFF,
++ /* 1520 */ 0x7F, 0xE8, 0x2F, 0xBD, 0x3E, 0x54, 0x78, 0xBE,
++ /* 1528 */ 0xBE, 0xFA, 0xFA, 0xF6, 0x0D, 0xDE, 0xCB, 0x31,
++ /* 1530 */ 0x60, 0x4F, 0xF0, 0x0D, 0x1C, 0xE4, 0xE3, 0x05,
++ /* 1538 */ 0xC3, 0x38, 0xB8, 0x72, 0x12, 0x7A, 0x2C, 0xB0,
++ /* 1540 */ 0x56, 0x18, 0xD4, 0x2D, 0x1C, 0x5C, 0x9A, 0xC0,
++ /* 1548 */ 0x75, 0x55, 0xF6, 0xA1, 0xC6, 0x87, 0x60, 0xFC,
++ /* 1550 */ 0xF9, 0x02, 0x17, 0x60, 0xC8, 0xF4, 0x54, 0x06,
++ /* 1558 */ 0xE3, 0x9A, 0xE2, 0x53, 0x19, 0xFB, 0xFF, 0x9F,
++ /* 1560 */ 0xCA, 0x7C, 0x77, 0xF0, 0x80, 0x7C, 0xC4, 0x00,
++ /* 1568 */ 0x3E, 0xAB, 0xF0, 0xC0, 0x70, 0xA7, 0x05, 0xDF,
++ /* 1570 */ 0x94, 0x0C, 0x7A, 0x8E, 0x41, 0x7D, 0xE4, 0x39,
++ /* 1578 */ 0x79, 0xDF, 0x13, 0x1E, 0x27, 0x1C, 0xF5, 0x1C,
++ /* 1580 */ 0x44, 0xC7, 0x06, 0x8E, 0xE3, 0x06, 0x38, 0x0E,
++ /* 1588 */ 0x37, 0xB8, 0x73, 0x1E, 0x1B, 0x17, 0x06, 0xEE,
++ /* 1590 */ 0xB9, 0xC0, 0xC3, 0xF0, 0x4D, 0xC7, 0x23, 0xC2,
++ /* 1598 */ 0x8C, 0xFF, 0x51, 0xCF, 0x08, 0x01, 0xF1, 0x17,
++ /* 15A0 */ 0x23, 0x36, 0x60, 0x30, 0xDE, 0xDA, 0x7C, 0x7D,
++ /* 15A8 */ 0xC3, 0x0D, 0xD8, 0x57, 0x07, 0x5F, 0x30, 0x7C,
++ /* 15B0 */ 0x02, 0x33, 0xFA, 0x0B, 0xCC, 0x93, 0x98, 0x8F,
++ /* 15B8 */ 0x0D, 0xE4, 0x02, 0x47, 0x07, 0x0C, 0x0E, 0x40,
++ /* 15C0 */ 0x0F, 0x18, 0xFE, 0xE1, 0xE2, 0x5D, 0x0E, 0x0C,
++ /* 15C8 */ 0x57, 0x41, 0xFF, 0xFF, 0x8F, 0x0B, 0x3E, 0xF6,
++ /* 15D0 */ 0x58, 0xD1, 0x5D, 0x0E, 0x7D, 0x93, 0x33, 0x4C,
++ /* 15D8 */ 0x1C, 0x43, 0xBC, 0x81, 0xB1, 0xBB, 0x04, 0x39,
++ /* 15E0 */ 0xCC, 0x41, 0xBD, 0x4B, 0x78, 0x0E, 0xFC, 0x6C,
++ /* 15E8 */ 0xE1, 0x13, 0x9C, 0x6F, 0x3E, 0x21, 0x4E, 0xF5,
++ /* 15F0 */ 0xD1, 0xEA, 0x3D, 0xC0, 0x47, 0x8F, 0xF7, 0x2E,
++ /* 15F8 */ 0x9F, 0x9D, 0xD8, 0x45, 0xC0, 0x47, 0x2E, 0xE3,
++ /* 1600 */ 0x78, 0x9A, 0xBE, 0x02, 0x7A, 0xC8, 0x06, 0x7B,
++ /* 1608 */ 0xD5, 0xF0, 0x09, 0xCC, 0x47, 0x37, 0xDC, 0x31,
++ /* 1610 */ 0xCA, 0x33, 0xF1, 0xF4, 0x7D, 0x07, 0x61, 0x47,
++ /* 1618 */ 0x92, 0xA3, 0x0E, 0x75, 0x4D, 0x8F, 0x28, 0x27,
++ /* 1620 */ 0x74, 0x20, 0xBE, 0xB5, 0x81, 0x33, 0xDA, 0xFD,
++ /* 1628 */ 0x03, 0xBD, 0x4D, 0x8F, 0x0C, 0x73, 0x34, 0x80,
++ /* 1630 */ 0x75, 0x09, 0x01, 0xD7, 0x1D, 0xC3, 0x97, 0x10,
++ /* 1638 */ 0xE0, 0x13, 0xF4, 0x12, 0x81, 0xBE, 0x66, 0x78,
++ /* 1640 */ 0x74, 0x8F, 0x00, 0x98, 0x2B, 0x06, 0x3B, 0x16,
++ /* 1648 */ 0xF8, 0xB0, 0xE1, 0x6B, 0x00, 0xBB, 0x17, 0x38,
++ /* 1650 */ 0xCC, 0x3D, 0x02, 0xE2, 0xFF, 0x7F, 0x78, 0x30,
++ /* 1658 */ 0x40, 0x3D, 0x3C, 0xF8, 0x6A, 0xEF, 0x11, 0xA0,
++ /* 1660 */ 0x38, 0x59, 0xFA, 0xD0, 0xE0, 0x81, 0x5A, 0xD5,
++ /* 1668 */ 0x19, 0x13, 0xCA, 0x11, 0x93, 0x43, 0x45, 0x63,
++ /* 1670 */ 0xB7, 0x02, 0x76, 0xBB, 0xF4, 0x4D, 0x02, 0x6E,
++ /* 1678 */ 0x9E, 0x59, 0xA0, 0x92, 0xDC, 0x24, 0xA0, 0xC3,
++ /* 1680 */ 0x74, 0x79, 0x99, 0xA1, 0xF3, 0x3F, 0x70, 0xDF,
++ /* 1688 */ 0xEA, 0x3C, 0x42, 0x1F, 0x22, 0x18, 0xCA, 0x7B,
++ /* 1690 */ 0x9E, 0x4F, 0x61, 0xFC, 0x0C, 0xE1, 0x03, 0x26,
++ /* 1698 */ 0x3B, 0x53, 0xF0, 0xB3, 0x26, 0xEE, 0x0E, 0x60,
++ /* 16A0 */ 0x94, 0x37, 0x4F, 0x4F, 0x80, 0x9D, 0x3F, 0x8D,
++ /* 16A8 */ 0xFC, 0x6E, 0xF0, 0x2E, 0xE0, 0xE9, 0xFB, 0x5E,
++ /* 16B0 */ 0xC4, 0x4F, 0x14, 0xE0, 0x0B, 0x76, 0xA7, 0x83,
++ /* 16B8 */ 0x02, 0x7D, 0x42, 0x1E, 0x91, 0x51, 0x7D, 0x44,
++ /* 16C0 */ 0xE0, 0x97, 0x24, 0x30, 0x1E, 0x49, 0x7C, 0xA0,
++ /* 16C8 */ 0x00, 0xC3, 0xFF, 0xFF, 0x40, 0x01, 0xBA, 0x7B,
++ /* 16D0 */ 0x01, 0xEA, 0xF4, 0xC1, 0x0F, 0xCF, 0xBE, 0xA0,
++ /* 16D8 */ 0x1A, 0xF3, 0xDD, 0xEA, 0x11, 0xCE, 0x93, 0xC3,
++ /* 16E0 */ 0x5C, 0x0E, 0x58, 0x9C, 0x6B, 0x12, 0xA8, 0x8E,
++ /* 16E8 */ 0xBB, 0x7C, 0x74, 0x70, 0xAF, 0xAD, 0xF8, 0xC1,
++ /* 16F0 */ 0xBD, 0xB3, 0xBC, 0xF3, 0x19, 0xCA, 0x83, 0x04,
++ /* 16F8 */ 0xDF, 0xB5, 0x15, 0x1C, 0x57, 0x35, 0x18, 0xC7,
++ /* 1700 */ 0x16, 0x7E, 0xC9, 0x03, 0xEC, 0x0C, 0x8B, 0x0B,
++ /* 1708 */ 0xFE, 0x7B, 0x18, 0x88, 0x4A, 0x84, 0x41, 0x11,
++ /* 1710 */ 0x58, 0x9E, 0x81, 0xFF, 0xFF, 0xB9, 0x80, 0xC1,
++ /* 1718 */ 0x1F, 0x32, 0x18, 0x6F, 0x0A, 0x7C, 0xD2, 0xD8,
++ /* 1720 */ 0x51, 0x03, 0x76, 0x86, 0x8A, 0xBB, 0x29, 0x82,
++ /* 1728 */ 0x75, 0xAA, 0x98, 0x21, 0xF0, 0x60, 0x0F, 0x00,
++ /* 1730 */ 0x9F, 0xAF, 0x7C, 0x06, 0x50, 0x14, 0x18, 0xD4,
++ /* 1738 */ 0xA1, 0x1D, 0xCE, 0x6D, 0x18, 0x70, 0x30, 0x62,
++ /* 1740 */ 0xDC, 0xC1, 0xE0, 0xFF, 0xFF, 0x52, 0x08, 0x73,
++ /* 1748 */ 0xCA, 0xEF, 0x28, 0xB1, 0x9F, 0xCB, 0xD9, 0x74,
++ /* 1750 */ 0x71, 0x57, 0x73, 0x9F, 0x4E, 0xD8, 0x05, 0x19,
++ /* 1758 */ 0xC6, 0x59, 0xE0, 0x11, 0xE0, 0xD5, 0x9C, 0x5F,
++ /* 1760 */ 0x90, 0x5F, 0x88, 0x5F, 0x08, 0xDE, 0x90, 0x7D,
++ /* 1768 */ 0x53, 0x7A, 0x36, 0x78, 0xD9, 0x89, 0xF1, 0x6E,
++ /* 1770 */ 0xEC, 0x53, 0xB2, 0xCF, 0x3B, 0x2F, 0xC8, 0xC6,
++ /* 1778 */ 0x38, 0x9A, 0x88, 0x51, 0xCE, 0xED, 0x61, 0xE0,
++ /* 1780 */ 0x35, 0xD9, 0x28, 0xEF, 0x27, 0x2F, 0x04, 0x11,
++ /* 1788 */ 0xA3, 0x19, 0x22, 0x68, 0x8C, 0x40, 0xEF, 0xCB,
++ /* 1790 */ 0xC6, 0x7B, 0x41, 0x66, 0x02, 0xDF, 0x0A, 0x3A,
++ /* 1798 */ 0xB8, 0xF8, 0x82, 0x0C, 0xF0, 0xE3, 0x64, 0x04,
++ /* 17A0 */ 0xB6, 0xFF, 0xFF, 0xC9, 0x08, 0x30, 0x74, 0xE2,
++ /* 17A8 */ 0xC0, 0x5D, 0xAA, 0xC1, 0x77, 0xB2, 0x01, 0x9C,
++ /* 17B0 */ 0x0D, 0xDD, 0x27, 0x1B, 0x70, 0x8F, 0x16, 0xDE,
++ /* 17B8 */ 0xD1, 0x04, 0x71, 0xB2, 0xA1, 0x40, 0x0E, 0xEE,
++ /* 17C0 */ 0xE0, 0xFF, 0x7F, 0x68, 0xC2, 0x86, 0x3E, 0x89,
++ /* 17C8 */ 0xD0, 0xA3, 0x93, 0x8F, 0x92, 0xB8, 0x33, 0x83,
++ /* 17D0 */ 0x27, 0xF2, 0xCE, 0xE2, 0x51, 0xBC, 0x0C, 0xFA,
++ /* 17D8 */ 0x5E, 0x70, 0x22, 0xAF, 0x0F, 0x96, 0x73, 0x8C,
++ /* 17E0 */ 0x04, 0xD5, 0x48, 0x7C, 0x7C, 0x80, 0x7F, 0x7D,
++ /* 17E8 */ 0xF1, 0x31, 0x12, 0x3E, 0x9F, 0x7F, 0x58, 0x1E,
++ /* 17F0 */ 0x8C, 0x21, 0x7D, 0x8A, 0xE4, 0x20, 0xCF, 0x2E,
++ /* 17F8 */ 0x8F, 0x21, 0xFC, 0x02, 0x09, 0xF7, 0x34, 0x73,
++ /* 1800 */ 0x00, 0x18, 0x59, 0x97, 0x47, 0xF4, 0xD9, 0x91,
++ /* 1808 */ 0x63, 0xC4, 0xF5, 0x45, 0xD1, 0x57, 0x60, 0x1F,
++ /* 1810 */ 0x04, 0xCE, 0xE7, 0x39, 0x11, 0xAC, 0xA3, 0xE6,
++ /* 1818 */ 0x47, 0x1B, 0x3E, 0x7E, 0x0E, 0xFE, 0x56, 0xF0,
++ /* 1820 */ 0x40, 0xE9, 0x63, 0x51, 0x88, 0x47, 0x24, 0x7E,
++ /* 1828 */ 0x4E, 0x04, 0x97, 0x89, 0x73, 0x22, 0x90, 0x18,
++ /* 1830 */ 0x9C, 0xFF, 0xFF, 0x87, 0x5E, 0xEC, 0x69, 0x01,
++ /* 1838 */ 0x37, 0x10, 0x9F, 0x29, 0xB1, 0x53, 0x3E, 0x11,
++ /* 1840 */ 0x76, 0x2E, 0xC1, 0x8C, 0x0E, 0x5C, 0x97, 0x7B,
++ /* 1848 */ 0x8F, 0x0E, 0xFC, 0x27, 0x01, 0x3C, 0xD6, 0xE3,
++ /* 1850 */ 0x1D, 0xF8, 0x4E, 0xEA, 0xBE, 0x9B, 0xF8, 0x22,
++ /* 1858 */ 0xE3, 0x43, 0xD1, 0xF3, 0x1D, 0xE0, 0x3F, 0x9C,
++ /* 1860 */ 0x84, 0xFF, 0xFF, 0xE1, 0x0E, 0x13, 0xE7, 0x7C,
++ /* 1868 */ 0x07, 0x50, 0xE3, 0x6C, 0xFD, 0x7C, 0x07, 0x76,
++ /* 1870 */ 0x91, 0xE7, 0x3B, 0x40, 0xCC, 0xFF, 0xFF, 0x7C,
++ /* 1878 */ 0x07, 0xB0, 0xEB, 0x8C, 0x86, 0x3B, 0xDF, 0x81,
++ /* 1880 */ 0xED, 0x68, 0x03, 0x3C, 0xFF, 0xFF, 0x47, 0x1B,
++ /* 1888 */ 0x60, 0x34, 0x8D, 0x47, 0x1B, 0x70, 0x0F, 0x17,
++ /* 1890 */ 0xF6, 0x30, 0xB8, 0x42, 0x9B, 0x3E, 0x35, 0x1A,
++ /* 1898 */ 0xB5, 0x6A, 0x50, 0xA6, 0x46, 0x99, 0x06, 0xB5,
++ /* 18A0 */ 0xFA, 0x54, 0x6A, 0xCC, 0x98, 0x84, 0xD3, 0x8D,
++ /* 18A8 */ 0x02, 0x3E, 0x2A, 0x34, 0x36, 0xCB, 0xA3, 0x10,
++ /* 18B0 */ 0x88, 0xC5, 0xBC, 0x1A, 0x04, 0xE2, 0xB0, 0x20,
++ /* 18B8 */ 0x34, 0xD2, 0x2B, 0x47, 0x20, 0x96, 0xFC, 0xEC,
++ /* 18C0 */ 0x17, 0x88, 0xE5, 0xBE, 0x19, 0x04, 0xE2, 0x80,
++ /* 18C8 */ 0x6F, 0x30, 0x81, 0x93, 0x87, 0x95, 0xC0, 0xC9,
++ /* 18D0 */ 0xBB, 0x41, 0x20, 0x8E, 0x0C, 0x42, 0x85, 0xEA,
++ /* 18D8 */ 0x00, 0x61, 0x31, 0x41, 0x68, 0x28, 0x1F, 0x20,
++ /* 18E0 */ 0x4C, 0xFA, 0x23, 0x41, 0x80, 0xC4, 0x08, 0x08,
++ /* 18E8 */ 0x0B, 0xF7, 0xFE, 0x12, 0x88, 0xA5, 0xBD, 0x27,
++ /* 18F0 */ 0x04, 0x62, 0x21, 0x56, 0x40, 0x58, 0x5C, 0x10,
++ /* 18F8 */ 0x1A, 0x4E, 0x0B, 0x08, 0x93, 0x64, 0x06, 0x84,
++ /* 1900 */ 0x05, 0x02, 0xA1, 0xF2, 0xD5, 0x80, 0x30, 0x91,
++ /* 1908 */ 0x6E, 0x00, 0xE9, 0xEA, 0x05, 0xE2, 0x20, 0x7A,
++ /* 1910 */ 0x40, 0x98, 0x0C, 0x3F, 0x20, 0x2C, 0x34, 0x08,
++ /* 1918 */ 0x8D, 0xF6, 0xC0, 0x10, 0x20, 0x31, 0x04, 0xC2,
++ /* 1920 */ 0xE2, 0x3B, 0x02, 0x61, 0xE2, 0x5F, 0x45, 0x02,
++ /* 1928 */ 0x71, 0x7E, 0x4B, 0x10, 0x37, 0xA5, 0x21, 0xD6,
++ /* 1930 */ 0x04, 0xC4, 0x34, 0x78, 0x02, 0x62, 0x8A, 0x40,
++ /* 1938 */ 0x04, 0xE4, 0xD8, 0x4F, 0x0F, 0x01, 0x59, 0x83,
++ /* 1940 */ 0x29, 0x20, 0xFF, 0xFF, 0x09, 0x46, 0x07, 0x11,
++ /* 1948 */ 0x90, 0x85, 0xA8, 0x02, 0x62, 0x79, 0x5D, 0x01,
++ /* 1950 */ 0xB1, 0xF0, 0x20, 0x02, 0x72, 0xE6, 0x97, 0x9F,
++ /* 1958 */ 0x80, 0xAC, 0xE0, 0xA5, 0xF3, 0x10, 0xC0, 0xDE,
++ /* 1960 */ 0x10, 0x81, 0x48, 0x72, 0x10, 0x01, 0x39, 0xB0,
++ /* 1968 */ 0x2F, 0x20, 0x16, 0x1F, 0x44, 0x40, 0xCE, 0xFA,
++ /* 1970 */ 0x28, 0x14, 0x90, 0x83, 0x83, 0x68, 0x10, 0xE4,
++ /* 1978 */ 0x6B, 0x26, 0x20, 0xA7, 0x07, 0x11, 0x10, 0xF9,
++ /* 1980 */ 0x04, 0x05, 0x21, 0x6A, 0xBD, 0x81, 0x30, 0x3D,
++ /* 1988 */ 0x8F, 0x42, 0x0D, 0x85, 0x80, 0x50, 0xE5, 0xEA,
++ /* 1990 */ 0xCE, 0x31, 0x2C, 0x07, 0x08, 0xCD, 0x05, 0x22,
++ /* 1998 */ 0x30, 0xAB, 0x70, 0x07, 0xC4, 0x54, 0x81, 0x08,
++ /* 19A0 */ 0xC8, 0x09, 0x80, 0x68, 0x2A, 0x10, 0x9A, 0x12,
++ /* 19A8 */ 0x8C, 0xEA, 0x92, 0x07, 0xC4, 0x12, 0x80, 0xD0,
++ /* 19B0 */ 0x54, 0x20, 0x34, 0x25, 0x88, 0x00, 0xAD, 0xCA,
++ /* 19B8 */ 0x1E, 0x10, 0x53, 0x0A, 0x42, 0x95, 0x83, 0xD0,
++ /* 19C0 */ 0x74, 0x20, 0x54, 0xB6, 0xBE, 0xC3, 0x02, 0x05,
++ /* 19C8 */ 0x11, 0x90, 0xA3, 0x83, 0x50, 0xE1, 0xFE, 0x40,
++ /* 19D0 */ 0x98, 0xDE, 0x97, 0x86, 0x00, 0x9D, 0x0E, 0x44,
++ /* 19D8 */ 0x40, 0x4E, 0x0C, 0x42, 0x15, 0x7C, 0x32, 0x82,
++ /* 19E0 */ 0x10, 0xB1, 0x20, 0x54, 0xC1, 0x27, 0x23, 0x28,
++ /* 19E8 */ 0xD1, 0xF2, 0xB2, 0x13, 0x90, 0xF5, 0x81, 0x50,
++ /* 19F0 */ 0xBD, 0x20, 0x02, 0x73, 0x36, 0x20, 0x9A, 0x17,
++ /* 19F8 */ 0x84, 0xE6, 0x07, 0xA3, 0x5A, 0x8D, 0x02, 0x31,
++ /* 1A00 */ 0xFD, 0x20, 0x34, 0x0F, 0x88, 0xC0, 0xAC, 0xE0,
++ /* 1A08 */ 0xF9, 0x71, 0xC0, 0x0C, 0x84, 0xAA, 0x04, 0x11,
++ /* 1A10 */ 0x98, 0x73, 0x01, 0xD1, 0xAC, 0x20, 0x34, 0x3B,
++ /* 1A18 */ 0x18, 0xD5, 0xFE, 0x0F, 0xD1, 0x00, 0x08, 0x08,
++ /* 1A20 */ 0xCD, 0x07, 0xA2, 0xC3, 0x00, 0x79, 0x96, 0x09,
++ /* 1A28 */ 0xC8, 0x1A, 0x41, 0xC8, 0xFF, 0x9F, 0xA0, 0x66,
++ /* 1A30 */ 0x10, 0x1D, 0x0F, 0x08, 0x10, 0xCD, 0x0F, 0x42,
++ /* 1A38 */ 0xF5, 0xFC, 0x4D, 0x82, 0x91, 0x0C, 0x20, 0x02,
++ /* 1A40 */ 0xB2, 0x96, 0x27, 0x68, 0x20, 0xA2, 0x1F, 0x44,
++ /* 1A48 */ 0x40, 0xCE, 0x04, 0x42, 0x33, 0x82, 0x51, 0xB5,
++ /* 1A50 */ 0x6F, 0x1D, 0x1D, 0x07, 0x08, 0x08, 0x4D, 0x04,
++ /* 1A58 */ 0xA2, 0xE1, 0x91, 0x77, 0xCF, 0xE1, 0x31, 0x10,
++ /* 1A60 */ 0xAA, 0x12, 0x44, 0x60, 0xD6, 0xF8, 0x74, 0x11,
++ /* 1A68 */ 0x88, 0x13, 0x82, 0x50, 0xF5, 0x76, 0x0F, 0x0C,
++ /* 1A70 */ 0x54, 0xEF, 0x20, 0xA8, 0xE0, 0x41, 0x50, 0x10,
++ /* 1A78 */ 0x9A, 0x08, 0x44, 0x87, 0x0C, 0xF2, 0x3E, 0x13,
++ /* 1A80 */ 0x90, 0x75, 0x81, 0x50, 0x9D, 0x20, 0x1A, 0x32,
++ /* 1A88 */ 0x01, 0xA2, 0x59, 0x41, 0x68, 0x76, 0x30, 0x9A,
++ /* 1A90 */ 0xFD, 0x9B, 0xA4, 0x61, 0x90, 0xEF, 0x95, 0x0E,
++ /* 1A98 */ 0x0C, 0xE4, 0x11, 0x17, 0x84, 0x28, 0xFA, 0x18,
++ /* 1AA0 */ 0x09, 0xC4, 0xB9, 0xDF, 0x40, 0x1A, 0x28, 0x79,
++ /* 1AA8 */ 0xCC, 0x04, 0x21, 0xDA, 0x40, 0x04, 0xE6, 0x1C,
++ /* 1AB0 */ 0x40, 0x34, 0x1B, 0x08, 0xCD, 0x0A, 0x46, 0xB3,
++ /* 1AB8 */ 0xAA, 0x3E, 0x62, 0xD0, 0x9F, 0xCD, 0xA1, 0xB1,
++ /* 1AC0 */ 0xE7, 0x95, 0x40, 0xAC, 0xE4, 0x65, 0xF3, 0x68,
++ /* 1AC8 */ 0xC1, 0x7E, 0xB6, 0x02, 0x21, 0xC6, 0x81, 0xE9,
++ /* 1AD0 */ 0xF7, 0x46, 0xC7, 0x00, 0x02, 0x42, 0xF5, 0xFC,
++ /* 1AD8 */ 0xAE, 0x74, 0x04, 0x20, 0x20, 0x3A, 0x02, 0x10,
++ /* 1AE0 */ 0x10, 0x9A, 0x11, 0x84, 0x66, 0x07, 0xA1, 0xBA,
++ /* 1AE8 */ 0xDE, 0x6B, 0x02, 0xB5, 0x36, 0xEF, 0x20, 0x2C,
++ /* 1AF0 */ 0x19, 0x08, 0x55, 0x2D, 0x1E, 0x84, 0x29, 0x7E,
++ /* 1AF8 */ 0xB0, 0x69, 0x98, 0x44, 0xFD, 0x21, 0x80, 0x3E,
++ /* 1B00 */ 0xCF, 0x04, 0x6E, 0xDD, 0x20, 0x34, 0x07, 0x88,
++ /* 1B08 */ 0x06, 0x4A, 0x80, 0xA8, 0x96, 0x2F, 0x9D, 0x06,
++ /* 1B10 */ 0x4A, 0x40, 0x04, 0xE6, 0x4C, 0x40, 0xE4, 0xFF,
++ /* 1B18 */ 0x4F, 0x30, 0x27, 0x08, 0x55, 0xA1, 0x7F, 0x18,
++ /* 1B20 */ 0x14, 0x44, 0x40, 0x4E, 0x01, 0x42, 0x53, 0x81,
++ /* 1B28 */ 0xD1, 0x54, 0x05, 0x40, 0x98, 0xA6, 0x04, 0x03,
++ /* 1B30 */ 0xA6, 0x20, 0x34, 0x6B, 0x03, 0x40, 0x1A, 0xE1,
++ /* 1B38 */ 0xF8, 0x43, 0x3B, 0x80, 0xB3, 0xF8, 0x20, 0x54,
++ /* 1B40 */ 0x52, 0x88, 0x03, 0x0B, 0xD3, 0x07, 0x22, 0x40,
++ /* 1B48 */ 0x47, 0x01, 0x11, 0x98, 0x63, 0x81, 0xD0, 0xA8,
++ /* 1B50 */ 0x80, 0x34, 0x37, 0x20, 0x55, 0x59, 0x02, 0x8C,
++ /* 1B58 */ 0x29, 0x06, 0xA1, 0x29, 0x40, 0x04, 0xE8, 0x48,
++ /* 1B60 */ 0x20, 0x02, 0xB4, 0xE0, 0x14, 0x60, 0x4C, 0x3E,
++ /* 1B68 */ 0x08, 0x8D, 0x09, 0x42, 0x53, 0xB5, 0x00, 0x65,
++ /* 1B70 */ 0x19, 0x41, 0x34, 0x68, 0x12, 0xE3, 0xA0, 0x42,
++ /* 1B78 */ 0x41, 0x68, 0x1E, 0x10, 0x9A, 0x0F, 0x84, 0x0A,
++ /* 1B80 */ 0xAF, 0x01, 0xC2, 0x42, 0x80, 0xD0, 0x60, 0x20,
++ /* 1B88 */ 0x1A, 0x80, 0x53, 0x82, 0x68, 0x00, 0x16, 0x97,
++ /* 1B90 */ 0x03, 0x8C, 0x09, 0x05, 0xA1, 0xE2, 0x41, 0x04,
++ /* 1B98 */ 0xE8, 0x24, 0x20, 0x02, 0xB4, 0xCE, 0x1E, 0x60,
++ /* 1BA0 */ 0x4C, 0x35, 0x08, 0x4D, 0x07, 0x42, 0xC3, 0x04,
++ /* 1BA8 */ 0x01, 0x65, 0xD1, 0x40, 0x74, 0x68, 0x22, 0x45,
++ /* 1BB0 */ 0xC0, 0x98, 0x60, 0x10, 0x1A, 0x03, 0x84, 0xC6,
++ /* 1BB8 */ 0x02, 0xA1, 0x92, 0x9B, 0x1C, 0x81, 0x28, 0x08,
++ /* 1BC0 */ 0x8D, 0x5C, 0x05, 0x8C, 0xC9, 0xC8, 0x02, 0xC2,
++ /* 1BC8 */ 0x64, 0x81, 0xE8, 0xB0, 0x44, 0x80, 0x68, 0x38,
++ /* 1BD0 */ 0x10, 0x1A, 0x16, 0x90, 0x77, 0x01, 0xA4, 0x20,
++ /* 1BD8 */ 0x02, 0x24, 0x20, 0x34, 0x2C, 0x08, 0x55, 0x15,
++ /* 1BE0 */ 0xE6, 0xC0, 0x43, 0x41, 0x74, 0x88, 0x20, 0x65,
++ /* 1BE8 */ 0x8E, 0x34, 0x14, 0x84, 0xFC, 0xFF, 0x8F, 0x14,
++ /* 1BF0 */ 0x02, 0xD1, 0xD1, 0x81, 0x00, 0x51, 0x2D, 0x69,
++ /* 1BF8 */ 0x8E, 0x0E, 0x14, 0x84, 0x06, 0x01, 0xA1, 0x3A,
++ /* 1C00 */ 0xDB, 0x1C, 0x6F, 0x28, 0x88, 0x8E, 0x37, 0x04,
++ /* 1C08 */ 0x84, 0xE6, 0x07, 0xA3, 0xAA, 0x9F, 0x84, 0x02,
++ /* 1C10 */ 0x72, 0x12, 0x10, 0x9A, 0x13, 0x44, 0x87, 0x07,
++ /* 1C18 */ 0x52, 0x08, 0x84, 0x25, 0x02, 0xA1, 0xCA, 0x13,
++ /* 1C20 */ 0x1D, 0x0C, 0xE8, 0x9B, 0x53, 0x87, 0x0B, 0x02,
++ /* 1C28 */ 0x42, 0x73, 0x80, 0xD0, 0xA4, 0x20, 0x54, 0x55,
++ /* 1C30 */ 0x25, 0x50, 0x96, 0x04, 0x44, 0x07, 0x01, 0x02,
++ /* 1C38 */ 0x42, 0xD3, 0x82, 0x51, 0x8D, 0x99, 0x06, 0x40,
++ /* 1C40 */ 0x41, 0x68, 0x0E, 0x10, 0x81, 0x39, 0x71, 0x29,
++ /* 1C48 */ 0x10, 0xA6, 0x37, 0xD5, 0xA1, 0x89, 0xB6, 0x02,
++ /* 1C50 */ 0x61, 0xFF, 0x7F
++ })
++
++ /* Rename the below method to WQAB if we choose not to
++ * go with the above buffer.
++ */
++ Method (XQAB, 1, Serialized)
++ {
++ INIT (2)
++ GUID (60)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBC, 1, Serialized)
++ {
++ INIT (2)
++ GUID (100)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBD, 1, Serialized)
++ {
++ INIT (2)
++ GUID (120)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBE, 1, Serialized)
++ {
++ INIT (2)
++ GUID (140)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBF, 1, Serialized)
++ {
++ INIT (2)
++ GUID (160)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBG, 1, Serialized)
++ {
++ INIT (2)
++ GUID (180)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBH, 1, Serialized)
++ {
++ INIT (2)
++ GUID (200)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBI, 1, Serialized)
++ {
++ INIT (2)
++ GUID (220)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++ }
++ }
++
++ /* Wire GPE events to notify OEM
++ * special buttons press like wireless or
++ * presentation button.
++ */
++ Scope (\_GPE)
++ {
++ Method (_L18, 0, Serialized)
++ {
++ Notify (\_SB.WMID, 0x80)
++ }
++ }
++}
++
+diff
+--- /dev/null
++++ b/tools/firmware/hvmloader/acpi/ssdt_lenovo_t_and_x_series.asl 2009-04-01 16:35:28.000000000 -0400
+@@ -0,0 +1,616 @@
++/*
++ * ssdt_lenovo_t_and_x_series.asl
++ *
++ * Copyright (c) 2009 Kamala Narasimhan
++ * Copyright (c) 2009 Citrix Systems, Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++/* SSDT for exposing Lenovo T and X series specific value add functionalities like
++ * hotkeys, special buttons.
++ */
++
++/* IMPLEMENTATION DETAILS: OEM value add features are generally exposed through
++ * WMI psuedo device objects. For our guests to benefit from such value add, we
++ * expose a psuedo device object in our vACPI layer also. This psuedo object is
++ * similar to the underlying base firmware object in the sense we expose the
++ * same _WDG method which describes the WMI methods, data objects and events
++ * provided by the WMI psuedo object. Guest wmi wrapper driver which automatically
++ * gets loaded upon identifying this WMI pseudo device object, calls _WDG to get
++ * known entry points and calls those entry points for further information exchange.
++ * Reference - http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
++ */
++
++/* COMMUNICATION DETAILS -
++ * Command port - 0x96
++ * Writes to this port describe what type of information is about
++ * to be exchanged. E.g., guid, input argument transfer etc.
++ * Data Port - 0x98 and 0x9A for byte and dword data transfer respectively.
++ * Communicates data to and from the backend. E.g. Input buffer values
++ * get written to this port and output buffer values are read from this
++ * port.
++ */
++
++DefinitionBlock ("SSDT_LENOVO_T_AND_X_SERIES.aml", "SSDT", 2, "Xen", "HVM", 0)
++{
++ Scope (\_SB)
++ {
++
++ OperationRegion (LEN1, SystemIO, 0x96, 0x01)
++ Field (LEN1, ByteAcc, NoLock, Preserve)
++ {
++ P96, 8
++ }
++
++ OperationRegion (LEN2, SystemIO, 0x98, 0x01)
++ Field (LEN2, ByteAcc, NoLock, Preserve)
++ {
++ P98, 8
++ }
++
++ OperationRegion (LEN3, SystemIO, 0x9A, 0x04)
++ Field (LEN3, DWordAcc, NoLock, Preserve)
++ {
++ P9A, 32
++ }
++
++ Device (WMI1)
++ {
++ /* Exposing a pseudo device with HID PNP0C14 will
++ * result in Windows guest loading their WMI wrapper
++ * driver - wmiacpi.sys
++ */
++ Name (_HID, EisaId ("PNP0C14"))
++ Name (_UID, 0x01)
++
++ /* Following list of data blocks exposed by _WDG is same as the
++ * one provided by the underlying firmware. Refer to -
++ * http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
++ * for further information about _WDG and what it exposes.
++ */
++ Name (_WDG, Buffer (0xA0)
++ {
++ /* Data Block 1 */
++ /* GUID */
++ 0x0E, 0x23, 0xF5, 0x51, 0x77, 0x96, 0xCD, 0x46,
++ 0xA1, 0xCF, 0xC0, 0xB2, 0x3E, 0xE3, 0x4D, 0xB7,
++ 0x41, 0x30, /* Object ID - WQA0 */
++ 0x5A, /* Instance count */
++ 0x05, /* Flag - String block & Expensive */
++
++ /* Data Block 2 */
++ /* GUID */
++ 0x64, 0x9A, 0x47, 0x98, 0xF5, 0x33, 0x33, 0x4E,
++ 0xA7, 0x07, 0x8E, 0x25, 0x1E, 0xBB, 0xC3, 0xA1,
++ 0x41, 0x31, /*Object ID - WMA1 */
++ 0x01, /* Instance count */
++ 0x06, /* Flag - Method & string block */
++
++ /* Data Block 3 */
++ /* GUID */
++ 0xEF, 0x54, 0x4B, 0x6A, 0xED, 0xA5, 0x33, 0x4D,
++ 0x94, 0x55, 0xB0, 0xD9, 0xB4, 0x8D, 0xF4, 0xB3,
++ 0x41, 0x32, /* Object ID - WMA2 */
++ 0x01, /* Instance count */
++ 0x06, /* Flag - Method & string block */
++
++ /* Data Block 4 */
++ /* GUID */
++ 0xB6, 0xEB, 0xF1, 0x74, 0x7A, 0x92, 0x7D, 0x4C,
++ 0x95, 0xDF, 0x69, 0x8E, 0x21, 0xE8, 0x0E, 0xB5,
++ 0x41, 0x33, /* Object ID - WMA3 */
++ 0x01, /* Instance count */
++ 0x06, /* Flag - Method & string block */
++
++ /* Data Block 5 */
++ /* GUID */
++ 0xFF, 0x04, 0xEF, 0x7E, 0x28, 0x43, 0x7C, 0x44,
++ 0xB5, 0xBB, 0xD4, 0x49, 0x92, 0x5D, 0x53, 0x8D,
++ 0x41, 0x34, /* Object ID - WMA4 */
++ 0x01, /* Instance count */
++ 0x06, /* Flag - Method & string block*/
++
++ /* Data Block 6 */
++ /* GUID */
++ 0x9E, 0x15, 0xDB, 0x8A, 0x32, 0x1E, 0x5C, 0x45,
++ 0xBC, 0x93, 0x30, 0x8A, 0x7E, 0xD9, 0x82, 0x46,
++ 0x41, 0x35, /* Object ID - WQA5 */
++ 0x01, /* Instance count */
++ 0x01, /* Flag - Expensive */
++
++ /* Data Block 7 */
++ /* GUID */
++ 0xFD, 0xD9, 0x51, 0x26, 0x1C, 0x91, 0x69, 0x4B,
++ 0xB9, 0x4E, 0xD0, 0xDE, 0xD5, 0x96, 0x3B, 0xD7,
++ 0x41, 0x36, /* Object ID - WMA6 */
++ 0x01, /* Instance count */
++ 0x06, /* Flag - Method & string block */
++
++ /* Data Block 6 */
++ /* GUID */
++ 0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11,
++ 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10,
++ 0x42, 0x41, /* Object ID - WQBA */
++ 0x01, /* Instance count */
++ 0x00, /* Flag - Expensive */
++
++ })
++
++ /* Initialize cmd port and communicate invocation type
++ * i.e., method execution or query or set object
++ */
++ Method (INIT, 1, Serialized)
++ {
++ Store (100, P96)
++ Store (Arg0, P98)
++ }
++
++ /* Pass the guid pertaining to the operation */
++ Method (GUID, 1, Serialized)
++ {
++ Store (101, P96)
++ Store (0x0, Local0)
++ Store (Arg0, Local1)
++
++ While ( LLess(Local0,16) )
++ {
++ Add(Local1, Local0, Local2)
++ Store (DerefOf(Index (_WDG, Local2)), P98 )
++ Increment( Local0 )
++ }
++ }
++
++ /* Pass instance # for the associated object pertaining
++ * to the invocation.
++ */
++ Method (INST, 1, Serialized)
++ {
++ Store(102, P96)
++ Store(Arg0, P9A)
++ }
++
++ /* Pass method id relevant to the method about to be
++ * executed.
++ */
++ Method (MTID, 1, Serialized)
++ {
++ Store(103, P96)
++ Store(Arg0, P9A)
++ }
++
++ /* Pass input buffer pertaining to the current operation */
++ Method (IBUF, 1, Serialized)
++ {
++ Store (105, P96)
++ Store (SizeOf(Arg0), Local0)
++ Store (Local0, P9A)
++ ToBuffer (Arg0, Local1)
++ Store (0, Local2)
++ Store (104, P96)
++ While ( LLess(Local2,Local0) )
++ {
++ Store (DerefOf(Index (Local1, Local2)), P98)
++ Increment (Local2)
++ }
++ }
++
++ /* Now that the input arguments are passed, execute the command */
++ Method (EXEC, 0, Serialized)
++ {
++ Store (106, P96)
++ }
++
++ /* Get the output buffer pertaining to the just executed command */
++ Method (OBUF, 0, Serialized)
++ {
++ Store (108, P96)
++ Store (P9A, Local0)
++ Store (Buffer(Local0) {}, Local2)
++ Store (0, Local1)
++ Store (107, P96)
++ While ( LLess(Local1, Local0) )
++ {
++ Store (P98, Index(Local2, Local1))
++ Increment (Local1)
++ }
++ Return (Local2)
++ }
++
++ /* Get event data */
++ Method (_WED, 1, Serialized)
++ {
++ INIT (4)
++ Store (109, P96)
++ Store (Arg0, P98)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ /* Following are well know entry points as supplied by
++ * _WDG.
++ * @TODO: Though current testing suggest that defining
++ * a method for seralized execution is enough to prevent
++ * synchronization issues, consider using explicit mutexes
++ * for further protection.
++ */
++ Method (WQA0, 1, Serialized)
++ {
++ INIT (2)
++ GUID (0)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WMA1, 3, Serialized)
++ {
++ INIT (1)
++ GUID (20)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WMA2, 3, Serialized)
++ {
++ INIT (1)
++ GUID (40)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WMA3, 3, Serialized)
++ {
++ INIT (1)
++ GUID (60)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WMA4, 3, Serialized)
++ {
++ INIT (1)
++ GUID (80)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQA5, 1, Serialized)
++ {
++ INIT (2)
++ GUID (100)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WMA6, 3, Serialized)
++ {
++ INIT (1)
++ GUID (120)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Method (WQBC, 1, Serialized)
++ {
++ INIT (2)
++ GUID (60)
++ INST (Arg0)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ /* Like all other well know entry points, we could delegate
++ * the below to the base firmware also. But, why ask for a
++ * static list (that too this big) and go through layer after
++ * layer to get it? Also, port i/o is not a good idea for this
++ * much data transfer. Luckily, this is the only place that appear
++ * to transfer so much data.
++ */
++
++ Method (WMBD, 3, Serialized)
++ {
++ INIT (1)
++ GUID (100)
++ INST (Arg0)
++ MTID (Arg1)
++ IBUF (Arg2)
++ EXEC ()
++ Return (OBUF())
++ }
++
++ Name (WQBA, Buffer (0x07C1)
++ {
++ /* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00,
++ /* 0008 */ 0xB1, 0x07, 0x00, 0x00, 0x5A, 0x30, 0x00, 0x00,
++ /* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54,
++ /* 0018 */ 0x98, 0x51, 0x97, 0x00, 0x01, 0x06, 0x18, 0x42,
++ /* 0020 */ 0x10, 0x11, 0x10, 0x0A, 0x0D, 0x21, 0x02, 0x0B,
++ /* 0028 */ 0x83, 0x50, 0x4C, 0x18, 0x14, 0xA0, 0x45, 0x41,
++ /* 0030 */ 0xC8, 0x05, 0x14, 0x95, 0x02, 0x21, 0xC3, 0x02,
++ /* 0038 */ 0x14, 0x0B, 0x70, 0x2E, 0x40, 0xBA, 0x00, 0xE5,
++ /* 0040 */ 0x28, 0x72, 0x0C, 0x22, 0x02, 0xF7, 0xEF, 0x0F,
++ /* 0048 */ 0x31, 0x0E, 0x88, 0x14, 0x40, 0x48, 0xE6, 0x28,
++ /* 0050 */ 0x28, 0x81, 0x85, 0xC0, 0x11, 0x82, 0x7E, 0x05,
++ /* 0058 */ 0x20, 0x74, 0x88, 0x26, 0x83, 0x02, 0x9C, 0x22,
++ /* 0060 */ 0x08, 0xD2, 0x96, 0x05, 0xE8, 0x16, 0xE0, 0x5B,
++ /* 0068 */ 0x80, 0x76, 0x08, 0xA1, 0x55, 0x28, 0xC0, 0xA4,
++ /* 0070 */ 0x00, 0x9F, 0x60, 0xB2, 0x28, 0x40, 0x36, 0x98,
++ /* 0078 */ 0x6C, 0xC3, 0x91, 0x61, 0x30, 0x91, 0x63, 0x40,
++ /* 0080 */ 0x89, 0x19, 0x03, 0x4A, 0xE7, 0x14, 0x64, 0x13,
++ /* 0088 */ 0x58, 0xD0, 0x85, 0xA2, 0x68, 0x1A, 0x51, 0x12,
++ /* 0090 */ 0x1C, 0xD4, 0x31, 0x44, 0x08, 0x5E, 0xAE, 0x00,
++ /* 0098 */ 0xC9, 0x13, 0x90, 0xE6, 0x79, 0xC9, 0xFA, 0x20,
++ /* 00A0 */ 0x34, 0x04, 0x36, 0x02, 0x1E, 0x45, 0x02, 0x08,
++ /* 00A8 */ 0x8B, 0xB1, 0x4C, 0x89, 0x87, 0x41, 0x79, 0x00,
++ /* 00B0 */ 0x91, 0x9C, 0xA1, 0xA2, 0x80, 0xED, 0x75, 0x22,
++ /* 00B8 */ 0x1A, 0xD6, 0x71, 0x32, 0x49, 0x70, 0xA8, 0x51,
++ /* 00C0 */ 0x5A, 0xA2, 0x00, 0xF3, 0x23, 0xD3, 0x44, 0x8E,
++ /* 00C8 */ 0xAD, 0xE9, 0x11, 0x0B, 0x92, 0x49, 0x1B, 0x0A,
++ /* 00D0 */ 0x6A, 0xE8, 0x9E, 0xD6, 0x49, 0x79, 0xA2, 0x11,
++ /* 00D8 */ 0x0F, 0xCA, 0x30, 0x09, 0x3C, 0x0A, 0x86, 0xC6,
++ /* 00E0 */ 0x09, 0xCA, 0x82, 0x90, 0x83, 0x81, 0xA2, 0x00,
++ /* 00E8 */ 0x4F, 0xC2, 0x73, 0x2C, 0x5E, 0x80, 0xF0, 0x19,
++ /* 00F0 */ 0x93, 0xA3, 0x40, 0x8C, 0x04, 0x3E, 0x12, 0x78,
++ /* 00F8 */ 0x34, 0xC7, 0x8C, 0x05, 0x0A, 0x17, 0xF0, 0x7C,
++ /* 0100 */ 0x8E, 0x21, 0x72, 0xDC, 0x43, 0x8D, 0x71, 0x14,
++ /* 0108 */ 0x91, 0x13, 0xBC, 0x03, 0x44, 0x31, 0x5A, 0x41,
++ /* 0110 */ 0xF3, 0x16, 0x62, 0xB0, 0x68, 0x06, 0xEB, 0x19,
++ /* 0118 */ 0x9C, 0x0C, 0x3A, 0xC1, 0xFF, 0xFF, 0x08, 0xB8,
++ /* 0120 */ 0x0C, 0x08, 0x79, 0x14, 0x60, 0x75, 0x50, 0x9A,
++ /* 0128 */ 0x86, 0x09, 0xBA, 0x17, 0x60, 0x4D, 0x80, 0x31,
++ /* 0130 */ 0x01, 0x1A, 0x31, 0xA4, 0x4C, 0x80, 0xB3, 0xFB,
++ /* 0138 */ 0x82, 0x66, 0xD4, 0x96, 0x00, 0x73, 0x02, 0xB4,
++ /* 0140 */ 0x09, 0xF0, 0x86, 0x20, 0x94, 0xF3, 0x8C, 0x72,
++ /* 0148 */ 0x2C, 0xA7, 0x18, 0xE5, 0x61, 0x20, 0xE6, 0xCB,
++ /* 0150 */ 0x40, 0xD0, 0x28, 0x31, 0x62, 0x9E, 0x4B, 0x5C,
++ /* 0158 */ 0xC3, 0x46, 0x88, 0x11, 0xF2, 0x14, 0x02, 0xC5,
++ /* 0160 */ 0x6D, 0x7F, 0x10, 0x64, 0xD0, 0xB8, 0xD1, 0xFB,
++ /* 0168 */ 0xB4, 0x70, 0x56, 0x27, 0x70, 0xF4, 0x4F, 0x0A,
++ /* 0170 */ 0x26, 0xF0, 0x94, 0x0F, 0xEC, 0xD9, 0xE0, 0x04,
++ /* 0178 */ 0x8E, 0x35, 0x6A, 0x8C, 0x53, 0x49, 0xE0, 0xD8,
++ /* 0180 */ 0x0F, 0x08, 0x69, 0x00, 0x51, 0x24, 0x78, 0xD4,
++ /* 0188 */ 0x69, 0xC1, 0xE7, 0x02, 0x0F, 0xED, 0xA0, 0x3D,
++ /* 0190 */ 0xC7, 0x13, 0x08, 0x72, 0x08, 0x47, 0xF0, 0xC4,
++ /* 0198 */ 0xF0, 0x40, 0xE0, 0x31, 0xB0, 0x9B, 0x82, 0x8F,
++ /* 01A0 */ 0x00, 0x3E, 0x21, 0xE0, 0x5D, 0x03, 0xEA, 0x6A,
++ /* 01A8 */ 0xF0, 0x60, 0xC0, 0x06, 0x1D, 0x0E, 0x33, 0x5E,
++ /* 01B0 */ 0x0F, 0x3F, 0xDC, 0x09, 0x9C, 0xE4, 0x03, 0x06,
++ /* 01B8 */ 0x3F, 0x6C, 0x78, 0x70, 0xB8, 0x79, 0x9E, 0xCC,
++ /* 01C0 */ 0x91, 0x95, 0x2A, 0xC0, 0xEC, 0xE1, 0x40, 0x07,
++ /* 01C8 */ 0x09, 0x9F, 0x36, 0xD8, 0x19, 0x00, 0x23, 0x7F,
++ /* 01D0 */ 0x10, 0xA8, 0x91, 0x19, 0xDA, 0xE3, 0x7E, 0xE9,
++ /* 01D8 */ 0x30, 0xE4, 0x73, 0xC2, 0x61, 0x31, 0xB1, 0xA7,
++ /* 01E0 */ 0x0E, 0x3A, 0x1E, 0xF0, 0x5F, 0x46, 0x9E, 0x33,
++ /* 01E8 */ 0x3C, 0x7D, 0xCF, 0xD7, 0x04, 0xC3, 0x0E, 0x1C,
++ /* 01F0 */ 0x3D, 0x10, 0x43, 0x3F, 0x6C, 0x1C, 0xC6, 0x69,
++ /* 01F8 */ 0xF8, 0xFE, 0xE1, 0xF3, 0x02, 0x8C, 0x53, 0x80,
++ /* 0200 */ 0x47, 0xEE, 0xFF, 0xFF, 0x21, 0xC5, 0xA7, 0x09,
++ /* 0208 */ 0x7E, 0xB4, 0xF0, 0x69, 0x82, 0x5D, 0x0F, 0x4E,
++ /* 0210 */ 0xE3, 0x39, 0xC0, 0xC3, 0x39, 0x2B, 0x1F, 0x26,
++ /* 0218 */ 0xC0, 0x76, 0x3F, 0x61, 0x23, 0x7A, 0xB7, 0xF0,
++ /* 0220 */ 0x68, 0xB0, 0xA7, 0x00, 0xF0, 0x9D, 0x5F, 0xC0,
++ /* 0228 */ 0x79, 0xD7, 0x60, 0x83, 0x85, 0x71, 0x7E, 0x01,
++ /* 0230 */ 0x1E, 0x27, 0x04, 0x0F, 0x81, 0x1F, 0x24, 0x3C,
++ /* 0238 */ 0x04, 0x3E, 0x80, 0xE7, 0x8F, 0x33, 0xB4, 0xD2,
++ /* 0240 */ 0x79, 0x21, 0x07, 0x06, 0xEF, 0x9C, 0x03, 0x63,
++ /* 0248 */ 0x14, 0x3C, 0xCF, 0x63, 0xC3, 0x04, 0x0A, 0xF2,
++ /* 0250 */ 0x1A, 0x50, 0xA8, 0x67, 0x01, 0x85, 0xF1, 0xA9,
++ /* 0258 */ 0x06, 0x78, 0xFD, 0xFF, 0x4F, 0x35, 0xC0, 0xE5,
++ /* 0260 */ 0x70, 0x80, 0x3B, 0x39, 0xC0, 0xBD, 0x17, 0xB0,
++ /* 0268 */ 0x8B, 0xC3, 0x73, 0x0D, 0x5C, 0xD1, 0xE7, 0x1A,
++ /* 0270 */ 0xA8, 0xF7, 0x96, 0xE2, 0xC6, 0xA8, 0x6B, 0x4C,
++ /* 0278 */ 0x90, 0x47, 0x81, 0x47, 0x9A, 0x28, 0xCF, 0x33,
++ /* 0280 */ 0xEF, 0x32, 0x11, 0x9E, 0x6D, 0x7C, 0xAD, 0xF1,
++ /* 0288 */ 0x14, 0xE2, 0xF8, 0x5A, 0x63, 0xC4, 0x97, 0x89,
++ /* 0290 */ 0x77, 0x1B, 0xE3, 0x1E, 0xDC, 0x63, 0xCD, 0x43,
++ /* 0298 */ 0x8E, 0x41, 0x8E, 0x26, 0xC2, 0x8B, 0x41, 0xC0,
++ /* 02A0 */ 0xC7, 0x1B, 0x1F, 0x6B, 0xC0, 0x2B, 0xE6, 0x85,
++ /* 02A8 */ 0x22, 0x0B, 0xC7, 0x1A, 0x40, 0xE3, 0xFF, 0xFF,
++ /* 02B0 */ 0x58, 0x03, 0xDC, 0xB0, 0x1E, 0x50, 0xC0, 0x77,
++ /* 02B8 */ 0x64, 0x60, 0x37, 0x14, 0x78, 0x27, 0x14, 0xC0,
++ /* 02C0 */ 0x4F, 0xE2, 0x17, 0x80, 0x8E, 0x1C, 0x4E, 0x0B,
++ /* 02C8 */ 0x22, 0x1B, 0x6F, 0x00, 0x9F, 0x02, 0xA8, 0x1A,
++ /* 02D0 */ 0x20, 0x4D, 0x13, 0x36, 0xC1, 0xF4, 0xE4, 0x82,
++ /* 02D8 */ 0xF7, 0x91, 0xC0, 0xB9, 0x49, 0x94, 0x7C, 0x58,
++ /* 02E0 */ 0x14, 0xCE, 0x59, 0x0F, 0x22, 0x14, 0xC4, 0x80,
++ /* 02E8 */ 0x0E, 0x72, 0x9C, 0x40, 0x9F, 0x51, 0x7C, 0x10,
++ /* 02F0 */ 0x39, 0xD1, 0x27, 0x42, 0x0F, 0xCA, 0xC3, 0x78,
++ /* 02F8 */ 0x47, 0x61, 0x27, 0x10, 0x1F, 0x26, 0x3C, 0x76,
++ /* 0300 */ 0x1F, 0x13, 0xF8, 0x3F, 0xC6, 0xB3, 0x31, 0xBA,
++ /* 0308 */ 0xD5, 0x60, 0xE8, 0xFF, 0x7F, 0x4E, 0xE1, 0x60,
++ /* 0310 */ 0x3E, 0x88, 0x70, 0x82, 0x8F, 0x46, 0xDD, 0x24,
++ /* 0318 */ 0x40, 0xA5, 0xEF, 0xA8, 0x00, 0x0A, 0x20, 0xDF,
++ /* 0320 */ 0x0B, 0x7C, 0x0E, 0x78, 0x36, 0x60, 0x63, 0x78,
++ /* 0328 */ 0x14, 0x30, 0x9A, 0xD1, 0x79, 0xF8, 0xC9, 0xA2,
++ /* 0330 */ 0xE2, 0x4E, 0x96, 0x82, 0x78, 0xB2, 0x8E, 0x32,
++ /* 0338 */ 0x59, 0xF4, 0x4C, 0x7C, 0xAF, 0xF0, 0x8C, 0xDE,
++ /* 0340 */ 0xB4, 0x3C, 0x47, 0x4F, 0xD8, 0xF7, 0x10, 0x58,
++ /* 0348 */ 0x87, 0x81, 0x90, 0x0F, 0x06, 0x9E, 0x86, 0xE1,
++ /* 0350 */ 0x3C, 0x59, 0x0E, 0xE7, 0xC9, 0xF2, 0xB1, 0xF8,
++ /* 0358 */ 0x1A, 0x02, 0x3E, 0x81, 0xB3, 0x05, 0x39, 0x3C,
++ /* 0360 */ 0x26, 0xD6, 0xA8, 0xE8, 0x55, 0xC8, 0xC3, 0xE3,
++ /* 0368 */ 0x97, 0x03, 0xCF, 0xE7, 0x19, 0xE1, 0x28, 0x9F,
++ /* 0370 */ 0x24, 0x70, 0x18, 0xCF, 0x24, 0x1E, 0xA2, 0x6F,
++ /* 0378 */ 0x45, 0xB0, 0x26, 0x72, 0xD2, 0xBE, 0x2D, 0x9C,
++ /* 0380 */ 0x6C, 0xD0, 0xD7, 0x33, 0xCC, 0xAD, 0x08, 0xF6,
++ /* 0388 */ 0xFF, 0xFF, 0x56, 0x04, 0xE7, 0x82, 0x06, 0x33,
++ /* 0390 */ 0xD3, 0xBD, 0x0A, 0x15, 0xEB, 0x5E, 0x05, 0x88,
++ /* 0398 */ 0x1D, 0xD6, 0x6B, 0x8F, 0x0F, 0x56, 0x70, 0xEF,
++ /* 03A0 */ 0x55, 0x70, 0x2F, 0x55, 0xCF, 0x0A, 0xC7, 0x18,
++ /* 03A8 */ 0xFE, 0x61, 0x2A, 0xC6, 0x29, 0xBD, 0x76, 0x1A,
++ /* 03B0 */ 0x28, 0x4C, 0x94, 0x78, 0xEF, 0x55, 0x1E, 0xE3,
++ /* 03B8 */ 0x7B, 0x15, 0xBB, 0x42, 0x85, 0x89, 0xF5, 0x72,
++ /* 03C0 */ 0x65, 0xD4, 0xD7, 0x89, 0x70, 0x81, 0x82, 0x44,
++ /* 03C8 */ 0x7A, 0xB5, 0x8A, 0x12, 0x39, 0xBE, 0x21, 0xDF,
++ /* 03D0 */ 0xAB, 0xC0, 0x2B, 0xE7, 0x5E, 0x05, 0xB2, 0xFF,
++ /* 03D8 */ 0xFF, 0xBD, 0x0A, 0x30, 0x8F, 0xF6, 0x5E, 0x05,
++ /* 03E0 */ 0xC6, 0x6B, 0x03, 0xBB, 0x21, 0xC1, 0x02, 0x7A,
++ /* 03E8 */ 0xB1, 0x02, 0x0C, 0x65, 0xBE, 0x58, 0xD1, 0xBC,
++ /* 03F0 */ 0x17, 0x2B, 0xC4, 0xFF, 0xFF, 0x5C, 0xC2, 0xF4,
++ /* 03F8 */ 0x5C, 0xAC, 0xC8, 0x3C, 0xE1, 0xDF, 0xAC, 0x00,
++ /* 0400 */ 0x4E, 0xFF, 0xFF, 0x6F, 0x56, 0x80, 0xB1, 0x7B,
++ /* 0408 */ 0x11, 0xE6, 0x68, 0x05, 0x2F, 0xE5, 0xCD, 0x8A,
++ /* 0410 */ 0xC6, 0x59, 0x86, 0x02, 0x2E, 0x88, 0xC2, 0xF8,
++ /* 0418 */ 0x66, 0x05, 0x38, 0xBA, 0xAE, 0xE0, 0x86, 0x0C,
++ /* 0420 */ 0x17, 0x2C, 0x4A, 0x30, 0x1F, 0x42, 0x3C, 0x9D,
++ /* 0428 */ 0x23, 0x7E, 0x48, 0x78, 0x09, 0x78, 0xCC, 0xF1,
++ /* 0430 */ 0x80, 0x1F, 0x08, 0x7C, 0xB9, 0x02, 0xD3, 0xFF,
++ /* 0438 */ 0x9F, 0xC0, 0x27, 0xDF, 0xB3, 0x7C, 0x9B, 0x7A,
++ /* 0440 */ 0xEF, 0xE5, 0x07, 0xAC, 0xF7, 0x2A, 0x1F, 0x7E,
++ /* 0448 */ 0x63, 0xBD, 0x33, 0xBC, 0x5C, 0x79, 0x24, 0x51,
++ /* 0450 */ 0x4E, 0x22, 0x94, 0xEF, 0x56, 0xEF, 0x55, 0x46,
++ /* 0458 */ 0x89, 0xF8, 0x42, 0xEC, 0x53, 0xB0, 0xA1, 0x8D,
++ /* 0460 */ 0xF2, 0x54, 0x11, 0xDD, 0x78, 0x2F, 0x57, 0xE0,
++ /* 0468 */ 0x95, 0x74, 0xB9, 0x02, 0x68, 0x32, 0xFC, 0x97,
++ /* 0470 */ 0x2B, 0xF0, 0xDD, 0x1C, 0xB0, 0xD7, 0x24, 0x38,
++ /* 0478 */ 0xFF, 0xFF, 0x6B, 0x12, 0xBF, 0x5E, 0x01, 0x7E,
++ /* 0480 */ 0xB2, 0x5F, 0xAF, 0x68, 0xEE, 0xEB, 0x15, 0x4A,
++ /* 0488 */ 0x14, 0x84, 0x14, 0x01, 0x69, 0xA6, 0xE0, 0xB9,
++ /* 0490 */ 0x5F, 0x01, 0x9C, 0xF8, 0xFF, 0xDF, 0xAF, 0x00,
++ /* 0498 */ 0xCB, 0xE1, 0xEE, 0x57, 0x40, 0xEF, 0x76, 0x04,
++ /* 04A0 */ 0x5E, 0x94, 0xB7, 0x23, 0xEC, 0x15, 0x0B, 0x9F,
++ /* 04A8 */ 0xF1, 0x8A, 0x45, 0xC3, 0xAC, 0x44, 0xF1, 0xD6,
++ /* 04B0 */ 0x44, 0x61, 0x7C, 0xC5, 0x02, 0x26, 0xFF, 0xFF,
++ /* 04B8 */ 0x2B, 0x16, 0x30, 0x3B, 0x88, 0xE2, 0x46, 0x0D,
++ /* 04C0 */ 0xF7, 0xE2, 0xE4, 0x5B, 0x8F, 0xE7, 0x1B, 0xD1,
++ /* 04C8 */ 0x77, 0x18, 0xCC, 0x09, 0x0B, 0xC6, 0x0D, 0x0B,
++ /* 04D0 */ 0xFE, 0x90, 0x1E, 0x86, 0x7D, 0x92, 0x78, 0xC7,
++ /* 04D8 */ 0xF2, 0xD1, 0xCA, 0x20, 0x6F, 0xC0, 0x4F, 0x56,
++ /* 04E0 */ 0x0F, 0x56, 0x51, 0x8C, 0x10, 0xF0, 0x78, 0xDE,
++ /* 04E8 */ 0x85, 0x7D, 0xB4, 0x7A, 0xD3, 0x32, 0x4A, 0xEC,
++ /* 04F0 */ 0x58, 0xBE, 0x50, 0x3D, 0x6B, 0xF9, 0x9A, 0x65,
++ /* 04F8 */ 0x88, 0xB8, 0x0F, 0xC4, 0xBE, 0x61, 0x01, 0xB6,
++ /* 0500 */ 0xFF, 0xFF, 0x37, 0x2C, 0xC0, 0xD1, 0xC5, 0x81,
++ /* 0508 */ 0x1F, 0x1C, 0xB0, 0x37, 0x2C, 0xC0, 0xE7, 0x4C,
++ /* 0510 */ 0xC1, 0x73, 0xC3, 0x02, 0x36, 0xFF, 0xFF, 0x1B,
++ /* 0518 */ 0x16, 0xC0, 0xFF, 0xFF, 0xFF, 0x0D, 0x0B, 0x38,
++ /* 0520 */ 0xDC, 0xAE, 0xB0, 0xB7, 0x2C, 0xEC, 0xED, 0x85,
++ /* 0528 */ 0xAC, 0x82, 0x86, 0x5A, 0x89, 0x82, 0x7F, 0xAF,
++ /* 0530 */ 0x0C, 0x43, 0x6F, 0x58, 0x80, 0xA3, 0x71, 0x7B,
++ /* 0538 */ 0xD4, 0xE0, 0x38, 0x1B, 0x3C, 0x49, 0x60, 0xCE,
++ /* 0540 */ 0xD5, 0xB8, 0xD9, 0x1C, 0x5C, 0xE0, 0x08, 0xBD,
++ /* 0548 */ 0x83, 0x6A, 0xEE, 0xEC, 0x92, 0x02, 0xE3, 0x96,
++ /* 0550 */ 0x05, 0xF7, 0x52, 0xF5, 0xD0, 0x10, 0xE5, 0x20,
++ /* 0558 */ 0x5E, 0x85, 0x1F, 0xAC, 0x1E, 0xA5, 0x8E, 0xEC,
++ /* 0560 */ 0xF1, 0xEA, 0x69, 0xD8, 0xC7, 0x2C, 0xDF, 0xB2,
++ /* 0568 */ 0x0C, 0x15, 0xE1, 0x2D, 0x8B, 0x9D, 0x21, 0xE2,
++ /* 0570 */ 0xC5, 0x8A, 0x12, 0xE2, 0xBD, 0x22, 0xB4, 0xEF,
++ /* 0578 */ 0x5C, 0x06, 0x7F, 0x34, 0x36, 0x6A, 0xD0, 0x97,
++ /* 0580 */ 0xE3, 0xB7, 0x2C, 0x78, 0xFF, 0xFF, 0x5B, 0x16,
++ /* 0588 */ 0x7C, 0x91, 0x7F, 0x15, 0x9D, 0x08, 0x7C, 0xCB,
++ /* 0590 */ 0x02, 0xF8, 0x11, 0x0C, 0x42, 0x4E, 0x06, 0x8E,
++ /* 0598 */ 0x3E, 0x2F, 0xE0, 0x07, 0xF0, 0x30, 0xE2, 0x21,
++ /* 05A0 */ 0xB1, 0x00, 0x03, 0xA7, 0xF7, 0x25, 0x9F, 0x29,
++ /* 05A8 */ 0xF8, 0x01, 0xC3, 0x67, 0x0A, 0x76, 0x3D, 0x88,
++ /* 05B0 */ 0xFE, 0x18, 0xE0, 0x73, 0x09, 0x66, 0x70, 0xE0,
++ /* 05B8 */ 0xBF, 0x56, 0x1C, 0xBA, 0x47, 0xF1, 0xFA, 0x60,
++ /* 05C0 */ 0x02, 0x0F, 0x8E, 0xFF, 0xFF, 0x07, 0x07, 0xF7,
++ /* 05C8 */ 0xCE, 0x70, 0x44, 0xBE, 0xC3, 0x78, 0x70, 0x60,
++ /* 05D0 */ 0x3B, 0x08, 0x00, 0x87, 0xC1, 0xE1, 0x43, 0x0D,
++ /* 05D8 */ 0x0E, 0x3D, 0x1E, 0x03, 0x87, 0xF4, 0x79, 0x8C,
++ /* 05E0 */ 0x5D, 0x18, 0x1E, 0x72, 0x3C, 0x34, 0xB0, 0x01,
++ /* 05E8 */ 0x7A, 0x68, 0xC0, 0x72, 0x12, 0x4F, 0x21, 0x87,
++ /* 05F0 */ 0x06, 0x66, 0x09, 0x43, 0x03, 0x4A, 0xF1, 0x86,
++ /* 05F8 */ 0x46, 0xFF, 0xFF, 0x43, 0xE3, 0x43, 0xF2, 0x61,
++ /* 0600 */ 0x21, 0xE6, 0x53, 0x4E, 0x84, 0xF7, 0x05, 0x9F,
++ /* 0608 */ 0xA0, 0x18, 0xFA, 0x6B, 0x8A, 0x6F, 0x17, 0xBE,
++ /* 0610 */ 0x09, 0xE2, 0xC6, 0x07, 0xAE, 0x4B, 0xA7, 0xC7,
++ /* 0618 */ 0x07, 0x7C, 0x8E, 0x5C, 0x1E, 0x1F, 0xEE, 0xE8,
++ /* 0620 */ 0xE4, 0xF1, 0xC1, 0x70, 0x79, 0x95, 0x21, 0x47,
++ /* 0628 */ 0x13, 0x1F, 0xAD, 0xD8, 0xF0, 0xC0, 0x76, 0xD3,
++ /* 0630 */ 0xF3, 0xF0, 0x80, 0xCF, 0x75, 0x13, 0x8C, 0x57,
++ /* 0638 */ 0x48, 0x7E, 0x2D, 0x81, 0x71, 0x82, 0xC2, 0x5F,
++ /* 0640 */ 0x37, 0xC1, 0xFB, 0xFF, 0xBF, 0x6E, 0x02, 0xCF,
++ /* 0648 */ 0x51, 0x70, 0xAD, 0x97, 0x6C, 0x1A, 0xE4, 0x95,
++ /* 0650 */ 0xA3, 0x58, 0x2F, 0x02, 0x0A, 0xE3, 0x33, 0x1B,
++ /* 0658 */ 0xE0, 0x68, 0xAC, 0xCF, 0x6C, 0x60, 0xB9, 0x17,
++ /* 0660 */ 0xB0, 0x1B, 0x1B, 0xDC, 0xD3, 0x1A, 0xEC, 0xBB,
++ /* 0668 */ 0xC3, 0xC3, 0xD9, 0x63, 0xDA, 0xA3, 0xDA, 0x03,
++ /* 0670 */ 0x9A, 0x8F, 0xD8, 0x31, 0xDE, 0xD2, 0x82, 0xC4,
++ /* 0678 */ 0x89, 0xF0, 0x3A, 0xF0, 0xB4, 0xE6, 0x4B, 0x46,
++ /* 0680 */ 0xBC, 0x40, 0x4F, 0x6B, 0xC6, 0x88, 0xF3, 0xD2,
++ /* 0688 */ 0x66, 0xC4, 0x57, 0x8A, 0x10, 0x0F, 0x6B, 0x3E,
++ /* 0690 */ 0xB9, 0x19, 0xEF, 0x61, 0x22, 0x5C, 0x98, 0x17,
++ /* 0698 */ 0xB6, 0xA7, 0x35, 0x70, 0xFC, 0xFF, 0x4F, 0x6B,
++ /* 06A0 */ 0x70, 0xE4, 0x5C, 0xB1, 0x01, 0x9A, 0x5C, 0xF4,
++ /* 06A8 */ 0x71, 0x87, 0x14, 0xB0, 0x5C, 0x1B, 0xD8, 0x2D,
++ /* 06B0 */ 0x05, 0xDE, 0x05, 0x1B, 0x38, 0xFF, 0xFF, 0x8F,
++ /* 06B8 */ 0x28, 0xE0, 0xCB, 0x72, 0xC1, 0xA6, 0x39, 0x2E,
++ /* 06C0 */ 0xD8, 0x28, 0x0E, 0xAB, 0x01, 0xD2, 0x3C, 0xE1,
++ /* 06C8 */ 0x5F, 0xAF, 0xC1, 0x3F, 0x09, 0x5F, 0xAF, 0x01,
++ /* 06D0 */ 0xDB, 0xB7, 0x58, 0xDC, 0xF5, 0x1A, 0x58, 0xFD,
++ /* 06D8 */ 0xFF, 0xAF, 0xD7, 0xC0, 0x52, 0xF0, 0x48, 0xE9,
++ /* 06E0 */ 0x9D, 0x1A, 0x5C, 0x37, 0x6D, 0x3C, 0xE8, 0x9B,
++ /* 06E8 */ 0x36, 0x4C, 0x85, 0x36, 0x7D, 0x6A, 0x34, 0x6A,
++ /* 06F0 */ 0xD5, 0xA0, 0x4C, 0x8D, 0x32, 0x0D, 0x6A, 0xF5,
++ /* 06F8 */ 0xA9, 0xD4, 0x98, 0xB1, 0xA1, 0x5A, 0xDA, 0x5D,
++ /* 0700 */ 0x82, 0x8A, 0x59, 0x8C, 0x46, 0xE3, 0x28, 0x20,
++ /* 0708 */ 0x54, 0xF6, 0x1F, 0x50, 0x20, 0x0E, 0xF9, 0xD1,
++ /* 0710 */ 0x11, 0xA0, 0x83, 0x7D, 0xA7, 0x74, 0x0B, 0x27,
++ /* 0718 */ 0x6B, 0x13, 0x88, 0xE3, 0x9B, 0x80, 0x68, 0x04,
++ /* 0720 */ 0x44, 0x5A, 0x54, 0x00, 0xB1, 0xDC, 0x20, 0x02,
++ /* 0728 */ 0xB2, 0x8A, 0x35, 0x09, 0xC8, 0x9A, 0xBF, 0x2F,
++ /* 0730 */ 0x02, 0xB7, 0x4E, 0x1D, 0x40, 0x2C, 0x25, 0x08,
++ /* 0738 */ 0x4D, 0xB4, 0x70, 0x81, 0x3A, 0x1E, 0x88, 0x06,
++ /* 0740 */ 0x43, 0x68, 0x04, 0xE4, 0x60, 0x14, 0x02, 0xB2,
++ /* 0748 */ 0x8C, 0xCF, 0x9D, 0xC0, 0x2D, 0xC0, 0x0A, 0x10,
++ /* 0750 */ 0x93, 0x0F, 0x42, 0x05, 0x7B, 0x01, 0x65, 0xEA,
++ /* 0758 */ 0x41, 0x04, 0x64, 0xA5, 0x6B, 0x15, 0x90, 0x75,
++ /* 0760 */ 0x83, 0x08, 0xC8, 0x59, 0xCD, 0x80, 0xB3, 0x8C,
++ /* 0768 */ 0x6E, 0x80, 0x98, 0xC2, 0x87, 0x82, 0x40, 0xAC,
++ /* 0770 */ 0x49, 0x0F, 0x28, 0x13, 0x08, 0xA2, 0x0B, 0x07,
++ /* 0778 */ 0xF1, 0x03, 0xC4, 0xA4, 0x81, 0x08, 0xC8, 0x71,
++ /* 0780 */ 0x7E, 0x25, 0x02, 0x77, 0x1C, 0x45, 0x80, 0xD4,
++ /* 0788 */ 0xD1, 0x70, 0x29, 0x08, 0x15, 0xFF, 0x09, 0x13,
++ /* 0790 */ 0xC8, 0xFF, 0xFF, 0xFD, 0x44, 0x96, 0xC0, 0x28,
++ /* 0798 */ 0x08, 0x8D, 0xA0, 0x09, 0x84, 0xC9, 0xF3, 0x04,
++ /* 07A0 */ 0xC2, 0x42, 0xFD, 0xFD, 0x34, 0x04, 0x07, 0x51,
++ /* 07A8 */ 0x35, 0x44, 0xEA, 0x0A, 0x84, 0x05, 0x7E, 0x18,
++ /* 07B0 */ 0x68, 0x30, 0x4E, 0x0F, 0x22, 0x20, 0x27, 0x7D,
++ /* 07B8 */ 0x52, 0x05, 0x22, 0xB9, 0x41, 0x04, 0xE4, 0xFF,
++ /* 07C0 */ 0x3F
++ })
++ }
++ }
++
++ /* Wire GPE events to notify OEM
++ * added value events.
++ */
++ Scope (\_GPE)
++ {
++ Method (_L18, 0, Serialized)
++ {
++ Notify (\_SB.WMI1, 0xD0)
++ }
++ }
++}
++
+diff -Nur a/tools/xenpmd/acpi-events.c b/tools/xenpmd/acpi-events.c
+--- a/tools/xenpmd/acpi-events.c 2009-04-01 16:30:52.000000000 -0400
++++ b/tools/xenpmd/acpi-events.c 2009-04-01 16:51:29.000000000 -0400
+@@ -41,6 +41,7 @@
+ #define XS_LID_EVENT_PATH "/pm/events/lidstatechanged"
+ #define XS_PBTN_EVENT_PATH "/pm/events/powerbuttonpressed"
+ #define XS_SBTN_EVENT_PATH "/pm/events/sleepbuttonpressed"
++#define XS_OEM_EVENT_PATH "/oem/event"
+
+ static int socket_fd;
+ static pthread_t acpi_thread;
+@@ -97,6 +98,11 @@
+ xs_write(xs, XBT_NULL, XS_SBTN_EVENT_PATH, "1", 1);
+ }
+
++void handle_oem_event(void)
++{
++ xs_write(xs, XBT_NULL, XS_OEM_EVENT_PATH, "1", 1);
++}
++
+ void process_acpi_message(char *acpi_buffer)
+ {
+ if ( strstr(acpi_buffer, "ac_adapter") )
+@@ -119,7 +125,14 @@
+ }
+
+ if ( strstr(acpi_buffer, "SBTN") )
++ {
+ handle_sbtn_pressed_event();
++ return;
++ }
++
++ if ( (strstr(acpi_buffer, "WMID")) ||
++ (strstr(acpi_buffer, "AMW0")) )
++ handle_oem_event();
+ }
+
+ static void *acpi_events_thread(void *arg)
--- /dev/null
+diff -Nur a/tools/firmware/hvmloader/acpi/build.c b/tools/firmware/hvmloader/acpi/build.c
+--- a/tools/firmware/hvmloader/acpi/build.c 2009-04-01 10:29:52.000000000 -0400
++++ b/tools/firmware/hvmloader/acpi/build.c 2009-04-01 14:01:47.000000000 -0400
+@@ -50,7 +50,13 @@
+
+ static uint8_t battery_port_exists(void)
+ {
+- return (inb(0x88) == 0x1F);
++ uint8_t val;
++
++ val = inb(0x88);
++ if ( (val == 0xff) || (val == 0x0) )
++ return 0;
++
++ return 1;
+ }
+
+ static int construct_madt(struct acpi_20_madt *madt)
+diff -Nur a/tools/firmware/hvmloader/acpi/Makefile b/tools/firmware/hvmloader/acpi/Makefile
+--- a/tools/firmware/hvmloader/acpi/Makefile 2009-04-01 10:29:52.000000000 -0400
++++ b/tools/firmware/hvmloader/acpi/Makefile 2009-04-01 14:01:47.000000000 -0400
+@@ -19,17 +19,30 @@
+ include $(XEN_ROOT)/tools/firmware/Rules.mk
+
+ C_SRC = build.c dsdt.c static_tables.c
+-H_SRC = $(wildcard *.h)
++H_SRC = $(wildcard *.h) ssdt_pm.h ssdt_tpm.h
+ OBJS = $(patsubst %.c,%.o,$(C_SRC))
+
++build.o: $(H_SRC) build.c
++
++IASL_VER = acpica-unix-20080729
++IASL_URL = http://acpica.org/download/$(IASL_VER).tar.gz
++
+ CFLAGS += -I. -I.. $(CFLAGS_include)
+
+ vpath iasl $(PATH)
+ all: acpi.a
+
+-ssdt_pm.h ssdt_tpm.h: %.h: %.asl
++ssdt_pm.h: ssdt_pm.asl
++ $(MAKE) iasl
++ iasl -tc $<
++ sed -i'' -re 's/AmlCode/AmlCode_PM/g' $*.hex
++ mv $*.hex $@
++ rm -f *.aml
++
++ssdt_tpm.h: ssdt_tpm.asl
+ $(MAKE) iasl
+ iasl -tc $<
++ sed -i'' -re 's/AmlCode/AmlCode_TPM/g' $*.hex
+ mv $*.hex $@
+ rm -f *.aml
+
+@@ -42,21 +55,23 @@
+
+ iasl:
+ @echo
+- @echo "ACPI ASL compiler (iasl) is needed"
+- @echo "Download and install Intel ACPI CA from"
++ @echo "ACPI ASL compiler(iasl) is needed"
++ @echo "Download Intel ACPI CA"
++ @echo "If wget failed, please download and compile manually from"
+ @echo "http://acpica.org/downloads/"
+ @echo
+- @exit 1
++ wget $(IASL_URL)
++ tar xzf $(IASL_VER).tar.gz
++ make -C $(IASL_VER)/compiler
++ $(INSTALL_PROG) $(IASL_VER)/compiler/iasl /$(BINDIR)/iasl
++
++%.o: %.c
++ $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+
+ acpi.a: $(OBJS)
+ $(AR) rc $@ $(OBJS)
+
+-%.o: %.c $(H_SRC)
+- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+-
+ clean:
+- rm -rf *.a *.o $(IASL_VER) $(IASL_VER).tar.gz $(DEPS)
++ rm -rf *.a *.o dsdt.c ssdt_pm.h ssdt_tpm.h $(IASL_VER) $(IASL_VER).tar.gz
+
+ install: all
+-
+--include $(DEPS)
+diff -Nur a/tools/firmware/hvmloader/acpi/ssdt_pm.asl b/tools/firmware/hvmloader/acpi/ssdt_pm.asl
+--- a/tools/firmware/hvmloader/acpi/ssdt_pm.asl 2009-04-01 10:29:52.000000000 -0400
++++ b/tools/firmware/hvmloader/acpi/ssdt_pm.asl 2009-04-01 14:01:47.000000000 -0400
+@@ -95,6 +95,13 @@
+ P88, 8
+ }
+
++ /* OperationRegion for Power Button */
++ OperationRegion (PBOP, SystemIO, 0x200, 0x01)
++ Field (PBOP, ByteAcc, NoLock, WriteAsZeros)
++ {
++ SLP, 1,
++ WAK, 1
++ }
+
+ Mutex (SYNC, 0x01)
+ Name (BUF0, Buffer (0x0100) {})
+@@ -291,8 +298,99 @@
+ Release (SYNC)
+ }
+
+- /* Future patches will extend AC object to better account for
+- * AC to DC transition and more. */
++ Method (E0, 0, NotSerialized)
++ {
++ If (\_SB.SLP)
++ {
++ Store (One, \_SB.SLP)
++ Notify (\_SB.SLPB, 0x80)
++ }
++
++ if (\_SB.WAK)
++ {
++ Store (One, \_SB.WAK)
++ Notify (\_SB.SLPB, 0x2)
++ }
++ }
++
++ Method (E1, 0, NotSerialized)
++ {
++ If (\_SB.SLP)
++ {
++ Store (One, \_SB.SLP)
++ Notify (\_SB.PBTN, 0x80)
++ }
++
++ if (\_SB.WAK)
++ {
++ Store (One, \_SB.WAK)
++ Notify (\_SB.PBTN, 0x2)
++ }
++ }
++
++ Method (E1C, 0, NotSerialized)
++ {
++ Notify (\_SB.AC, 0x80)
++ }
++
++ Method (E17, 0, NotSerialized)
++ {
++ Notify (\_SB.LID, 0x80)
++ }
++
++ Device (LID)
++ {
++ Name (_HID, EisaId ("PNP0C0D"))
++ Method (_LID, 0, NotSerialized)
++ {
++ Store (\_SB.P88, Local0)
++ If (And (Local0, 0x4))
++ {
++ Return (0x1)
++ }
++
++ Return (0x0)
++ }
++
++ Name (_PRW, Package (0x02)
++ {
++ 0x17,
++ 0x03
++ })
++
++ Method (_PSW, 1, NotSerialized)
++ {
++ Store (\_SB.P88, Local0)
++ If (And (Local0, 0x4))
++ {
++ Return (0x1)
++ }
++ Return (0x0)
++ }
++ }
++
++ Device (PBTN)
++ {
++ Name (_HID, EisaId ("PNP0C0C"))
++
++ Name (_PRW, Package (0x02)
++ {
++ 0x01,
++ 0x04
++ })
++ }
++
++ Device (SLPB)
++ {
++ Name (_HID, EisaId ("PNP0C0E"))
++
++ Name (_PRW, Package (0x02)
++ {
++ 0x01,
++ 0x04
++ })
++ }
++
+ Device (AC)
+ {
+ Name (_HID, "ACPI0003")
+@@ -304,6 +402,12 @@
+ })
+ Method (_PSR, 0, NotSerialized)
+ {
++ Store (\_SB.P88, Local0)
++ If (And (Local0, 0x1))
++ {
++ Return (0x1)
++ }
++
+ Return (0x0)
+ }
+
+@@ -348,11 +452,16 @@
+ \_SB
+ })
+
+- /* Always returns 0x1f indicating battery present. */
++ /* Returning 0x1F indicates battery present */
+ Method (_STA, 0, NotSerialized)
+ {
+ Store (\_SB.P88, Local0)
+- Return ( Local0 )
++ If (And (Local0, 0x2))
++ {
++ Return (0x1F)
++ }
++
++ Return (0x0F)
+ }
+
+ /* Battery generic info: design capacity, voltage, model # etc. */
+@@ -367,7 +476,7 @@
+ /* Battery status including battery charging/discharging rate. */
+ Method (_BST, 0, NotSerialized)
+ {
+- Store (1, \_SB.DBG1)
++ /* Store (1, \_SB.DBG1) */
+ ACQR ()
+ INIT (0x02)
+ INIT (0x01)
+@@ -378,7 +487,7 @@
+ Store (HLP7 (), Index (BST0, 0x02))
+ Store (HLP7 (), Index (BST0, 0x03))
+ REL ()
+- Store (2, \_SB.DBG1)
++ /* Store (2, \_SB.DBG1) */
+ Return (BST0)
+ }
+ }
+@@ -419,5 +528,31 @@
+ }
+ }
+ }
++
++ /* Wire GPE events to notify power state
++ * changes like ac power to battery use etc.
++ */
++ Scope (\_GPE)
++ {
++ Method (_L00, 0, NotSerialized)
++ {
++ \_SB.E0()
++ }
++
++ Method (_L01, 0, NotSerialized)
++ {
++ \_SB.E1()
++ }
++
++ Method (_L1C, 0, NotSerialized)
++ {
++ \_SB.E1C()
++ }
++
++ Method (_L17, 0, NotSerialized)
++ {
++ \_SB.E17()
++ }
++ }
+ }
+
+diff -Nur
+--- /dev/null
++++ b/tools/xenpmd/acpi-events.c 2009-04-01 14:01:47.000000000 -0400
+@@ -0,0 +1,167 @@
++/*
++ * acpi-events.c
++ *
++ * Register for and monitor acpi events and communicate relevant
++ * events to ioemu by triggering xenstore events.
++ *
++ * Copyright (c) 2008 Kamala Narasimhan
++ * Copyright (c) 2008 Citrix Systems, Inc.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ */
++
++#include <stdio.h>
++#include <string.h>
++#include <pthread.h>
++#include <sys/socket.h>
++#include <sys/un.h>
++#include <unistd.h>
++#include <xs.h>
++
++#define AC_ADAPTER_STATE_FILE_PATH "/proc/acpi/ac_adapter/AC/state"
++#define LID_STATE_FILE_PATH "/proc/acpi/button/lid/LID/state"
++#define ACPID_SOCKET_PATH "/var/run/acpid.socket"
++
++#define XS_AC_ADAPTER_STATE_PATH "/pm/ac_adapter"
++#define XS_LID_STATE_PATH "/pm/lid_state"
++
++#define XS_AC_ADAPTER_EVENT_PATH "/pm/events/acadapterstatechanged"
++#define XS_LID_EVENT_PATH "/pm/events/lidstatechanged"
++#define XS_PBTN_EVENT_PATH "/pm/events/powerbuttonpressed"
++#define XS_SBTN_EVENT_PATH "/pm/events/sleepbuttonpressed"
++
++static int socket_fd;
++static pthread_t acpi_thread;
++extern struct xs_handle *xs;
++
++void write_state_info_in_xenstore(char *file_path, char *xenstore_path,
++ char *search_str, char *default_value, char *alternate_value)
++{
++ FILE *file;
++ char file_data[1024];
++
++ xs_write(xs, XBT_NULL, xenstore_path, default_value, strlen(default_value));
++ file = fopen(file_path, "r");
++ if ( file == NULL )
++ return;
++
++ memset(file_data, 0, 1024);
++ fgets(file_data, 1024, file);
++ if ( strstr(file_data, search_str) )
++ xs_write(xs, XBT_NULL, xenstore_path, alternate_value,
++ strlen(alternate_value));
++ fclose(file);
++}
++
++void initialize_system_state_info(void)
++{
++ write_state_info_in_xenstore(AC_ADAPTER_STATE_FILE_PATH,
++ XS_AC_ADAPTER_STATE_PATH, "off-line", "1", "0");
++ write_state_info_in_xenstore(LID_STATE_FILE_PATH, XS_LID_STATE_PATH,
++ "closed", "1", "0");
++}
++
++void handle_ac_adapter_state_change(void)
++{
++ write_state_info_in_xenstore(AC_ADAPTER_STATE_FILE_PATH,
++ XS_AC_ADAPTER_STATE_PATH, "off-line", "1", "0");
++ xs_write(xs, XBT_NULL, XS_AC_ADAPTER_EVENT_PATH, "1", 1);
++}
++
++void handle_lid_state_change(void)
++{
++ write_state_info_in_xenstore(LID_STATE_FILE_PATH, XS_LID_STATE_PATH,
++ "closed", "1", "0");
++ xs_write(xs, XBT_NULL, XS_LID_EVENT_PATH, "1", 1);
++}
++
++void handle_pbtn_pressed_event(void)
++{
++ xs_write(xs, XBT_NULL, XS_PBTN_EVENT_PATH, "1", 1);
++}
++
++void handle_sbtn_pressed_event(void)
++{
++ xs_write(xs, XBT_NULL, XS_SBTN_EVENT_PATH, "1", 1);
++}
++
++void process_acpi_message(char *acpi_buffer)
++{
++ if ( strstr(acpi_buffer, "ac_adapter") )
++ {
++ handle_ac_adapter_state_change();
++ return;
++ }
++
++ if ( strstr(acpi_buffer, "LID") )
++ {
++ handle_lid_state_change();
++ return;
++ }
++
++ if ( (strstr(acpi_buffer, "PBTN")) ||
++ (strstr(acpi_buffer, "PWRF")) )
++ {
++ handle_pbtn_pressed_event();
++ return;
++ }
++
++ if ( strstr(acpi_buffer, "SBTN") )
++ handle_sbtn_pressed_event();
++}
++
++static void *acpi_events_thread(void *arg)
++{
++ int ret;
++ struct sockaddr_un addr;
++ char acpi_buffer[1024];
++
++ socket_fd = socket(PF_UNIX, SOCK_STREAM, 0);
++ if ( socket_fd == -1)
++ return (void *)socket_fd;
++
++ addr.sun_family = AF_UNIX;
++ strncpy(addr.sun_path, ACPID_SOCKET_PATH, strlen(ACPID_SOCKET_PATH));
++ addr.sun_path[strlen(ACPID_SOCKET_PATH)] = '\0';
++ ret = connect(socket_fd, (struct sockaddr *)&addr, sizeof(addr));
++ if ( ret == -1 )
++ return (void *)ret;
++
++ while( 1 )
++ {
++ memset(acpi_buffer, 0, sizeof(acpi_buffer));
++ ret = recv(socket_fd, acpi_buffer, sizeof(acpi_buffer), 0);
++ if ( ret == 0 )
++ continue;
++
++ process_acpi_message(acpi_buffer);
++ }
++
++ return (void *)1;
++}
++
++void monitor_acpi_events(void)
++{
++ pthread_create(&acpi_thread, NULL, &acpi_events_thread, NULL);
++}
++
++void acpi_events_cleanup(void)
++{
++ if ( socket_fd != -1 )
++ close(socket_fd);
++
++ pthread_cancel(acpi_thread);
++}
++
+diff -Nur a/tools/xenpmd/Makefile b/tools/xenpmd/Makefile
+--- a/tools/xenpmd/Makefile 2009-04-01 10:29:53.000000000 -0400
++++ b/tools/xenpmd/Makefile 2009-04-01 14:01:47.000000000 -0400
+@@ -10,6 +10,8 @@
+ .PHONY: all
+ all: $(BIN)
+
++$(BIN): xenpmd.o acpi-events.o
++
+ .PHONY: install
+ install: all
+ $(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
+@@ -17,6 +19,4 @@
+
+ .PHONY: clean
+ clean:
+- $(RM) -f $(BIN) $(DEPS)
+-
+--include $(DEPS)
++ $(RM) -f $(BIN) *.o
+diff -Nur a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c
+--- a/tools/xenpmd/xenpmd.c 2009-04-01 10:29:53.000000000 -0400
++++ b/tools/xenpmd/xenpmd.c 2009-04-01 14:02:11.000000000 -0400
+@@ -40,10 +40,11 @@
+ #include <dirent.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
++#include <pthread.h>
+ #include <xs.h>
+
+ /* #define RUN_STANDALONE */
+-#define RUN_IN_SIMULATE_MODE
++/* #define RUN_IN_SIMULATE_MODE */
+
+ enum BATTERY_INFO_TYPE {
+ BIF,
+@@ -84,7 +85,12 @@
+ unsigned long present_voltage;
+ };
+
+-static struct xs_handle *xs;
++struct xs_handle *xs;
++static pthread_t worker_thread;
++
++extern void initialize_system_state_info(void);
++extern void monitor_acpi_events(void);
++extern void acpi_events_cleanup(void);
+
+ #ifdef RUN_IN_SIMULATE_MODE
+ #define BATTERY_DIR_PATH "/tmp/battery"
+@@ -216,13 +222,21 @@
+ char *attrib_value,
+ struct battery_status *status)
+ {
+- if ( strstr(attrib_name, "charging state") )
++ if ( strstr(attrib_name, "charging state") )
+ {
+- /* Check this, below is half baked */
+- if ( strstr(attrib_value, "charged") )
+- status->state = 0;
+- else
+- status->state = 1;
++ if ( strstr(attrib_value, "charging/discharging") )
++ status->state |= 0x3;
++ else if ( strstr(attrib_value, "discharging") )
++ status->state |= 0x1;
++ else if ( strstr(attrib_value, "charging") )
++ status->state |= 0x2;
++ return;
++ }
++
++ if ( strstr(attrib_name, "capacity state") )
++ {
++ if ( strstr(attrib_value, "ok") )
++ status->state |= 4;
+ return;
+ }
+
+@@ -297,6 +311,7 @@
+ if ( !info_or_status )
+ return 0;
+
++ memset(line_info, 0, 256);
+ if (type == BIF)
+ memset(info_or_status, 0, sizeof(struct battery_info));
+ else
+@@ -306,8 +321,11 @@
+ if ( !file )
+ return 0;
+
+- while ( fgets(line_info, sizeof(line_info), file) != NULL )
++ while ( fgets(line_info, 1024, file) != NULL )
++ {
+ parse_battery_info_or_status(line_info, type, info_or_status);
++ memset(line_info, 0, 256);
++ }
+
+ fclose(file);
+ return 1;
+@@ -317,14 +335,14 @@
+ void print_battery_info(struct battery_info *info)
+ {
+ printf("present: %d\n", info->present);
+- printf("design capacity: %d\n", info->design_capacity);
+- printf("last full capacity: %d\n", info->last_full_capacity);
++ printf("design capacity: %d\n", (int) info->design_capacity);
++ printf("last full capacity: %d\n", (int) info->last_full_capacity);
+ printf("battery technology: %d\n", info->battery_technology);
+- printf("design voltage: %d\n", info->design_voltage);
+- printf("design capacity warning:%d\n", info->design_capacity_warning);
+- printf("design capacity low: %d\n", info->design_capacity_low);
+- printf("capacity granularity 1: %d\n", info->capacity_granularity_1);
+- printf("capacity granularity 2: %d\n", info->capacity_granularity_2);
++ printf("design voltage: %d\n", (int) info->design_voltage);
++ printf("design capacity warning:%d\n", (int) info->design_capacity_warning);
++ printf("design capacity low: %d\n", (int) info->design_capacity_low);
++ printf("capacity granularity 1: %d\n", (int) info->capacity_granularity_1);
++ printf("capacity granularity 2: %d\n", (int) info->capacity_granularity_2);
+ printf("model number: %s\n", info->model_number);
+ printf("serial number: %s\n", info->serial_number);
+ printf("battery type: %s\n", info->battery_type);
+@@ -369,7 +387,7 @@
+ (unsigned int)strlen(info->serial_number), info->serial_number,
+ (unsigned int)strlen(info->battery_type), info->battery_type,
+ (unsigned int)strlen(info->oem_info), info->oem_info);
+- strncat(val+73, string_info, 1024-73-1);
++ strncat(val+73, string_info, 1024);
+ xs_write(xs, XBT_NULL, "/pm/bif",
+ val, 73+8+strlen(info->model_number)+strlen(info->serial_number)+
+ strlen(info->battery_type)+strlen(info->oem_info)+1);
+@@ -406,10 +424,11 @@
+ void print_battery_status(struct battery_status *status)
+ {
+ printf("present: %d\n", status->present);
+- printf("Battery state %d\n", status->state);
+- printf("Battery present rate %d\n", status->present_rate);
+- printf("Battery remining capacity %d\n", status->remaining_capacity);
+- printf("Battery present voltage %d\n", status->present_voltage);
++ printf("Battery state %d\n", (int) status->state);
++ printf("Battery present rate %d\n", (int) status->present_rate);
++ printf("Battery remining capacity %d\n",
++ (int) status->remaining_capacity);
++ printf("Battery present voltage %d\n", (int) status->present_voltage);
+ }
+ #endif /*RUN_STANDALONE*/
+
+@@ -469,6 +488,7 @@
+ return ret;
+ }
+
++#ifndef RUN_STANDALONE
+ /* Borrowed daemonize from xenstored - Initially written by Stevens. */
+ static void daemonize(void)
+ {
+@@ -493,24 +513,51 @@
+
+ umask(0);
+ }
++#endif /* RUN_STANDALONE */
+
+-int main(int argc, char *argv[])
++/*
++ * IMPORTANT: From the child process, we create a new thread
++ * to monitor acpid events. However, due to a bug in uClibc,
++ * the child process main thread does not get time slice
++ * after spawning a new thread. To work around this, we create
++ * a worker thread and then create an acpid monitor thread from
++ * this worker thread. This way both the worker thread and acpid
++ * thread will get time slices. This workaround will be removed
++ * once uClibc bug is fixed.
++ */
++static void *worker_thread_routine(void *arg)
+ {
+-#ifndef RUN_STANDALONE
+- daemonize();
+-#endif
+ xs = (struct xs_handle *)xs_daemon_open();
+- if ( xs == NULL )
+- return -1;
++ if ( xs == NULL )
++ return 0;
+
+- if ( write_one_time_battery_info() == 0 )
++ initialize_system_state_info();
++ monitor_acpi_events();
++ if ( write_one_time_battery_info() == 0 )
+ {
+ xs_daemon_close(xs);
+- return -1;
++ return 0;
+ }
+
+ wait_for_and_update_battery_status_request();
++ acpi_events_cleanup();
+ xs_daemon_close(xs);
+ return 0;
+ }
+
++int main(int argc, char *argv[])
++{
++#ifndef RUN_STANDALONE
++ daemonize();
++#endif
++
++ /* Refer to worker_thread_routine for why we create additional thread */
++ pthread_create(&worker_thread, NULL, &worker_thread_routine, NULL);
++
++ /* below won't get a time slice because of uClibc bug. */
++ while ( 1 )
++ sleep(60);
++
++ return 0;
++}
++
--- /dev/null
+fix_compilation
+power-management-enhancement
+smbios
+acpi-slic
+oem-features
+thermal-management
--- /dev/null
+diff
+--- /dev/null
++++ b/oem/dell-960-optiplex-smbios.patch 2009-04-01 14:15:16.000000000 -0400
+@@ -0,0 +1,49 @@
++diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
++--- a/tools/firmware/hvmloader/markers.h 2008-11-25 12:47:54.000000000 -0500
+++++ b/tools/firmware/hvmloader/markers.h 2008-11-25 12:53:27.000000000 -0500
++@@ -17,22 +17,22 @@
++ struct bios_vendor_struct {
++ char marker[65];
++ char value[65];
++-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
+++} bios_vendor = {BIOS_VENDOR_MARKER, "Dell Inc."};
++
++ struct bios_version_struct {
++ char marker[65];
++ char value[65];
++-} bios_version = {BIOS_VERSION_MARKER, ""};
+++} bios_version = {BIOS_VERSION_MARKER, "X20"};
++
++ struct sys_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
+++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Dell Inc."};
++
++ struct sys_product_name_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
+++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "OptiPlex 960"};
++
++ struct sys_product_version_struct {
++ char marker[65];
++@@ -57,15 +57,15 @@
++ struct sys_enclosure_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
+++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Dell Inc."};
++
++ struct sys_enclosure_serial_struct {
++ char marker[65];
++ char value[65];
++ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
++
++-const char *oem_strings_array[1] = {
++- NULL
+++const char *oem_strings_array[2] = {
+++ "www.dell.com", NULL
++ };
++
++ #endif /* __HVMLOADER_MARKERS_H__ */
+diff
+--- /dev/null
++++ b/oem/dell-e6500-latitude-smbios.patch 2009-04-01 14:15:16.000000000 -0400
+@@ -0,0 +1,49 @@
++diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
++--- a/tools/firmware/hvmloader/markers.h 2008-12-15 14:44:08.000000000 -0500
+++++ b/tools/firmware/hvmloader/markers.h 2008-12-15 14:56:51.000000000 -0500
++@@ -17,22 +17,22 @@
++ struct bios_vendor_struct {
++ char marker[65];
++ char value[65];
++-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
+++} bios_vendor = {BIOS_VENDOR_MARKER, "Dell Inc."};
++
++ struct bios_version_struct {
++ char marker[65];
++ char value[65];
++-} bios_version = {BIOS_VERSION_MARKER, ""};
+++} bios_version = {BIOS_VERSION_MARKER, "A09"};
++
++ struct sys_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
+++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Dell Inc."};
++
++ struct sys_product_name_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
+++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "Latitude E6500"};
++
++ struct sys_product_version_struct {
++ char marker[65];
++@@ -57,15 +57,15 @@
++ struct sys_enclosure_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
+++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Dell Inc."};
++
++ struct sys_enclosure_serial_struct {
++ char marker[65];
++ char value[65];
++ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
++
++-const char *oem_strings_array[1] = {
++- NULL
+++const char *oem_strings_array[4] = {
+++ "Dell System", "5[0031]", "13[PP04X]", NULL
++ };
++
++ #endif /* __HVMLOADER_MARKERS_H__ */
+diff
+--- /dev/null
++++ b/oem/hp-6930p-elitebook-smbios.patch 2009-04-01 14:15:16.000000000 -0400
+@@ -0,0 +1,67 @@
++diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
++--- a/tools/firmware/hvmloader/markers.h 2008-11-25 12:47:54.000000000 -0500
+++++ b/tools/firmware/hvmloader/markers.h 2008-11-25 12:46:41.000000000 -0500
++@@ -17,27 +17,27 @@
++ struct bios_vendor_struct {
++ char marker[65];
++ char value[65];
++-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
+++} bios_vendor = {BIOS_VENDOR_MARKER, "Hewlett-Packard"};
++
++ struct bios_version_struct {
++ char marker[65];
++ char value[65];
++-} bios_version = {BIOS_VERSION_MARKER, ""};
+++} bios_version = {BIOS_VERSION_MARKER, "68PCU Ver. F.0B"};
++
++ struct sys_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
+++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Hewlett-Packard"};
++
++ struct sys_product_name_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
+++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HP EliteBook 6930p"};
++
++ struct sys_product_version_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, ""};
+++} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, "F.0B"};
++
++ struct sys_product_serial_struct {
++ char marker[65];
++@@ -47,25 +47,25 @@
++ struct sys_product_sku_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_sku = {SYS_PRODUCT_SKU_MARKER, ""};
+++} sys_product_sku = {SYS_PRODUCT_SKU_MARKER, "GB996EA#ABU"};
++
++ struct sys_product_family_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
+++} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, "103C_5336AN"};
++
++ struct sys_enclosure_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
+++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Hewlett-Packard"};
++
++ struct sys_enclosure_serial_struct {
++ char marker[65];
++ char value[65];
++ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
++
++-const char *oem_strings_array[1] = {
++- NULL
+++const char *oem_strings_array[4] = {
+++ "ABS 70/71 79 7A 7B 7C", "CSM v01.24", "www.hp.com", NULL
++ };
++
++ #endif /* __HVMLOADER_MARKERS_H__ */
+diff
+--- /dev/null
++++ b/oem/lenovo-x200-thinkpad-smbios.patch 2009-04-01 14:15:16.000000000 -0400
+@@ -0,0 +1,61 @@
++diff -Nur a/tools/firmware/hvmloader/markers.h b/tools/firmware/hvmloader/markers.h
++--- a/tools/firmware/hvmloader/markers.h 2008-12-15 14:44:08.000000000 -0500
+++++ b/tools/firmware/hvmloader/markers.h 2008-12-16 10:09:53.000000000 -0500
++@@ -17,27 +17,27 @@
++ struct bios_vendor_struct {
++ char marker[65];
++ char value[65];
++-} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
+++} bios_vendor = {BIOS_VENDOR_MARKER, "LENOVO"};
++
++ struct bios_version_struct {
++ char marker[65];
++ char value[65];
++-} bios_version = {BIOS_VERSION_MARKER, ""};
+++} bios_version = {BIOS_VERSION_MARKER, "6DET33WW (1.10 )"};
++
++ struct sys_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
+++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "LENOVO"};
++
++ struct sys_product_name_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
+++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "74542NU"};
++
++ struct sys_product_version_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, ""};
+++} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, "ThinkPad X200"};
++
++ struct sys_product_serial_struct {
++ char marker[65];
++@@ -52,20 +52,20 @@
++ struct sys_product_family_struct {
++ char marker[65];
++ char value[65];
++-} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
+++} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, "ThinkPad X200"};
++
++ struct sys_enclosure_manufacturer_struct {
++ char marker[65];
++ char value[65];
++-} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
+++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "LENOVO"};
++
++ struct sys_enclosure_serial_struct {
++ char marker[65];
++ char value[65];
++ } sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
++
++-const char *oem_strings_array[1] = {
++- NULL
+++const char *oem_strings_array[2] = {
+++ "IBM ThinkPad Embedded Controller -[7XHT21WW-1.03 ]-", NULL
++ };
++
++ #endif /* __HVMLOADER_MARKERS_H__ */
+diff
+--- /dev/null
++++ b/tools/firmware/hvmloader/markers.h 2009-04-01 14:15:17.000000000 -0400
+@@ -0,0 +1,71 @@
++#ifndef __HVMLOADER_MARKERS_H__
++#define __HVMLOADER_MARKERS_H__
++
++#define BIOS_VENDOR_MARKER "##############################################BIOS_VENDOR_MARKER"
++#define BIOS_VERSION_MARKER "#############################################BIOS_VERSION_MARKER"
++
++#define SYS_MANUFACTURER_MARKER "#########################################SYS_MANUFACTURER_MARKER"
++#define SYS_PRODUCT_NAME_MARKER "#########################################SYS_PRODUCT_NAME_MARKER"
++#define SYS_PRODUCT_VERSION_MARKER "######################################SYS_PRODUCT_VERSION_MARKER"
++#define SYS_PRODUCT_SERIAL_MARKER "#######################################SYS_PRODUCT_SERIAL_MARKER"
++#define SYS_PRODUCT_SKU_MARKER "##########################################SYS_PRODUCT_SKU_MARKER"
++#define SYS_PRODUCT_FAMILY_MARKER "#######################################SYS_PRODUCT_FAMILY_MARKER"
++
++#define SYS_ENCLOSURE_MANUFACTURER_MARKER "###############################SYS_ENCLOSURE_MANUFACTURER_MARKER"
++#define SYS_ENCLOSURE_SERIAL_MARKER "#####################################SYS_ENCLOSURE_SERIAL_MARKER"
++
++struct bios_vendor_struct {
++ char marker[65];
++ char value[65];
++} bios_vendor = {BIOS_VENDOR_MARKER, "Xen"};
++
++struct bios_version_struct {
++ char marker[65];
++ char value[65];
++} bios_version = {BIOS_VERSION_MARKER, ""};
++
++struct sys_manufacturer_struct {
++ char marker[65];
++ char value[65];
++} sys_manufacturer = {SYS_MANUFACTURER_MARKER, "Xen"};
++
++struct sys_product_name_struct {
++ char marker[65];
++ char value[65];
++} sys_product_name = {SYS_PRODUCT_NAME_MARKER, "HVM domU"};
++
++struct sys_product_version_struct {
++ char marker[65];
++ char value[65];
++} sys_product_version = {SYS_PRODUCT_VERSION_MARKER, ""};
++
++struct sys_product_serial_struct {
++ char marker[65];
++ char value[65];
++} sys_product_serial = {SYS_PRODUCT_SERIAL_MARKER, ""};
++
++struct sys_product_sku_struct {
++ char marker[65];
++ char value[65];
++} sys_product_sku = {SYS_PRODUCT_SKU_MARKER, ""};
++
++struct sys_product_family_struct {
++ char marker[65];
++ char value[65];
++} sys_product_family = {SYS_PRODUCT_FAMILY_MARKER, ""};
++
++struct sys_enclosure_manufacturer_struct {
++ char marker[65];
++ char value[65];
++} sys_enclosure_manufacturer = {SYS_ENCLOSURE_MANUFACTURER_MARKER, "Xen"};
++
++struct sys_enclosure_serial_struct {
++ char marker[65];
++ char value[65];
++} sys_enclosure_serial = {SYS_ENCLOSURE_SERIAL_MARKER, ""};
++
++const char *oem_strings_array[1] = {
++ NULL
++};
++
++#endif /* __HVMLOADER_MARKERS_H__ */
+diff -Nur a/tools/firmware/hvmloader/smbios.c b/tools/firmware/hvmloader/smbios.c
+--- a/tools/firmware/hvmloader/smbios.c 2009-04-01 14:06:28.000000000 -0400
++++ b/tools/firmware/hvmloader/smbios.c 2009-04-01 15:34:18.000000000 -0400
+@@ -27,6 +27,7 @@
+ #include "util.h"
+ #include "hypercall.h"
+ #include "e820.h"
++#include "markers.h"
+
+ static int
+ write_smbios_tables(void *start,
+@@ -54,6 +55,8 @@
+ smbios_type_4_init(void *start, unsigned int cpu_number,
+ char *cpu_manufacturer);
+ static void *
++smbios_type_11_init(void *start);
++static void *
+ smbios_type_16_init(void *start, uint32_t memory_size_mb, int nr_mem_devs);
+ static void *
+ smbios_type_17_init(void *start, uint32_t memory_size_mb, int instance);
+@@ -112,6 +115,7 @@
+ do_struct(smbios_type_3_init(p));
+ for ( cpu_num = 1; cpu_num <= vcpus; cpu_num++ )
+ do_struct(smbios_type_4_init(p, cpu_num, cpu_manufacturer));
++ do_struct(smbios_type_11_init(p));
+
+ /* Each 'memory device' covers up to 16GB of address space. */
+ nr_mem_devs = (memsize + 0x3fff) >> 14;
+@@ -127,6 +131,8 @@
+ }
+
+ do_struct(smbios_type_32_init(p));
++ /* NOTE: future enhancement - vendor specific structures (range 128 - 256) would be
++ processed and added here */
+ do_struct(smbios_type_127_init(p));
+
+ #undef do_struct
+@@ -280,9 +286,33 @@
+ smbios_type_0_init(void *start, const char *xen_version,
+ uint32_t xen_major_version, uint32_t xen_minor_version)
+ {
+- struct smbios_type_0 *p = (struct smbios_type_0 *)start;
+ static const char *smbios_release_date = __SMBIOS_DATE__;
++ struct smbios_type_0 *p = (struct smbios_type_0 *)start;
++ struct hvm_sminfo_table *pa_sm;
++ struct hvm_smtable_header *header;
++
++ /* if passed a struct, use it */
++ pa_sm = get_hvm_sminfo_table();
++ while (pa_sm != NULL) {
++ header = get_sminfo_by_type(pa_sm, 0);
++ if (header == NULL)
++ break;
++ if (header->sm_length < sizeof(struct smbios_type_0))
++ break;
++ memcpy(start, ((uint8_t*)header + sizeof(struct hvm_smtable_header)), header->sm_length);
++
++ /* fix up some bits */
++ p->header.handle = 0;
++ p->starting_address_segment = 0xe800;
++ p->rom_size = 0;
++ p->characteristics[0] = 0x80; /* PCI is supported */
++ p->characteristics[2] = 0x08; /* EDD is supported */
++ p->characteristics_extension_bytes[1] = 0x04; /* Enable Targeted Content Distribution. */
+
++ return (start + header->sm_length);
++ }
++
++ /* fall back to building our own */
+ memset(p, 0, sizeof(*p));
+
+ p->header.type = 0;
+@@ -295,6 +325,7 @@
+ p->release_date_str = 3;
+ p->rom_size = 0;
+
++ memset(p->characteristics, 0, 8);
+ /* BIOS Characteristics. */
+ p->characteristics[0] = 0x80; /* PCI is supported */
+ p->characteristics[2] = 0x08; /* EDD is supported */
+@@ -308,10 +339,16 @@
+ p->embedded_controller_minor = 0xff;
+
+ start += sizeof(struct smbios_type_0);
+- strcpy((char *)start, "Xen");
+- start += strlen("Xen") + 1;
+- strcpy((char *)start, xen_version);
+- start += strlen(xen_version) + 1;
++ strcpy((char *)start, bios_vendor.value);
++ start += strlen(bios_vendor.value) + 1;
++
++ if ( strlen(bios_version.value) == 0 ) {
++ strncpy(bios_version.value, xen_version, sizeof(bios_version.value));
++ }
++
++ strcpy((char *)start, bios_version.value);
++ start += strlen(bios_version.value) + 1;
++
+ strcpy((char *)start, smbios_release_date);
+ start += strlen(smbios_release_date) + 1;
+
+@@ -326,7 +363,27 @@
+ {
+ char uuid_str[37];
+ struct smbios_type_1 *p = (struct smbios_type_1 *)start;
++ int next = 5;
++ struct hvm_sminfo_table *pa_sm;
++ struct hvm_smtable_header *header;
++
++ /* if passed a struct, use it */
++ pa_sm = get_hvm_sminfo_table();
++ while (pa_sm != NULL) {
++ header = get_sminfo_by_type(pa_sm, 1);
++ if (header == NULL)
++ break;
++ if (header->sm_length < sizeof(struct smbios_type_1))
++ break;
++ memcpy(start, ((uint8_t*)header + sizeof(struct hvm_smtable_header)), header->sm_length);
++
++ /* fix up some bits */
++ p->header.handle = 0x100;
++
++ return (start + header->sm_length);
++ }
+
++ /* fall back to building our own */
+ memset(p, 0, sizeof(*p));
+
+ p->header.type = 1;
+@@ -341,20 +398,46 @@
+ memcpy(p->uuid, uuid, 16);
+
+ p->wake_up_type = 0x06; /* power switch */
+- p->sku_str = 0;
+- p->family_str = 0;
+
+ start += sizeof(struct smbios_type_1);
++
++ strcpy((char *)start, sys_manufacturer.value);
++ start += strlen(sys_manufacturer.value) + 1;
++ strcpy((char *)start, sys_product_name.value);
++ start += strlen(sys_product_name.value) + 1;
++
++ if ( strlen(sys_product_version.value) == 0 ) {
++ strncpy(sys_product_version.value, xen_version, sizeof(sys_product_version.value));
++ }
++
++ strcpy((char *)start, sys_product_version.value);
++ start += strlen(sys_product_version.value) + 1;
++
++ if ( strlen(sys_product_serial.value) == 0 ) {
++ uuid_to_string(uuid_str, uuid);
++ strncpy(sys_product_serial.value, uuid_str, sizeof(sys_product_serial.value));
++ }
+
+- strcpy((char *)start, "Xen");
+- start += strlen("Xen") + 1;
+- strcpy((char *)start, "HVM domU");
+- start += strlen("HVM domU") + 1;
+- strcpy((char *)start, xen_version);
+- start += strlen(xen_version) + 1;
+- uuid_to_string(uuid_str, uuid);
+- strcpy((char *)start, uuid_str);
+- start += strlen(uuid_str) + 1;
++ strcpy((char *)start, sys_product_serial.value);
++ start += strlen(sys_product_serial.value) + 1;
++
++ /* no internal defaults for these if the value is not set */
++ if ( strlen(sys_product_sku.value) != 0 ) {
++ strcpy((char *)start, sys_product_sku.value);
++ start += strlen(sys_product_sku.value) + 1;
++ p->sku_str = next++;
++ }
++ else
++ p->sku_str = 0;
++
++ if ( strlen(sys_product_family.value) != 0 ) {
++ strcpy((char *)start, sys_product_family.value);
++ start += strlen(sys_product_family.value) + 1;
++ p->family_str = next++;
++ }
++ else
++ p->family_str = 0;
++
+ *((uint8_t *)start) = 0;
+
+ return start+1;
+@@ -365,7 +448,26 @@
+ smbios_type_3_init(void *start)
+ {
+ struct smbios_type_3 *p = (struct smbios_type_3 *)start;
+-
++ struct hvm_sminfo_table *pa_sm;
++ struct hvm_smtable_header *header;
++
++ /* if passed a struct, use it */
++ pa_sm = get_hvm_sminfo_table();
++ while (pa_sm != NULL) {
++ header = get_sminfo_by_type(pa_sm, 3);
++ if (header == NULL)
++ break;
++ if (header->sm_length < sizeof(struct smbios_type_3))
++ break;
++ memcpy(start, ((uint8_t*)header + sizeof(struct hvm_smtable_header)), header->sm_length);
++
++ /* fix up some bits */
++ p->header.handle = 0x300;
++
++ return (start + header->sm_length);
++ }
++
++ /* fall back to building our own */
+ memset(p, 0, sizeof(*p));
+
+ p->header.type = 3;
+@@ -384,8 +486,18 @@
+
+ start += sizeof(struct smbios_type_3);
+
+- strcpy((char *)start, "Xen");
+- start += strlen("Xen") + 1;
++ strcpy((char *)start, sys_enclosure_manufacturer.value);
++ start += strlen(sys_enclosure_manufacturer.value) + 1;
++
++ /* no internal defaults for this if the value is not set */
++ if ( strlen(sys_enclosure_serial.value) != 0 ) {
++ strcpy((char *)start, sys_enclosure_serial.value);
++ start += strlen(sys_enclosure_serial.value) + 1;
++ p->serial_number_str = 2;
++ }
++ else
++ p->serial_number_str = 0;
++
+ *((uint8_t *)start) = 0;
+ return start+1;
+ }
+@@ -440,6 +552,52 @@
+ return start+1;
+ }
+
++/* Type 11 -- OEM Strings */
++static void *
++smbios_type_11_init(void *start)
++{
++ struct smbios_type_11 *p = (struct smbios_type_11 *)start;
++ int i = 0;
++ struct hvm_sminfo_table *pa_sm;
++ struct hvm_smtable_header *header;
++
++ /* if passed a struct, use it */
++ pa_sm = get_hvm_sminfo_table();
++ while (pa_sm != NULL) {
++ header = get_sminfo_by_type(pa_sm, 11);
++ if (header == NULL)
++ break;
++ if (header->sm_length < sizeof(struct smbios_type_11))
++ break;
++ memcpy(start, ((uint8_t*)header + sizeof(struct hvm_smtable_header)), header->sm_length);
++
++ /* fix up some bits */
++ p->header.handle = 0xB00;
++
++ return (start + header->sm_length);
++ }
++
++ /* fall back to building our own */
++
++ if ( oem_strings_array[0] == NULL )
++ return start; /* no OEM strings to add */
++
++ p->header.type = 11;
++ p->header.length = sizeof(struct smbios_type_11);
++ p->header.handle = 0xB00;
++ start += sizeof(struct smbios_type_11);
++
++ while ( oem_strings_array[i] != NULL ) {
++ strcpy((char *)start, oem_strings_array[i]);
++ start += strlen(oem_strings_array[i]) + 1;
++ i++;
++ }
++ p->count = i;
++ *((uint8_t *)start) = 0;
++
++ return start+1;
++}
++
+ /* Type 16 -- Physical Memory Array */
+ static void *
+ smbios_type_16_init(void *start, uint32_t memsize, int nr_mem_devs)
+diff -Nur a/tools/firmware/hvmloader/smbios_types.h b/tools/firmware/hvmloader/smbios_types.h
+--- a/tools/firmware/hvmloader/smbios_types.h 2009-04-01 14:06:28.000000000 -0400
++++ b/tools/firmware/hvmloader/smbios_types.h 2009-04-01 15:28:52.000000000 -0400
+@@ -115,6 +115,12 @@
+ uint8_t upgrade;
+ } __attribute__ ((packed));
+
++/* SMBIOS type 11 - OEM Strings */
++struct smbios_type_11 {
++ struct smbios_structure_header header;
++ uint8_t count;
++} __attribute__ ((packed));
++
+ /* SMBIOS type 16 - Physical Memory Array
+ * Associated with one type 17 (Memory Device).
+ */
+diff -Nur a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
+--- a/tools/firmware/hvmloader/util.c 2009-04-01 14:06:28.000000000 -0400
++++ b/tools/firmware/hvmloader/util.c 2009-04-01 14:50:01.000000000 -0400
+@@ -542,32 +542,32 @@
+ asm volatile ( "ud2" );
+ }
+
+-static void validate_hvm_info(struct hvm_info_table *t)
++static int validate_hvm_info_table(uint8_t *table, uint32_t table_length, const char *table_sig, const char *sig, uint32_t sig_length)
+ {
+- uint8_t *ptr = (uint8_t *)t;
+ uint8_t sum = 0;
+ int i;
+
+- if ( strncmp(t->signature, "HVM INFO", 8) )
+- {
+- printf("Bad hvm info signature\n");
+- BUG();
++ if (table_length == 0) {
++ printf("Empty HVM info table: %.*s\n", sig_length, sig);
+ }
+
+- if ( t->length < sizeof(struct hvm_info_table) )
++ /* NOTE removed BUG() checking during xc merge because not all xc tables
++ are present - do a BUG() in get_hvm_info_table() only */
++
++ /* strncmp(t->signature, signature, sig_length) */
++ for ( i = 0; i < sig_length; i++ )
+ {
+- printf("Bad hvm info length\n");
+- BUG();
++ if ( table_sig[i] != sig[i] )
++ {
++ printf("Bad HVM info signature for: %.*s\n", sig_length, sig);
++ return 0;
++ }
+ }
+
+- for ( i = 0; i < t->length; i++ )
+- sum += ptr[i];
++ for ( i = 0; i < table_length; i++ )
++ sum += table[i];
+
+- if ( sum != 0 )
+- {
+- printf("Bad hvm info checksum\n");
+- BUG();
+- }
++ return (sum == 0);
+ }
+
+ struct hvm_info_table *get_hvm_info_table(void)
+@@ -580,7 +580,11 @@
+
+ t = (struct hvm_info_table *)HVM_INFO_PADDR;
+
+- validate_hvm_info(t);
++ if ( !validate_hvm_info_table((uint8_t*)t, t->length, t->signature, "HVM INFO", 8) )
++ {
++ printf("Bad HVM info table\n");
++ BUG();
++ }
+
+ table = t;
+
+@@ -650,6 +654,52 @@
+ return ((hpet_id >> 16) == 0x8086);
+ }
+
++struct hvm_sminfo_table *get_hvm_sminfo_table(void)
++{
++ static struct hvm_sminfo_table *table = NULL;
++ static int validated = 0;
++ struct hvm_sminfo_table *t;
++
++ if ( validated )
++ return table;
++
++ t = (struct hvm_sminfo_table *)HVM_SMINFO_PADDR;
++
++ if ( (t->total_length == 0) && (t->sm_count == 0) ) {
++ printf("Empty HVM SMBIOS info table\n");
++ validated = 1;
++ return table;
++ }
++
++ if ( validate_hvm_info_table((uint8_t*)t, t->total_length + sizeof(struct hvm_sminfo_table), t->signature, "SM INFO", 7) )
++ table = t;
++ else
++ printf("Bad or missing HVM SMBIOS info table\n");
++ validated = 1;
++
++ return table;
++}
++
++struct hvm_smtable_header * get_sminfo_by_type(struct hvm_sminfo_table *pa_sm, uint8_t type)
++{
++ struct hvm_smtable_header *header =
++ (struct hvm_smtable_header*)((uint8_t*)pa_sm + sizeof(struct hvm_sminfo_table));
++ uint32_t count;
++ uint8_t *ptr;
++
++ for (count = 0; count < pa_sm->sm_count; count++) {
++ if (header->sm_length == 0) {
++ printf("Invalid SMINFO tables passed to HVM loader.");
++ return NULL;
++ }
++ ptr = ((uint8_t*)header + sizeof(struct hvm_smtable_header));
++ if (ptr[0] == type)
++ return header;
++ header = (struct hvm_smtable_header*)(ptr + header->sm_length);
++ }
++ return NULL;
++}
++
+ /*
+ * Local variables:
+ * mode: C
+diff -Nur a/tools/firmware/hvmloader/util.h b/tools/firmware/hvmloader/util.h
+--- a/tools/firmware/hvmloader/util.h 2009-04-01 14:06:28.000000000 -0400
++++ b/tools/firmware/hvmloader/util.h 2009-04-01 14:50:19.000000000 -0400
+@@ -111,6 +111,10 @@
+ struct hvm_info_table *get_hvm_info_table(void);
+ #define hvm_info (get_hvm_info_table())
+
++/* HVM-build SMBIOS/ACPI info extensions */
++struct hvm_sminfo_table *get_hvm_sminfo_table(void);
++struct hvm_smtable_header * get_sminfo_by_type(struct hvm_sminfo_table *pa_sm, uint8_t type);
++
+ /* String and memory functions */
+ int strcmp(const char *cs, const char *ct);
+ int strncmp(const char *s1, const char *s2, uint32_t n);
+diff -Nur a/xen/include/public/hvm/hvm_info_table.h b/xen/include/public/hvm/hvm_info_table.h
+--- a/xen/include/public/hvm/hvm_info_table.h 2009-04-01 14:06:32.000000000 -0400
++++ b/xen/include/public/hvm/hvm_info_table.h 2009-04-01 14:24:54.000000000 -0400
+@@ -28,6 +28,12 @@
+ #define HVM_INFO_PFN 0x09F
+ #define HVM_INFO_OFFSET 0x800
+ #define HVM_INFO_PADDR ((HVM_INFO_PFN << 12) + HVM_INFO_OFFSET)
++#define HVM_INFO_MAX 0x400
++#define HVM_SMINFO_OFFSET 0x0
++#define HVM_SMINFO_PADDR ((HVM_INFO_PFN << 12) + HVM_SMINFO_OFFSET)
++#define HVM_SMINFO_MAX 0x800
++
++#define HVM_SMINFO_EXTENSIONS 1
+
+ struct hvm_info_table {
+ char signature[8]; /* "HVM INFO" */
+@@ -66,4 +72,15 @@
+ uint32_t high_mem_pgend;
+ };
+
++struct hvm_sminfo_table {
++ char signature[7]; /* "SM INFO" */
++ uint8_t checksum;
++ uint32_t total_length; /* beginning after this stucture */
++ uint32_t sm_count;
++};
++
++struct hvm_smtable_header {
++ uint32_t sm_length; /* beginning after this stucture, includes fixed table, string list, and terminator */
++};
++
+ #endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */
--- /dev/null
+diff -Nur a/tools/firmware/hvmloader/acpi/ssdt_pm.asl b/tools/firmware/hvmloader/acpi/ssdt_pm.asl
+--- a/tools/firmware/hvmloader/acpi/ssdt_pm.asl 2009-04-01 17:16:42.000000000 -0400
++++ b/tools/firmware/hvmloader/acpi/ssdt_pm.asl 2009-04-01 17:18:03.000000000 -0400
+@@ -95,6 +95,14 @@
+ P88, 8
+ }
+
++ /*OperationRegion for thermal zone */
++ OperationRegion (PRT4, SystemIO, 0x90, 0x04)
++ Field (PRT4, WordAcc, NoLock, Preserve)
++ {
++ P90, 16,
++ P92, 16
++ }
++
+ /* OperationRegion for Power Button */
+ OperationRegion (PBOP, SystemIO, 0x200, 0x01)
+ Field (PBOP, ByteAcc, NoLock, WriteAsZeros)
+@@ -529,6 +537,24 @@
+ }
+ }
+
++ Scope (\_TZ)
++ {
++ ThermalZone (THM)
++ {
++ Method (_CRT, 0, NotSerialized)
++ {
++ Store(\_SB.P92, Local0)
++ Return (Local0)
++ }
++
++ Method (_TMP, 0, NotSerialized)
++ {
++ Store(\_SB.P90, Local0)
++ Return (Local0)
++ }
++ }
++ }
++
+ /* Wire GPE events to notify power state
+ * changes like ac power to battery use etc.
+ */
+diff -Nur a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c
+--- a/tools/xenpmd/xenpmd.c 2009-04-01 17:16:42.000000000 -0400
++++ b/tools/xenpmd/xenpmd.c 2009-04-01 17:22:49.000000000 -0400
+@@ -93,13 +93,17 @@
+ extern void acpi_events_cleanup(void);
+
+ #ifdef RUN_IN_SIMULATE_MODE
+- #define BATTERY_DIR_PATH "/tmp/battery"
+- #define BATTERY_INFO_FILE_PATH "/tmp/battery/%s/info"
+- #define BATTERY_STATE_FILE_PATH "/tmp/battery/%s/state"
++ #define BATTERY_DIR_PATH "/tmp/battery"
++ #define BATTERY_INFO_FILE_PATH "/tmp/battery/%s/info"
++ #define BATTERY_STATE_FILE_PATH "/tmp/battery/%s/state"
++ #define THERMAL_TRIP_POINTS_FILE "/tmp/thermal_zone/%s/trip_points"
++ #define THERMAL_TEMPERATURE_FILE "/tmp/thermal_zone/%s/temperature"
+ #else
+- #define BATTERY_DIR_PATH "/proc/acpi/battery"
+- #define BATTERY_INFO_FILE_PATH "/proc/acpi/battery/%s/info"
+- #define BATTERY_STATE_FILE_PATH "/proc/acpi/battery/%s/state"
++ #define BATTERY_DIR_PATH "/proc/acpi/battery"
++ #define BATTERY_INFO_FILE_PATH "/proc/acpi/battery/%s/info"
++ #define BATTERY_STATE_FILE_PATH "/proc/acpi/battery/%s/state"
++ #define THERMAL_TRIP_POINTS_FILE "/proc/acpi/thermal_zone/%s/trip_points"
++ #define THERMAL_TEMPERATURE_FILE "/proc/acpi/thermal_zone/%s/temperature"
+ #endif
+
+ FILE *get_next_battery_file(DIR *battery_dir,
+@@ -448,44 +452,188 @@
+ xs_write(xs, XBT_NULL, "/pm/bst", val, 35);
+ }
+
+-int wait_for_and_update_battery_status_request(void)
++void update_battery_status(void)
+ {
+ DIR *dir;
+- int ret = 0;
+- unsigned int count;
+ struct battery_status status;
+
+- while ( true )
+- {
+- /* KN:@TODO - It is rather inefficient to not cache the file handle.
+- * Switch to caching file handle.
+- */
+- dir = opendir(BATTERY_DIR_PATH);
+- if ( !dir )
+- return 0;
++ /* KN:@TODO - It is rather inefficient to not cache the file handle.
++ * Switch to caching file handle.
++ */
++ dir = opendir(BATTERY_DIR_PATH);
++ if ( !dir )
++ return;
+
+- while ( get_next_battery_info_or_status(dir, BST, (void *)&status) )
+- {
++ while ( get_next_battery_info_or_status(dir, BST, (void *)&status) )
++ {
+ #ifdef RUN_STANDALONE
+- print_battery_status(&status);
++ print_battery_status(&status);
+ #endif
+- if ( status.present == YES )
+- {
+- write_battery_status_to_xenstore(&status);
+- ret = 1;
+- /* rethink this; though I have never seen, there might be
+- * systems out there with more than one battery device
+- * present
+- */
+- break;
+- }
++ if ( status.present == YES )
++ {
++ write_battery_status_to_xenstore(&status);
++ /* rethink this; though I have never seen, there might be
++ * systems out there with more than one battery device
++ * present
++ */
++ break;
+ }
+- closedir(dir);
+- xs_watch(xs, "/pm/events", "refreshbatterystatus");
+- xs_read_watch(xs, &count);
+ }
+
+- return ret;
++ closedir(dir);
++ return;
++}
++
++int open_thermal_files(char *subdir, FILE **trip_points_file, FILE **temp_file)
++{
++ char trip_points_file_name[64];
++ char temperature_file_name[64];
++
++ snprintf(trip_points_file_name, 64, THERMAL_TRIP_POINTS_FILE, subdir);
++ snprintf(temperature_file_name, 64, THERMAL_TEMPERATURE_FILE, subdir);
++
++ *trip_points_file = fopen(trip_points_file_name, "r");
++ *temp_file = fopen(temperature_file_name, "r");
++
++ if ( *trip_points_file == NULL || *temp_file == NULL )
++ {
++ if ( *trip_points_file )
++ {
++ fclose(*trip_points_file);
++ *trip_points_file = NULL;
++ }
++
++ if ( *temp_file )
++ {
++ fclose(*temp_file);
++ *temp_file = NULL;
++ }
++ return 0;
++ }
++
++ return 1;
++}
++
++/* Note: Below is the simplest approach based on studying the
++ * different thermal zones exposed by the OEMs at this point.
++ * In specific Dell E6*00, Lenovo T400, HP 6930p was taken into
++ * consideration before arriving at which thermal zone to expose
++ * to the guest. But, if we choose to expand our thermal zone
++ * implementation to be closer to the underlying firmware, we
++ * should revisit the below.
++ */
++void get_thermal_files(FILE **trip_points_file, FILE **temp_file)
++{
++ if ( open_thermal_files("/THM", trip_points_file, temp_file) )
++ return;
++
++ if ( open_thermal_files("/CPUZ", trip_points_file, temp_file) )
++ return;
++
++ if ( open_thermal_files("/THM1", trip_points_file, temp_file) )
++ return;
++
++ open_thermal_files("/THM0", trip_points_file, temp_file);
++}
++
++/* @TODO: KN: There is similar code in one other place.
++ * consolidate it to one place.
++ */
++int get_attribute_value(char *line_info, char *attribute_name)
++{
++ char attrib_name[64];
++ char attrib_value[64];
++ char *delimiter;
++ unsigned long length;
++
++ length = strlen(line_info);
++ delimiter = (char *) strchr( line_info, ':');
++ if ( (!delimiter) || (delimiter == line_info) ||
++ (delimiter == line_info + length) )
++ return 0;
++
++ strncpy(attrib_name, line_info, delimiter-line_info);
++ if ( !strstr(attrib_name, attribute_name) )
++ return 0;
++
++ while ( *(delimiter+1) == ' ' )
++ {
++ delimiter++;
++ if ( delimiter+1 == line_info + length)
++ return 0;
++ }
++
++ strncpy(attrib_value, delimiter+1,
++ (unsigned long)line_info + length -(unsigned long)delimiter);
++ return strtoull(attrib_value, NULL, 10);
++}
++
++int get_thermalzone_value(FILE *file, char *attribute_name)
++{
++ char line_info[256];
++ int attribute_value;
++
++ memset(line_info, 0, 256);
++ while ( fgets(line_info, 1024, file) != NULL )
++ {
++ attribute_value = get_attribute_value(line_info, attribute_name);
++ if ( attribute_value > 0 )
++ return attribute_value;
++ memset(line_info, 0, 256);
++ }
++
++ return 0;
++}
++
++void update_thermal_info(void)
++{
++ char buffer[32];
++ int current_temp, critical_trip_point;
++ FILE *trip_points_file = NULL, *temp_file = NULL;
++
++ get_thermal_files(&trip_points_file, &temp_file);
++ if ( trip_points_file == NULL || temp_file == NULL )
++ return;
++
++ current_temp = get_thermalzone_value(temp_file, "temperature");
++ critical_trip_point = get_thermalzone_value(trip_points_file, "critical");
++
++ fclose(trip_points_file);
++ fclose(temp_file);
++
++ if ( current_temp <= 0 || critical_trip_point <= 0 )
++ return;
++
++ snprintf(buffer, 32, "%d", current_temp);
++ xs_write(xs, XBT_NULL, "/pm/current_temperature", buffer, strlen(buffer));
++
++ snprintf(buffer, 32, "%d", critical_trip_point);
++ xs_write(xs, XBT_NULL, "/pm/critical_temperature", buffer, strlen(buffer));
++}
++
++void wait_for_and_update_power_mgmt_info(void)
++{
++ char **buffer;
++ unsigned int count;
++
++ update_battery_status();
++ update_thermal_info();
++
++ xs_watch(xs, "/pm/events", "refreshbatterystatus");
++ xs_watch(xs, "/pm/events", "refreshthermalinfo");
++
++ while ( true )
++ {
++ buffer = xs_read_watch(xs, &count);
++ if ( buffer == NULL )
++ continue;
++ if (!strcmp(buffer[XS_WATCH_TOKEN], "refreshbatterystatus")) {
++ update_battery_status();
++ } else if (!strcmp(buffer[XS_WATCH_TOKEN], "refreshthermalinfo")) {
++ update_thermal_info();
++ }
++ free(buffer);
++ }
+ }
+
+ #ifndef RUN_STANDALONE
+@@ -539,7 +687,7 @@
+ return 0;
+ }
+
+- wait_for_and_update_battery_status_request();
++ wait_for_and_update_power_mgmt_info();
+ acpi_events_cleanup();
+ xs_daemon_close(xs);
+ return 0;