diff options
93 files changed, 10730 insertions, 2722 deletions
@@ -1,7 +1,76 @@ ====================================================================== +Changes for U-Boot 1.1.4: +====================================================================== + +* Enable PCI on hmi1001 board + +* Fix return values of the jffs2 commands ls/fsload/fsinfo, + so we can use them to, e.g., check the existence of a file with + "if ls foo; then this; else that; fi" in the hush shell + Patch by Andreas Engel, 16 August 2005 + +* Coding style cleanup + +* Add support for Silicon Turnkey eXpress XTc (mpc87x/88x) board. + Patch by Dan Malek and Pantelis Antoniou, 15 Aug 2005 + +* Check return value of malloc in 440gx_enet.c + Patch by Travis B. Sawyer, 18 Jul 2005 + +* Add Sandburst Metrobox and Sandburst Karef board support packages. + Second serial port on 440GX now defined as a system device. + Add 'Short Etch' code for Cicada PHY within 440gx_enet.c + Patch by Travis B. Sawyer, 12 Jul 2005 + +====================================================================== Changes for U-Boot 1.1.3: ====================================================================== +* Minor code cleanup + +* Add forgotten new fils from latest VoiceBlue update + +* Make bootretry feature work with hush shell. + Caveat: this currently *requires* CONFIG_RESET_TO_RETRY to be set, too. + Patch by Andreas Engel, 19 Jul 2005 + +* Update Hymod Board Database PHP code in "tools" directory + Patch by Murray Jensen, 01 Jul 2005 + +* Make "tr" command use POSIX compliant; export HOSTOS make variable + Patch by Murray Jensen, 30 Jun 2005 + +* Fix Murray Jensen's mail address. + Patch by Murray Jensen, 30 Jun 2005 + +* Preserve PHY_BMCR during a soft reset. + Patch by Carl Riechers, 24 Jun 2005 + +* VoiceBlue update: eeprom tool can also store firmware version now. + eeprom.bin is runable by jumping at load address. + Patch by Ladislav Michl, 23 May 2005 + +* Move the AT91RM9200DK to the ARM Systems list. + Patch by Anders Larsen, 26 Apr 2005 + +* Eliminate calls of ARM libgcc.a helper functions _divsi3 and _modsi3 + Patch by Anders Larsen, 26 Apr 2005 + +* measure_gclk() is needed when DEBUG is enabled + Patch by Bryan O'Donoghue, 25 Apr 2005 + +* Add UPD-Checksum code, fix problem in net.c (return instead of break) + Patch by Reinhard Arlt, 12 Aug 2005 + +* esd PCI405 board updated + Patch by Matthias Fuchs, 28 Jul 2005 + +* esd WUH405 and DU405 board updated + Patch by Matthias Fuchs, 27 Jul 2005 + +* Fix problem in cmd_nand.c (only when defined CFG_NAND_SKIP_BAD_DOT_I) + Patch by Matthias Fuchs, 4 May 2005 + * Update AMCC Yosemite to get a consistent setup for all AMCC eval boards (baudrate, environment...). Flash driver fixed. Patch by Stefan Roese, 11 Aug 2005 @@ -29,6 +29,7 @@ D: ERIC Support N: Pantelis Antoniou E: panto@intracom.gr D: NETVIA & NETPHONE board support, ARTOS support. +D: Support for Silicon Turnkey eXpress XTc N: Pierre Aubert E: <p.aubert@staubli.com> @@ -198,10 +199,9 @@ D: Support for Samsung ARM920T S3C2400X, ARM920T "TRAB" W: www.denx.de N: Murray Jensen -E: Murray.Jensen@cmst.csiro.au +E: Murray.Jensen@csiro.au D: Initial 8260 support; GDB support D: Port to Cogent+Hymod boards; Hymod Board Database -W: http://www.msa.cmst.csiro.au/ourstaff/MurrayJensen/mjj.html N: Yoo. Jonghoon E: yooth@ipone.co.kr @@ -269,8 +269,9 @@ E: lo@routefree.com D: Support for DOS partitions N: Dan Malek -E: dan@netx4.com +E: dan@embeddedalley.com D: FADSROM, the grandfather of all of this +D: Support for Silicon Turnkey eXpress XTc N: Andrea "llandre" Marson E: andrea.marson@dave-tech.it diff --git a/MAINTAINERS b/MAINTAINERS index 2f1d10b..67f8bb4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -42,10 +42,6 @@ Jerry Van Baren <gerald.vanbaren@smiths-aerospace.com> sacsng MPC8260 -Rick Bronson <rick@efn.org> - - AT91RM9200DK at91rm9200 - Oliver Brown <obrown@adventnetworks.com> gw8260 MPC8260 @@ -182,7 +178,7 @@ Klaus Heydeck <heydeck@kieback-peter.de> KUP4K MPC855 KUP4X MPC859 -Murray Jensen <Murray.Jensen@cmst.csiro.au> +Murray Jensen <Murray.Jensen@csiro.au> cogent_mpc8xx MPC8xx @@ -219,6 +215,7 @@ Jon Loeliger <jdl@freescale.com> Dan Malek <dan@embeddededge.com> STxGP3 MPC85xx + STxXTc MPC8xx Eran Man <eran@nbase.co.il> @@ -281,6 +278,8 @@ Yusdi Santoso <yusdi_santoso@adaptec.com> Travis Sawyer (travis.sawyer@sandburst.com> + KAREF PPC440GX + METROBOX PPC440GX XPEDITE1K PPC440GX Peter De Schrijver <p2@mind.be> @@ -352,6 +351,10 @@ Rishi Bhattacharya <rishi@ti.com> omap5912osk ARM926EJS +Rick Bronson <rick@efn.org> + + AT91RM9200DK at91rm9200 + George G. Davis <gdavis@mvista.com> assabet SA1100 @@ -61,17 +61,17 @@ LIST_8xx=" \ ######################################################################### LIST_4xx=" \ - ADCIOP AR405 ASH405 bubinga \ + ADCIOP AR405 ASH405 bubinga \ CANBT CPCI405 CPCI4052 CPCI405AB \ CPCI440 CPCIISER4 CRAYL1 csb272 \ csb472 DASA_SIM DP405 DU405 \ ebony ERIC EXBITGEN HUB405 \ - JSE MIP405 MIP405T ML2 \ - ml300 ocotea OCRTC ORSG \ - PCI405 PIP405 PLU405 PMC405 \ - PPChameleonEVB VOH405 W7OLMC W7OLMG \ - walnut WUH405 XPEDITE1K yellowstone \ - yosemite \ + JSE KAREF METROBOX MIP405 \ + MIP405T ML2 ml300 ocotea \ + OCRTC ORSG PCI405 PIP405 \ + PLU405 PMC405 PPChameleonEVB VOH405 \ + W7OLMC W7OLMG walnut WUH405 \ + XPEDITE1K yellowstone yosemite \ " ######################################################################### @@ -91,7 +91,7 @@ LIST_824x=" \ debris eXalion HIDDEN_DRAGON MOUSSE \ MUSENKI MVBLUE OXC PN62 \ Sandpoint8240 Sandpoint8245 SL8245 utx8245 \ - sbc8240 \ + sbc8240 \ " ######################################################################### @@ -165,7 +165,7 @@ LIST_ARM7="B2 ep7312 evb4510 impa7 modnet50" ######################################################################### LIST_ARM9=" \ - at91rm9200dk cmc_pu2 integratorcp integratorap \ + at91rm9200dk cmc_pu2 integratorcp integratorap \ lpd7a400 mx1ads mx1fs2 omap1510inn \ omap1610h2 omap1610inn omap730p2 scb9328 \ smdk2400 smdk2410 trab VCMA9 \ @@ -197,7 +197,7 @@ LIST_arm=" \ " ######################################################################### -## MIPS Systems +## MIPS Systems (default = big endian) ######################################################################### LIST_mips4kc="incaip" @@ -209,6 +209,18 @@ LIST_au1xx0="dbau1000 dbau1100 dbau1500 dbau1550 dbau1550_el" LIST_mips="${LIST_mips4kc} ${LIST_mips5kc} ${LIST_au1xx0}" ######################################################################### +## MIPS Systems (little endian) +######################################################################### + +LIST_mips4kc_el="" + +LIST_mips5kc_el="" + +LIST_au1xx0_el="dbau1550_el" + +LIST_mips_el="${LIST_mips4kc_el} ${LIST_mips5kc_el} ${LIST_au1xx0_el}" + +######################################################################### ## i386 Systems ######################################################################### @@ -264,7 +276,7 @@ do ppc|5xx|5xxx|8xx|8220|824x|8260|83xx|85xx|4xx|7xx|74xx| \ arm|SA|ARM7|ARM9|ARM11|pxa|ixp| \ microblaze| \ - mips| \ + mips|mips_el| \ nios|nios2| \ x86|I486) for target in `eval echo '$LIST_'${arg}` @@ -29,10 +29,10 @@ HOSTARCH := $(shell uname -m | \ -e s/powerpc/ppc/ \ -e s/macppc/ppc/) -HOSTOS := $(shell uname -s | tr A-Z a-z | \ +HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \ sed -e 's/\(cygwin\).*/cygwin/') -export HOSTARCH +export HOSTARCH HOSTOS # Deal with colliding definitions from tcsh etc. VENDOR= @@ -647,6 +647,9 @@ SM850_config : unconfig SPD823TS_config: unconfig @./mkconfig $(@:_config=) ppc mpc8xx spd8xx +stxxtc_config: unconfig + @./mkconfig $(@:_config=) ppc mpc8xx stxxtc + svm_sc8xx_config: unconfig @ >include/config.h @./mkconfig $(@:_config=) ppc mpc8xx svm_sc8xx @@ -797,6 +800,12 @@ HUB405_config: unconfig JSE_config: unconfig @./mkconfig $(@:_config=) ppc ppc4xx jse +KAREF_config: unconfig + @./mkconfig $(@:_config=) ppc ppc4xx karef sandburst + +METROBOX_config: unconfig + @./mkconfig $(@:_config=) ppc ppc4xx metrobox sandburst + MIP405_config: unconfig @./mkconfig $(@:_config=) ppc ppc4xx mip405 mpl @@ -1626,7 +1635,7 @@ dbau1550_config : unconfig dbau1550_el_config : unconfig @ >include/config.h @echo "#define CONFIG_DBAU1550 1" >>include/config.h - @./mkconfig -a dbau1x00 mips mips dbau1x00 "" little + @./mkconfig -a dbau1x00 mips mips dbau1x00 ######################################################################### ## MIPS64 5Kc @@ -1740,7 +1749,7 @@ clean: rm -f tools/gdb/astest tools/gdb/gdbcont tools/gdb/gdbsend rm -f tools/env/fw_printenv tools/env/fw_setenv rm -f board/cray/L1/bootscript.c board/cray/L1/bootscript.image - rm -f board/trab/trab_fkt + rm -f board/trab/trab_fkt board/voiceblue/eeprom clobber: clean find . -type f \( -name .depend \ diff --git a/board/at91rm9200dk/flash.c b/board/at91rm9200dk/flash.c index 5220fcf..f6228ef 100644 --- a/board/at91rm9200dk/flash.c +++ b/board/at91rm9200dk/flash.c @@ -259,8 +259,7 @@ void flash_print_info (flash_info_t * info) break; default: printf ("Unknown Chip Type\n"); - goto Done; - break; + return; } printf (" Size: %ld MB in %d Sectors\n", @@ -275,8 +274,6 @@ void flash_print_info (flash_info_t * info) info->protect[i] ? " (RO)" : " "); } printf ("\n"); - -Done: ; } /*----------------------------------------------------------------------- diff --git a/board/cogent/README.cma286 b/board/cogent/README.cma286 index aeebc85..0345fea 100644 --- a/board/cogent/README.cma286 +++ b/board/cogent/README.cma286 @@ -65,5 +65,5 @@ PITRTCLK=65103.515625 (bloody hell!). If anyone finds anything wrong with the stuff above, I would appreciate an email about it. -Murray Jensen <Murray.Jensen@cmst.csiro.au> +Murray Jensen <Murray.Jensen@csiro.au> 21-Aug-00 diff --git a/board/esd/du405/du405.c b/board/esd/du405/du405.c index 2aa2b57..7db2a60 100644 --- a/board/esd/du405/du405.c +++ b/board/esd/du405/du405.c @@ -141,6 +141,20 @@ int board_early_init_f (void) } +int misc_init_r (void) +{ + unsigned long cntrl0Reg; + + /* + * Setup UART1 handshaking: use CTS instead of DSR + */ + cntrl0Reg = mfdcr(cntrl0); + mtdcr(cntrl0, cntrl0Reg | 0x00001000); + + return (0); +} + + /* * Check Board Identity: */ diff --git a/board/esd/pci405/pci405.c b/board/esd/pci405/pci405.c index cb458eb..d1b6807 100644 --- a/board/esd/pci405/pci405.c +++ b/board/esd/pci405/pci405.c @@ -77,10 +77,10 @@ int board_revision(void) */ cntrl0Reg = mfdcr(cntrl0); mtdcr(cntrl0, cntrl0Reg | 0x03000000); - out32(GPIO0_ODR, in32(GPIO0_ODR) & ~0x00180000); - out32(GPIO0_TCR, in32(GPIO0_TCR) & ~0x00180000); + out32(GPIO0_ODR, in32(GPIO0_ODR) & ~0x00100200); + out32(GPIO0_TCR, in32(GPIO0_TCR) & ~0x00100200); udelay(1000); /* wait some time before reading input */ - value = in32(GPIO0_IR) & 0x00180000; /* get config bits */ + value = in32(GPIO0_IR) & 0x00100200; /* get config bits */ /* * Restore GPIO settings @@ -88,18 +88,18 @@ int board_revision(void) mtdcr(cntrl0, cntrl0Reg); switch (value) { - case 0x00180000: - /* CS2==1 && CS3==1 -> version 1.0 and 1.1 */ + case 0x00100200: + /* CS2==1 && IRQ5==1 -> version 1.0 and 1.1 */ return 1; - case 0x00080000: - /* CS2==0 && CS3==1 -> version 1.2 */ + case 0x00000200: + /* CS2==0 && IRQ5==1 -> version 1.2 */ return 2; + case 0x00000000: + /* CS2==0 && IRQ5==0 -> version 1.3 */ + return 3; #if 0 /* not yet manufactured ! */ case 0x00100000: - /* CS2==1 && CS3==0 -> version 1.3 */ - return 3; - case 0x00000000: - /* CS2==0 && CS3==0 -> version 1.4 */ + /* CS2==1 && IRQ5==0 -> version 1.4 */ return 4; #endif default: @@ -393,3 +393,48 @@ int testdram (void) } /* ------------------------------------------------------------------------- */ +int wpeeprom(int wp) +{ + int wp_state = wp; + volatile unsigned char *uart1_mcr = (volatile unsigned char *)0xef600404; + + if (wp == 1) { + *uart1_mcr &= ~0x02; + } else if (wp == 0) { + *uart1_mcr |= 0x02; + } else { + if (*uart1_mcr & 0x02) { + wp_state = 0; + } else { + wp_state = 1; + } + } + return wp_state; +} + +int do_wpeeprom(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + int wp = -1; + if (argc >= 2) { + if (argv[1][0] == '1') { + wp = 1; + } else if (argv[1][0] == '0') { + wp = 0; + } + } + + wp = wpeeprom(wp); + printf("EEPROM write protection %s\n", wp ? "ENABLED" : "DISABLED"); + return 0; +} + +U_BOOT_CMD( + wpeeprom, 2, 1, do_wpeeprom, + "wpeeprom - Check/Enable/Disable I2C EEPROM write protection\n", + "wpeeprom\n" + " - check I2C EEPROM write protection state\n" + "wpeeprom 1\n" + " - enable I2C EEPROM write protection\n" + "wpeeprom 0\n" + " - disable I2C EEPROM write protection\n" + ); diff --git a/board/esd/wuh405/fpgadata.c b/board/esd/wuh405/fpgadata.c index 71fde48..fdc02e3 100644 --- a/board/esd/wuh405/fpgadata.c +++ b/board/esd/wuh405/fpgadata.c @@ -1,1725 +1,1818 @@ - 0x1f,0x8b,0x08,0x08,0x72,0xdc,0x88,0x41,0x00,0x03,0x77,0x75,0x68,0x34,0x30,0x35, - 0x5f,0x31,0x5f,0x30,0x30,0x2e,0x62,0x69,0x74,0x00,0xec,0xbd,0x7b,0x78,0x14,0xd7, - 0x95,0x2f,0xba,0x7a,0x57,0x21,0x4a,0xdd,0x2d,0x75,0x59,0x40,0x46,0x31,0x36,0x94, - 0x5a,0x82,0x34,0x72,0xab,0x69,0x1a,0x22,0xcb,0xb2,0xdc,0x2a,0x04,0x93,0x28,0x40, - 0x82,0xc6,0xc9,0x9c,0xcf,0x33,0xc9,0x75,0xda,0x0e,0xc9,0x61,0x7c,0x70,0x8e,0xe2, - 0xc9,0xbd,0x87,0x38,0x1e,0xa7,0xf4,0x30,0x88,0xc7,0x98,0x36,0x78,0x12,0x9c,0xf8, - 0x66,0x8a,0x47,0x62,0xec,0x90,0x9c,0x06,0xd9,0x46,0x18,0xc6,0x2e,0xb0,0xe2,0x88, - 0x87,0x41,0x71,0x3c,0x19,0x6c,0x13,0xd2,0x38,0xb2,0x2d,0x63,0x19,0xcb,0x98,0x38, - 0x92,0x85,0xd1,0x5d,0x7b,0xd7,0xa3,0xab,0xaa,0xab,0x05,0x99,0xf9,0xee,0xfd,0xe6, - 0xfb,0xee,0x68,0xfe,0x98,0x9d,0xaa,0x4d,0xb9,0xf6,0xea,0x5d,0x6b,0xfd,0xf6,0x6f, - 0xfd,0xf6,0xda,0x50,0x1c,0x1a,0xd6,0xff,0x0f,0xc0,0x77,0x07,0x88,0xff,0xeb,0xff, - 0x5c,0xb9,0x20,0xfe,0xe9,0xaf,0xce,0xfb,0x6a,0x3c,0x1e,0xfb,0xe6,0xd7,0x56,0xc0, - 0x9d,0x10,0x48,0xfc,0xfd,0xa7,0xe3,0x5f,0xff,0xf6,0xb7,0xe6,0x2d,0x58,0x00,0x5f, - 0xc3,0xff,0x15,0x8f,0x2f,0x98,0x3b,0x6f,0xde,0xdc,0xf8,0x7c,0x58,0x01,0xc5,0xf3, - 0x16,0xd4,0x27,0x6a,0xeb,0xe7,0xc5,0xe1,0xeb,0xe0,0x9b,0xbf,0x73,0x1c,0xff,0x9e, - 0x78,0xe4,0xaf,0xbf,0x11,0x07,0xc5,0x07,0x00,0x93,0xe3,0xbe,0x14,0xfd,0xff,0x81, - 0xb8,0x4f,0xf2,0x81,0xd2,0x58,0x13,0x07,0x8d,0xfe,0x6f,0x30,0xee,0x17,0xc7,0x41, - 0xb2,0xff,0x6f,0x5f,0x1c,0x64,0x68,0x01,0x79,0x23,0x94,0xc5,0xe1,0xca,0x7f,0x32, - 0xaf,0x98,0xcd,0x3f,0xb3,0xff,0xf8,0x51,0xa5,0x60,0xaf,0xdc,0x5f,0xe3,0x05,0xd5, - 0x6c,0x92,0xab,0x78,0xbe,0x4f,0x06,0xeb,0xf9,0xaf,0x5e,0xd5,0xf3,0x3f,0x34,0x9f, - 0xff,0xe7,0xf6,0x87,0xb2,0xab,0xe8,0x0e,0xc0,0x5b,0xef,0x43,0xfb,0x13,0xc0,0xf7, - 0x8b,0x80,0x1f,0x88,0x02,0xaa,0x57,0xa3,0xb1,0xd7,0xfc,0x87,0xda,0x03,0x97,0x61, - 0x5c,0x49,0x0e,0x87,0x56,0x72,0xe7,0xe1,0x0f,0xd0,0xd8,0x55,0xaa,0x71,0xf1,0x78, - 0x2f,0x24,0x5a,0x42,0x23,0xdc,0x05,0x72,0x5c,0xf9,0x74,0x3c,0x78,0x8a,0x8b,0x43, - 0xab,0xd9,0xbf,0xfc,0x9b,0x70,0x40,0x89,0xf5,0x05,0x76,0x71,0x31,0x78,0x8f,0x24, - 0xd4,0x60,0x4f,0x59,0x0c,0xc6,0x7a,0xab,0xb7,0x06,0x32,0xed,0xaf,0xf3,0xeb,0x94, - 0xb0,0x22,0x6c,0x26,0x12,0x6f,0x5a,0xb1,0x6f,0xd2,0x46,0xa1,0x1b,0x56,0x69,0x01, - 0x95,0x1c,0x87,0x6e,0x2e,0xd2,0x1b,0xf0,0x11,0x7c,0xdb,0xbf,0xac,0x6a,0x09,0x24, - 0xc8,0x20,0x74,0xc1,0x6c,0x41,0x48,0xb7,0x13,0x90,0xcc,0xe7,0xf3,0xbb,0xe1,0x00, - 0x94,0x1e,0x0a,0xec,0x6a,0x5f,0x85,0x8d,0xb0,0x56,0x9e,0xf9,0x4c,0x14,0x1b,0x31, - 0x25,0x90,0xc1,0xfe,0xeb,0x00,0x9f,0x9f,0x26,0x71,0xde,0x7c,0x9f,0xbf,0x9a,0x36, - 0x04,0x63,0x90,0xd4,0x96,0x47,0x38,0x6c,0xf0,0x37,0x2b,0x21,0x7c,0x7f,0x08,0xc2, - 0x5f,0xc8,0x9b,0x32,0x8b,0x34,0x38,0xac,0xd4,0xca,0x41,0x89,0x13,0x17,0x9b,0xfd, - 0x55,0xdf,0x41,0x18,0x87,0xc6,0x43,0x81,0x2c,0x77,0x10,0xde,0x83,0xef,0x2a,0xcb, - 0x87,0x2b,0x87,0x84,0x71,0xc0,0x7f,0x38,0xcc,0x8d,0xc0,0x65,0xb5,0x51,0x0b,0x65, - 0x03,0x83,0x90,0x32,0xfa,0xf7,0x8b,0xbb,0xd9,0xf3,0x43,0x3b,0x3b,0xa2,0x53,0xc7, - 0xa0,0xfe,0x78,0xa9,0xc2,0x29,0xd0,0x27,0x24,0x52,0xbb,0x33,0xdc,0x80,0x82,0xb7, - 0xe4,0xa0,0xca,0xc5,0x79,0xc9,0x1a,0x6f,0x94,0xc7,0xb7,0xd5,0x02,0x4f,0x90,0x98, - 0xfc,0x9c,0x24,0x0d,0x0b,0xf5,0x24,0x0a,0xbf,0xc9,0xd6,0xb6,0x95,0x64,0xc8,0x10, - 0x1c,0x90,0xa2,0x9a,0xa0,0x92,0xbd,0x38,0xfb,0xcd,0xf1,0x2e,0x83,0x6e,0x88,0x6a, - 0x01,0xc1,0xff,0x20,0x7f,0xa0,0x4a,0xda,0x13,0x10,0x88,0x06,0xea,0x42,0x49,0x16, - 0xe2,0xe4,0x97,0x90,0x51,0xa2,0xbe,0x88,0x48,0xea,0xf0,0x5b,0xd1,0xff,0x86,0xc5, - 0xdb,0x61,0x9f,0x52,0x93,0x0d,0xf4,0x91,0x19,0xb0,0x2f,0x2d,0xa9,0xc5,0x75,0xe4, - 0xab,0xca,0xbe,0x9d,0x1b,0x7b,0x8a,0x57,0x93,0xdf,0xc2,0x53,0xca,0x5c,0x55,0xb8, - 0x8d,0x6c,0xb5,0x9e,0xdf,0x2c,0x2c,0x93,0x3f,0x80,0x86,0x6c,0x20,0x4c,0x1e,0xac, - 0xea,0x56,0x33,0xd9,0x4d,0x50,0x79,0x18,0xb2,0x6a,0x3c,0x15,0x8c,0x73,0xc7,0x95, - 0x0b,0xd0,0x00,0xc1,0x34,0x57,0x46,0xcc,0xf9,0x20,0x4f,0x3b,0x28,0xa2,0x7d,0x7a, - 0x43,0x59,0x6e,0x48,0x1e,0x27,0x37,0x6a,0xc1,0xe1,0x29,0x07,0xe1,0x35,0xb1,0x56, - 0x45,0xfb,0x5c,0x82,0x71,0xb1,0xb1,0x73,0xf9,0x2b,0x5c,0x7f,0x91,0x69,0x1f,0x81, - 0x37,0xec,0xa3,0xa2,0xfd,0x9f,0x97,0x6a,0x95,0x50,0x17,0x27,0x91,0x3e,0x65,0xaf, - 0xbc,0x31,0xc3,0x65,0x61,0xc4,0x97,0x5c,0x88,0xb7,0xfc,0xd6,0xef,0xdb,0x57,0xfe, - 0x28,0xec,0x83,0x1a,0x2d,0xd0,0x1a,0x3e,0xcd,0xbf,0x75,0x6b,0x85,0xb2,0x34,0xce, - 0x7d,0x05,0xd6,0x42,0x85,0xe2,0x6f,0x25,0xa7,0xd4,0x27,0x23,0x78,0x2b,0x4b,0x12, - 0x96,0x3d,0x25,0xf8,0xb1,0x3e,0xde,0x95,0xe4,0x0c,0xfc,0x85,0x3a,0x2b,0xfb,0xa3, - 0x66,0x42,0x04,0x05,0x2a,0x52,0xc2,0x6a,0xf2,0x6f,0xda,0xbe,0x4c,0x4d,0x0a,0x6f, - 0x81,0xf5,0xfc,0x41,0x7e,0x23,0xda,0x13,0xed,0x5f,0x15,0xc6,0xf9,0x06,0x92,0x36, - 0x3d,0x4e,0x96,0x89,0x1d,0x20,0x29,0xfe,0x38,0x9d,0x81,0x29,0x34,0x75,0x15,0x29, - 0xb3,0x9e,0x9f,0x9d,0x36,0x08,0x1f,0x41,0x52,0x09,0xad,0xdc,0x32,0x08,0x2f,0x41, - 0xad,0xb2,0x49,0xe5,0x22,0x70,0x14,0xee,0x51,0x82,0xea,0x94,0x77,0x44,0x76,0x6b, - 0x47,0xa0,0x8e,0x37,0xc7,0xdb,0xec,0x53,0x61,0x04,0x92,0x10,0x52,0x2a,0xb3,0xc2, - 0x20,0x6d,0x68,0xdc,0xfb,0x70,0x09,0xbe,0x27,0x86,0x14,0xee,0xac,0x82,0xe3,0x95, - 0xf0,0xca,0x4b,0x60,0xce,0x7f,0x41,0xdc,0xe9,0x1b,0xa5,0x93,0xe4,0x87,0x1d,0x2b, - 0x84,0x51,0x48,0xa4,0x36,0xfd,0xd0,0xf7,0x4b,0x38,0x0b,0x89,0x85,0x68,0xf6,0x4f, - 0xf1,0xa3,0x15,0x49,0x79,0x79,0x9a,0x23,0xd6,0xf7,0xa2,0xf0,0x2b,0x60,0xbf,0x2f, - 0x26,0x0b,0xe9,0xea,0x9d,0xca,0xfe,0xa6,0xea,0x54,0x69,0x9a,0xbc,0x05,0xeb,0xe4, - 0x54,0xab,0x20,0x92,0xb9,0xf4,0xd3,0x93,0x03,0x69,0x2e,0x05,0xa2,0xd1,0xbf,0x6e, - 0x52,0x15,0xec,0x87,0x98,0x1c,0x49,0x17,0x61,0x23,0x45,0x9a,0x03,0xfd,0xe4,0x8f, - 0xc2,0xcf,0xa1,0xb2,0x39,0x92,0x26,0x51,0xdf,0x7e,0xf9,0x9b,0xf2,0xd2,0x96,0xa6, - 0x22,0x6b,0x3e,0x44,0x78,0x1e,0xf6,0x40,0x14,0x9f,0x5f,0xd4,0x09,0x7b,0xaa,0x23, - 0x4b,0xfe,0xf6,0xd6,0xf6,0x97,0xd5,0xb5,0x91,0x8a,0x25,0x42,0xda,0x1f,0xc4,0x5b, - 0x77,0xcb,0x81,0x16,0xd2,0xe4,0x33,0xe7,0xc3,0xea,0x92,0x94,0xd0,0x83,0xc3,0x0c, - 0x2a,0x9c,0x24,0x8c,0x48,0x09,0x61,0x79,0xfb,0xa2,0xac,0x32,0x28,0x55,0x76,0x09, - 0x78,0x85,0xfe,0xbe,0x3e,0x1c,0xef,0x0c,0xce,0x7c,0x9f,0xad,0xd7,0x0f,0x00,0x8e, - 0x77,0xe9,0xf2,0xfe,0x29,0xd8,0x88,0x26,0xe5,0xd2,0x34,0x47,0xaf,0x34,0x2c,0x09, - 0xbd,0xd4,0xc1,0x6e,0x2d,0x09,0x6d,0xee,0x78,0x73,0xb2,0x69,0xcf,0xf2,0x49,0xec, - 0x62,0x4b,0xa8,0x9f,0xab,0x82,0x7f,0x10,0xe6,0x37,0x85,0x5e,0xba,0x66,0x41,0xfa, - 0x45,0x29,0xd1,0x12,0x7c,0x18,0xff,0x21,0xfb,0xbe,0xd2,0x5c,0x91,0xcf,0xfc,0x7e, - 0xeb,0xca,0xb3,0xd0,0x03,0x31,0x69,0x83,0x4a,0x24,0x6c,0xd4,0x2a,0x81,0x07,0x48, - 0x85,0xdc,0xd5,0x12,0x16,0x85,0xf6,0x30,0xbb,0x25,0x08,0x4a,0xd9,0x83,0xd6,0xef, - 0xdb,0x0c,0x9d,0x6c,0xbc,0x81,0x34,0xe1,0xa1,0x5b,0x90,0xe4,0x80,0x48,0x16,0x93, - 0x36,0x9f,0x7a,0x5b,0xb9,0x18,0xee,0x85,0x3d,0x4a,0xb4,0xa9,0x59,0x3c,0x5c,0xe6, - 0x33,0xed,0xbf,0x95,0xdf,0xc9,0xec,0x19,0x48,0x17,0x45,0xf9,0xfd,0x30,0x9b,0xfe, - 0xc3,0x15,0xe8,0x76,0x24,0x79,0x65,0xba,0xe9,0x4d,0x71,0x3f,0x35,0x9d,0x48,0x7e, - 0x6a,0xcd,0x07,0x75,0x1a,0x7b,0x7f,0x39,0x34,0x75,0x51,0x15,0x3f,0x4a,0xdd,0x66, - 0x9a,0x5b,0x01,0x47,0x20,0x41,0x5f,0xfb,0x8d,0xf8,0xa8,0x92,0x94,0xa3,0x69,0x2e, - 0x62,0xf9,0xab,0x3e,0xdf,0x4e,0xbd,0xff,0xa3,0x81,0x21,0x78,0x5f,0x48,0xca,0x9b, - 0x44,0x8e,0x5d,0xd1,0xf0,0x1f,0x0e,0xf0,0xa3,0x12,0xde,0x4a,0x73,0x1f,0x59,0xfe, - 0x47,0x10,0xcd,0xf9,0x46,0xad,0x0d,0x89,0xf2,0xa8,0xc2,0x41,0xd7,0x30,0xd4,0x03, - 0x3a,0xa2,0xb3,0xcd,0x23,0xfa,0x4f,0xe3,0xb7,0xc6,0x1b,0x99,0x14,0x81,0x67,0xa8, - 0xb7,0x1c,0x24,0xbb,0xe0,0x59,0x72,0x43,0x46,0x78,0x02,0xbd,0xc7,0xb3,0x72,0xb8, - 0x07,0xdd,0xce,0xdb,0xf0,0x8c,0x1c,0x53,0x04,0x95,0x5b,0x62,0x9b,0x0f,0x86,0xff, - 0xa9,0x23,0xc1,0xdb,0xf6,0x34,0xa9,0x9d,0xb7,0xd5,0xf9,0x27,0xb5,0xec,0x69,0x8e, - 0x9c,0x0a,0xc4,0xc9,0x49,0xa9,0x3b,0xb5,0x4a,0x6b,0x8e,0x37,0xf9,0xad,0xf9,0xa6, - 0x88,0x5f,0x31,0xbe,0xdf,0xf6,0x53,0xf0,0x24,0xcc,0x51,0xf1,0x33,0x9c,0x0a,0xcf, - 0x41,0x65,0x5f,0x71,0x2b,0x39,0xed,0x7b,0x0a,0x6a,0xfa,0x84,0xbf,0x0f,0xaf,0x14, - 0xcd,0xfe,0x5d,0x5d,0xb7,0x8b,0x7f,0x52,0x6e,0xc9,0x86,0x6e,0xfb,0xd4,0x0c,0xb8, - 0xd8,0x16,0x97,0x96,0xc5,0xa7,0x7c,0x02,0x3e,0x56,0x6e,0x78,0x3d,0x70,0x7f,0xc7, - 0x19,0xf8,0x93,0xd2,0x78,0x31,0x3a,0xc2,0x55,0x87,0xcd,0xfe,0xc2,0x24,0xea,0x4f, - 0x1a,0xb3,0x21,0xf1,0xb3,0xbb,0xd4,0x8b,0xf4,0xeb,0xa3,0x6e,0x04,0xa7,0x41,0x79, - 0xe9,0x93,0xdc,0xdb,0xea,0x81,0x48,0xb2,0x3f,0xf4,0x64,0xc7,0xe1,0x76,0xd3,0x3e, - 0xc0,0x3f,0x4b,0xe3,0xd7,0x40,0xe8,0x93,0xdc,0xd3,0xf2,0xe1,0xf4,0xdf,0x63,0x3c, - 0x22,0xa5,0xf0,0x62,0xfa,0xc6,0x70,0x70,0x84,0x4b,0xe0,0x2d,0x7c,0xd4,0x08,0xa7, - 0xa9,0xa6,0xfd,0x77,0x95,0x5f,0x27,0xe3,0xfb,0x67,0x03,0xb7,0x73,0xb7,0xf6,0x5f, - 0x54,0xa4,0xb3,0x25,0xf7,0x56,0x2e,0x87,0x97,0x32,0x73,0xb3,0x42,0x2b,0x0e,0xf2, - 0x29,0x19,0x87,0xf6,0x2d,0x72,0x6e,0xaa,0xf5,0x7c,0x85,0xf9,0xab,0xbe,0xc0,0xaf, - 0xc9,0xc3,0x87,0x3a,0xa5,0x88,0x22,0xdc,0x43,0xbe,0x04,0x0f,0x48,0x35,0x3e,0xa1, - 0x95,0x5c,0x07,0x4f,0xd3,0xfe,0xad,0xe8,0xb1,0xcd,0x3f,0x89,0xdf,0x28,0x32,0x7b, - 0x8a,0x7e,0x10,0x54,0xd8,0xa5,0x15,0xdf,0x42,0x64,0xd8,0x02,0xd1,0xd9,0x91,0xcc, - 0xad,0x02,0xec,0x85,0x68,0x36,0x50,0x4f,0xfa,0xac,0xef,0x7d,0xd7,0xb4,0x21,0x11, - 0xc7,0xab,0x85,0x24,0xb2,0x5b,0x58,0x07,0xd7,0x2a,0xc1,0x27,0xb9,0x6f,0x6e,0x3d, - 0xa2,0x52,0xc7,0xcb,0x45,0xd1,0x35,0x35,0x1e,0x0e,0x7d,0xc8,0x9d,0xb3,0xe6,0x8f, - 0xe2,0x33,0xfc,0x6d,0xba,0xe3,0x0d,0x18,0x86,0xda,0x74,0x68,0x2f,0xf7,0xae,0x84, - 0x13,0x49,0x43,0x43,0x9d,0x87,0x11,0x99,0x35,0xb2,0xd6,0xfc,0xa9,0x10,0x69,0xbc, - 0x9b,0xab,0x2d,0xd7,0xb8,0x9b,0xc5,0x4b,0xed,0xf3,0x15,0x98,0xc7,0x35,0xc0,0xc7, - 0x30,0x8f,0x3e,0xbf,0x16,0xfe,0x41,0x6a,0xd4,0x36,0x0d,0x73,0xda,0x62,0x73,0xfe, - 0x6c,0xe3,0x69,0xd8,0x9d,0xad,0x05,0x1e,0x25,0x3b,0xa0,0x47,0x8c,0xa8,0x42,0x0f, - 0xa9,0x86,0xfd,0xca,0x27,0x00,0xe3,0x97,0x84,0x0d,0x74,0xad,0x19,0x92,0x95,0xad, - 0xf9,0x30,0x89,0x45,0x67,0x2d,0xd0,0xe5,0x8f,0xa2,0xa3,0x08,0x6f,0xf7,0x67,0x58, - 0xff,0x30,0x08,0x19,0xa2,0xb6,0xe0,0x54,0xd4,0x96,0x66,0x9a,0xb2,0xd6,0x7c,0x13, - 0xa6,0x06,0x71,0xbe,0x55,0x1d,0xdf,0x90,0x6e,0xef,0x54,0xc4,0x78,0x24,0x5d,0x9d, - 0xf0,0x0b,0x5d,0x19,0xa8,0xea,0x9b,0x13,0x47,0x37,0x9e,0xa1,0xa6,0x8b,0x93,0xc3, - 0x96,0xff,0x81,0x92,0x55,0x74,0xbc,0x47,0x43,0xed,0x89,0x39,0xd9,0x9e,0xbb,0x12, - 0x5b,0x1f,0xdc,0xcb,0xcd,0xe9,0x1b,0xbd,0x33,0x71,0xdd,0xb2,0xd6,0xca,0x2a,0xfc, - 0x22,0x1a,0x0f,0x61,0x60,0xd2,0x38,0x33,0x3e,0x6e,0x9b,0x84,0x41,0xca,0x37,0xf3, - 0x48,0xa8,0x7f,0x91,0xd6,0x79,0x09,0x92,0x9d,0x25,0xbf,0xe6,0x46,0xb4,0xd1,0xba, - 0x64,0x10,0xbb,0x0d,0xa3,0xa3,0x46,0x53,0x0f,0x73,0x83,0xc4,0xc2,0x33,0x93,0x2e, - 0x9b,0x93,0x64,0x48,0xfe,0xfd,0x82,0x84,0x54,0x3a,0xcc,0xc5,0x5f,0x38,0xe6,0x4b, - 0xfc,0xba,0x64,0xc4,0x77,0x01,0x7e,0x0f,0xf3,0xf9,0xe0,0xa9,0xca,0x1c,0xfe,0x51, - 0x44,0x8a,0x7f,0xea,0xb3,0x81,0x1e,0x72,0x49,0xd9,0x94,0xaa,0x55,0x85,0x8b,0xa4, - 0x42,0xd9,0xb4,0x6a,0x9b,0x86,0x86,0x7a,0x13,0x36,0xf5,0x6e,0xef,0x45,0x7c,0xa2, - 0x5a,0xbf,0xaf,0x00,0xc7,0x85,0x6e,0x7d,0x50,0xc7,0xb5,0xee,0xbf,0xfc,0x85,0xec, - 0x5f,0x40,0x9a,0xe5,0x1d,0xa9,0x95,0xc7,0x8b,0xe3,0x24,0x0b,0x5b,0xc4,0x88,0x2c, - 0x94,0x1d,0x25,0x96,0x7f,0xd3,0xa6,0xed,0xd6,0xed,0x99,0xc1,0x68,0xf5,0x33,0x12, - 0x4b,0xfb,0x33,0x65,0x5f,0x80,0x9f,0x41,0xb5,0x26,0x64,0x9a,0x06,0xe4,0x0d,0xd8, - 0x68,0x4e,0x93,0x8c,0xe5,0x7f,0xe0,0x61,0x63,0x3e,0x64,0xb8,0x21,0x61,0x8c,0xdc, - 0x07,0x0f,0x66,0xb8,0xff,0x01,0xef,0x60,0xb7,0x92,0x0c,0x77,0x0c,0x5e,0x83,0x3a, - 0x65,0x59,0x3a,0x00,0x96,0x7f,0x38,0x0b,0x74,0x3e,0xdc,0x8c,0x46,0xa8,0xbc,0x84, - 0x61,0xf1,0xef,0x45,0xec,0x86,0xf1,0x9d,0xbf,0x91,0x9a,0xe5,0x32,0xfc,0x09,0x6a, - 0x69,0x63,0x44,0x36,0xfb,0x6b,0x62,0xee,0xf9,0x38,0x51,0x13,0x2d,0x45,0x99,0x8e, - 0x48,0xf1,0x31,0x8e,0x5d,0x79,0x1b,0xc6,0x94,0xa4,0x16,0x4c,0x07,0x6c,0xf8,0x87, - 0xc7,0xf9,0x20,0xb1,0xf7,0xbf,0x04,0x9b,0x7c,0x61,0x28,0xba,0xb4,0x3e,0xca,0x6f, - 0xe2,0x6f,0x3c,0x14,0xa4,0xf8,0xe7,0x39,0x88,0xfd,0xba,0x26,0xc3,0xdd,0x63,0xfd, - 0xbc,0xd9,0x49,0x86,0xff,0x41,0xfb,0xf0,0x3b,0x30,0x1e,0x5c,0xfb,0x64,0x51,0x33, - 0x6c,0xe0,0xab,0x0f,0x61,0xbc,0xd6,0x7c,0x5b,0x20,0x58,0x86,0xf6,0xcc,0xe1,0x9f, - 0x94,0x6f,0x06,0xc3,0x03,0xd3,0xef,0x25,0x67,0xd2,0x93,0x95,0x6d,0x83,0xd7,0x7e, - 0x97,0xdc,0x0b,0x6b,0x95,0x8a,0x41,0x74,0x44,0x2f,0xc1,0x8d,0x9d,0x35,0x83,0xc5, - 0xb7,0x91,0xdb,0x6c,0xf8,0x27,0x28,0x77,0x23,0xfe,0x09,0xd5,0x93,0xf3,0x50,0xa9, - 0xc4,0x57,0x96,0xde,0xcc,0x7d,0x01,0x3a,0x3a,0x23,0x83,0xa5,0x71,0xee,0x88,0xf8, - 0x1b,0x68,0x90,0xd1,0x3e,0x36,0xfc,0x53,0xc2,0xf0,0x61,0x2f,0x45,0x3b,0xf2,0x7b, - 0xab,0x10,0x58,0xfe,0x91,0xdb,0x28,0x8f,0xcb,0x37,0xf6,0x2f,0xa7,0xf8,0x70,0xbc, - 0xb8,0xb1,0x0f,0x43,0x55,0x0e,0xff,0xec,0x9a,0x34,0x64,0xd9,0xa7,0xfd,0xd8,0xc2, - 0xc4,0xd6,0xd0,0xbe,0xa5,0x51,0x38,0x96,0x4d,0xf4,0x07,0x19,0x3e,0xd4,0x12,0x0a, - 0xfa,0xff,0x6a,0xc8,0xf9,0x7f,0x13,0xff,0x34,0xfd,0x4e,0x5b,0x0b,0x73,0x5e,0xde, - 0xc0,0xf0,0x8f,0xb4,0xa3,0x0f,0xfd,0xc9,0xbf,0x4a,0xfb,0x84,0x88,0x56,0xdd,0x4a, - 0xf6,0x5a,0xbf,0xaf,0x26,0x1a,0xf8,0x67,0x75,0xf8,0x04,0x0e,0x73,0x0e,0x0e,0xbc, - 0xec,0xab,0xc0,0xa5,0xbf,0x3e,0xe0,0x5f,0x5d,0x74,0x06,0x6f,0xdd,0xf1,0x7a,0xf9, - 0x6d,0xb8,0x66,0x31,0xed,0xdf,0x3c,0x35,0x67,0x4f,0xd8,0x00,0x91,0x6c,0x20,0x53, - 0x56,0xe2,0x43,0xfc,0xa3,0x09,0xf1,0xa2,0x17,0x95,0x6e,0x5f,0x75,0xd6,0x1f,0xf7, - 0x6f,0xb6,0xe6,0xe7,0xe0,0xb4,0x5d,0x70,0x81,0xba,0x59,0x95,0x1b,0x84,0xa3,0x7c, - 0x7d,0x7b,0x40,0x85,0xbf,0x25,0xeb,0x31,0xb0,0xc6,0x54,0xee,0x9c,0xf4,0x11,0xcc, - 0x57,0x97,0x3d,0xc1,0xd5,0xe7,0xf0,0x0f,0x64,0xcd,0x78,0xa4,0x61,0xa3,0x94,0xc2, - 0x1e,0x7a,0xa5,0x81,0x5e,0x39,0x2b,0x8e,0xc0,0xd3,0xf4,0x4a,0x0e,0xff,0x74,0x89, - 0x34,0x3e,0x26,0x28,0x68,0x19,0xf0,0xd1,0xb0,0x18,0x4a,0x4f,0xa9,0x92,0x8e,0xf8, - 0x58,0x58,0x1f,0x90,0x31,0xf0,0x2d,0x8c,0x3d,0xe4,0xc6,0x3f,0xb0,0x1d,0xfb,0x87, - 0x07,0x28,0xda,0x7f,0x29,0xf0,0xfd,0xb2,0x2a,0x6c,0xc4,0xe4,0x92,0x34,0x79,0x0f, - 0x1e,0x81,0xd2,0xdb,0x22,0x69,0xbf,0x64,0xc5,0xa3,0x72,0x9e,0xe2,0x9f,0x6a,0x1a, - 0xa6,0x07,0xe0,0x71,0xd8,0xde,0x1c,0x78,0x08,0xf1,0xf6,0xe3,0x40,0x11,0x14,0x59, - 0x21,0xed,0x5f,0x18,0x93,0xab,0x45,0x52,0x64,0xcd,0x37,0x81,0xa7,0x78,0x20,0x42, - 0x61,0x40,0xef,0x4e,0x5f,0x44,0x92,0x8f,0x95,0xb5,0x57,0xa9,0x6d,0x91,0xe8,0x92, - 0x62,0xbc,0x02,0x0f,0x61,0x03,0xf1,0xb6,0x35,0x1d,0x10,0x50,0xa4,0x70,0x74,0xf5, - 0x74,0x74,0xd9,0x76,0x55,0x4a,0x40,0xa8,0xbd,0x12,0xda,0x07,0xa5,0xa4,0x80,0x61, - 0x17,0x6f,0x61,0xa3,0x14,0xb8,0x52,0x62,0xe1,0x9f,0x69,0x34,0x9a,0xd7,0xca,0x93, - 0x71,0x74,0x4f,0x8e,0xce,0xc1,0x68,0xbe,0x79,0xdd,0x45,0x75,0x34,0x92,0x5c,0x32, - 0x39,0xed,0x1b,0x80,0xbf,0x82,0x46,0x0a,0x84,0xde,0x2c,0x32,0xe7,0xc3,0x56,0xc4, - 0x3f,0x1f,0x53,0x3c,0x90,0xfe,0xef,0x03,0xd2,0x68,0xbc,0x56,0xa6,0x40,0xa8,0xe5, - 0xc8,0x9d,0x89,0xbf,0x0d,0xd2,0xfe,0x1f,0x43,0xe3,0xb2,0x68,0x0b,0x57,0x64,0xcd, - 0x9f,0x3a,0x31,0x8b,0x6e,0x36,0x06,0x01,0x85,0x9c,0x6d,0xeb,0x89,0x87,0xb1,0xd1, - 0x2e,0xc9,0x5d,0x77,0xdc,0x8f,0xb0,0x87,0x30,0xfc,0x33,0xd5,0xdf,0xde,0x5e,0x9a, - 0xf3,0x3f,0x93,0x7a,0x75,0xfc,0x23,0x92,0xce,0x5d,0x7b,0x24,0xc4,0x3f,0xf3,0xca, - 0x78,0x32,0x4f,0x96,0xe4,0x08,0x1d,0xef,0x9e,0xa9,0xd1,0x94,0xbf,0xcc,0x9f,0xf3, - 0x3f,0xe5,0xd7,0x54,0xf9,0x74,0xfc,0x83,0xf6,0xdc,0x03,0x3f,0xa5,0x40,0xa8,0x4a, - 0xd9,0x4f,0xee,0xa2,0x88,0x71,0x80,0xa7,0xb7,0xfc,0x68,0x4f,0x6b,0x3e,0x6c,0x9f, - 0x6a,0xe0,0x99,0x34,0x47,0x81,0x53,0xed,0xe7,0x7e,0x94,0x0e,0xcc,0x4a,0x8f,0x92, - 0x3b,0xe5,0x8d,0x69,0xee,0x4d,0x76,0x0b,0x11,0x60,0xa4,0xd3,0x8a,0xbf,0x60,0xf5, - 0x1f,0x10,0x46,0x49,0xbd,0x1c,0x12,0xb9,0x5e,0xc4,0x4b,0x0d,0xf4,0xca,0x9b,0xca, - 0xa8,0xde,0x38,0xa7,0x98,0xcf,0x8f,0x20,0xfe,0x19,0x14,0xd9,0x7c,0xa3,0xd3,0x2c, - 0x21,0x32,0x20,0xd4,0x0f,0xb5,0x80,0x40,0x28,0x2b,0x8d,0xc0,0xde,0x20,0xc5,0x3f, - 0x9d,0xe6,0xfc,0x97,0x78,0x03,0xff,0xa8,0xe1,0x41,0x38,0x07,0xe1,0xae,0xa5,0x03, - 0x5f,0x5c,0x29,0x3c,0x03,0x09,0x84,0x3d,0xe4,0x1c,0x3c,0xab,0x54,0xaa,0x4b,0x54, - 0x22,0xe4,0xf0,0x0f,0xfa,0x9f,0x6d,0xc6,0xf7,0xe2,0xc3,0xf5,0x42,0x56,0x48,0x90, - 0x65,0x30,0x1f,0x52,0x08,0x7b,0x60,0x19,0xec,0x38,0x2b,0x0d,0x43,0x9c,0xf8,0x2d, - 0xff,0x53,0xe1,0xbb,0x0e,0x9e,0x62,0xdf,0x6f,0xd1,0x69,0xed,0x31,0xc9,0x47,0xa3, - 0x3f,0x45,0x44,0x2b,0x7a,0xf1,0xfb,0x3d,0x2d,0x3d,0xa5,0x49,0x9a,0x7f,0xb8,0x5d, - 0x90,0xad,0xe7,0x0b,0x33,0xe0,0x0d,0xfc,0x7e,0x43,0xab,0xc9,0x19,0xf5,0x83,0x43, - 0x7b,0xee,0x2c,0xa9,0x0b,0xdc,0xae,0x8c,0xef,0xda,0x33,0x18,0x5c,0xcd,0xfd,0x2d, - 0xe2,0x9f,0x6f,0x65,0xa3,0xab,0x03,0x7e,0x6b,0x95,0x2f,0x94,0xec,0xd6,0xd1,0x20, - 0xfa,0x13,0x65,0xac,0x39,0x59,0xbe,0x29,0xc3,0xed,0x96,0xc7,0xc4,0x9b,0x5f,0x0a, - 0x65,0xc8,0xdb,0xea,0xfb,0xf4,0xd6,0x93,0x81,0xc3,0x96,0xff,0x91,0x27,0x5d,0x96, - 0x3f,0xa6,0xf8,0x67,0x84,0x3b,0xbf,0xf0,0x98,0x32,0x9f,0x36,0xc6,0xe5,0x93,0x4a, - 0x22,0x1b,0x1c,0x21,0x97,0x65,0x1a,0xda,0xa2,0x5f,0x41,0x74,0x6e,0xd9,0xff,0x1a, - 0xea,0x7f,0xa2,0x83,0x38,0xde,0x33,0xf0,0xbc,0x32,0x67,0x10,0x97,0xe1,0x27,0x94, - 0xb5,0x7b,0x2b,0xb2,0xf4,0xfd,0xc5,0x7d,0x7c,0x8d,0x26,0xb4,0x90,0x6a,0xeb,0xf7, - 0xdd,0x0c,0x8f,0xfa,0xf4,0xf1,0x92,0xd3,0xca,0x16,0xa8,0x68,0x42,0xc7,0x75,0x1a, - 0xfd,0x95,0xa4,0x95,0xb7,0x92,0x97,0xe1,0x69,0xa8,0xe9,0x17,0x5a,0x11,0x8d,0x99, - 0xf6,0x4f,0x4d,0x3d,0x6e,0xf8,0x9f,0x26,0xe6,0x7f,0xc2,0xf8,0x1f,0x7a,0x17,0x0c, - 0xff,0xd3,0x1b,0x41,0xfc,0xa3,0x09,0x75,0xe1,0xdb,0xac,0xf9,0x29,0xe1,0xfa,0x9d, - 0x0e,0x2a,0x90,0x99,0x7c,0x89,0xfb,0x67,0x08,0x67,0x66,0x62,0xe0,0x90,0x4f,0x42, - 0xb7,0xd6,0x9c,0x59,0x34,0x80,0xa1,0x30,0x99,0x09,0xf6,0x04,0x96,0x58,0xef,0xd3, - 0x09,0x39,0xfb,0xf8,0xde,0xd1,0xf1,0x21,0x7a,0x60,0xd2,0x48,0xaf,0xbc,0x81,0x8f, - 0x6a,0xc8,0x60,0x43,0xb5,0xfc,0x4f,0x9b,0x78,0x09,0x3f,0xa2,0xf9,0x18,0xd4,0xa6, - 0x5c,0xf2,0x8d,0x93,0xf9,0xe8,0xd8,0x17,0x0d,0xc1,0x49,0xbc,0x82,0xf8,0xe7,0x82, - 0xfc,0x1e,0x4e,0x0c,0x6c,0xc0,0x62,0xb3,0xff,0x21,0xc4,0x3f,0xe8,0x4f,0x68,0xfc, - 0xc2,0xd5,0x3a,0x54,0xf7,0x04,0x0e,0x72,0xbb,0xe1,0x67,0xbe,0x30,0xc6,0x53,0xf2, - 0x7a,0x64,0x7f,0x3a,0xbc,0x57,0xc8,0xf8,0xe3,0x0e,0xfc,0xf3,0x38,0x84,0xb1,0x7f, - 0x11,0xed,0x8f,0xdf,0x63,0xcf,0xe6,0x21,0x36,0xde,0x66,0xca,0x57,0xec,0x87,0xb0, - 0x24,0x88,0x45,0x52,0x0e,0xff,0xf0,0x14,0xff,0x44,0xe8,0xb2,0xf4,0xf8,0x8a,0x6e, - 0x21,0x22,0xd2,0x89,0x57,0xba,0xa3,0x59,0x3d,0x8c,0x78,0xa0,0x0f,0xbf,0x38,0x09, - 0xa8,0xff,0xb1,0xf0,0x8f,0x12,0x8c,0x0a,0x6f,0x43,0xb8,0x37,0xb4,0x87,0x3b,0x0d, - 0xcf,0x89,0x89,0xdb,0x70,0x3e,0x5c,0x92,0x7f,0x75,0xc7,0xfc,0xd3,0xd7,0x65,0xf4, - 0x2f,0x02,0xe8,0xfb,0x5b,0xf8,0x47,0xbd,0x1e,0xf1,0x0f,0xdf,0x78,0x7c,0xf2,0x05, - 0xee,0x52,0xdb,0x38,0x20,0xec,0xd1,0xd6,0xee,0xd6,0xc6,0x74,0xd8,0xc3,0xf0,0x8f, - 0x4c,0xf1,0x4f,0x91,0x1d,0xff,0x5c,0x0e,0xd7,0x66,0x4b,0xb6,0x72,0xb7,0xc3,0xdb, - 0x6d,0xf3,0xa5,0x92,0xe6,0x29,0x31,0x71,0x5c,0x99,0x9f,0x0d,0xf5,0x71,0xf7,0xc3, - 0x49,0x01,0x1b,0x38,0x59,0x72,0xfc,0x8f,0x78,0x1e,0x9e,0x49,0xd7,0x22,0xfe,0x69, - 0xfa,0x85,0xb8,0x4e,0x09,0x57,0x08,0x5d,0x24,0x86,0x88,0x28,0x7c,0x36,0xb0,0x8b, - 0x44,0x95,0xb5,0x72,0x38,0x1b,0xd8,0xee,0xe0,0x7f,0x8e,0xe3,0xf7,0x58,0xa5,0x15, - 0x67,0xf0,0xb3,0xda,0x86,0x30,0x01,0xdd,0xec,0x46,0xb6,0x30,0x47,0x0f,0xb3,0x4c, - 0xea,0x88,0x44,0xb4,0x80,0x6a,0xe7,0x7f,0x10,0xff,0x3c,0x23,0x20,0xfe,0xdc,0xd3, - 0xbe,0x1b,0x1e,0x57,0xaa,0xe3,0x42,0x57,0xd3,0x6e,0xb8,0x99,0x5a,0x58,0x25,0x41, - 0x9c,0x51,0xd5,0x87,0xb0,0x91,0xe3,0x7f,0xe4,0x69,0x43,0xfc,0x47,0x5f,0xaa,0xd5, - 0x4a,0xae,0xe3,0x96,0x41,0x56,0x4b,0xc4,0x4b,0xba,0x38,0x8a,0xa0,0x12,0x5a,0x00, - 0xb8,0x55,0x70,0x0c,0xea,0x11,0x5a,0xbb,0xf8,0x9f,0x8f,0x14,0x0a,0x1a,0x3b,0x2e, - 0x21,0xba,0xdb,0x07,0x9b,0xb4,0xc0,0x7d,0x18,0xf1,0x9f,0xd3,0xd0,0xf1,0x5e,0x22, - 0xe3,0x80,0x40,0x28,0xcb,0xd9,0xf9,0x1f,0x04,0xe1,0x32,0x82,0xa2,0x83,0x5f,0x1b, - 0x12,0xdf,0x6e,0xdd,0x0b,0xe8,0xcd,0x0c,0x44,0xd4,0x83,0x13,0xef,0x18,0xfe,0x87, - 0x30,0x74,0x0e,0xdb,0xf9,0x1f,0x04,0xf9,0x61,0x8d,0xdb,0xd5,0x14,0xeb,0x0a,0xc8, - 0x92,0x24,0x00,0xc6,0xa3,0x6e,0x1e,0x11,0xd1,0x53,0x38,0xa3,0x36,0x01,0xa1,0x03, - 0xb9,0x60,0xcd,0x87,0x41,0xf4,0x3f,0x7b,0x41,0xd5,0x02,0x0b,0xc8,0x83,0xb0,0x6d, - 0x61,0x70,0x56,0x35,0xf8,0x8d,0x2f,0x08,0x68,0x04,0x27,0x68,0x28,0x89,0x8c,0xe4, - 0xf8,0x1f,0xc4,0x3f,0x4f,0x2b,0x15,0xd9,0xc0,0xbd,0x4d,0x33,0x94,0x07,0x94,0x12, - 0x49,0x18,0x2c,0x3b,0xa3,0xdc,0xa8,0xd4,0x0c,0x72,0x2b,0xe1,0x0c,0x05,0x42,0x94, - 0x2a,0x39,0x65,0xc7,0x3f,0xb8,0x4c,0x88,0x0f,0x85,0xea,0xb9,0x07,0x95,0xb3,0x4a, - 0x43,0x73,0xa9,0xc8,0x9d,0x80,0x0f,0x94,0x86,0x41,0x74,0xbc,0x43,0xca,0xf3,0x10, - 0xa7,0xf6,0x79,0x29,0x87,0x7f,0xae,0x3f,0x08,0xff,0x20,0xa2,0xd1,0x5a,0x71,0x98, - 0xef,0x8b,0x7b,0x64,0x5c,0xdd,0x37,0x50,0x44,0x84,0x66,0x41,0x8b,0x8d,0xcb,0xb4, - 0xe1,0xc2,0x3f,0x23,0xd4,0x1a,0x71,0xee,0x17,0xfc,0x11,0xdf,0x02,0x05,0xbd,0xb1, - 0x81,0x88,0xd6,0xe0,0x7a,0xe4,0x58,0x6b,0x92,0x3e,0xdf,0xc6,0xff,0xa0,0xff,0x19, - 0x60,0xfe,0x84,0xbb,0x0f,0xfe,0x15,0x5d,0x6f,0x44,0x26,0xa7,0x75,0x44,0x74,0x6b, - 0xfb,0x69,0x71,0x2d,0xdc,0xa2,0x05,0x52,0xfe,0x1c,0xff,0xa3,0xc0,0x8f,0xe1,0xc9, - 0x2e,0x8a,0x7f,0xc8,0x65,0xf8,0xbf,0xdb,0x6b,0x52,0xc2,0x6d,0xe4,0x8c,0x81,0x88, - 0xb0,0xb1,0x56,0xc5,0xc6,0xa0,0x8d,0xff,0x69,0x46,0xff,0xc3,0xfc,0xf9,0x82,0xa6, - 0x65,0xf0,0x50,0x6b,0x24,0x25,0xf8,0xc8,0xf1,0x49,0x16,0x22,0xda,0x02,0x74,0xbe, - 0xd9,0xf8,0x1f,0x8a,0x7f,0x2e,0x53,0x37,0x92,0xc2,0x1f,0xfd,0x8c,0xd2,0xa8,0x44, - 0x07,0x39,0x83,0x11,0xda,0xdd,0x31,0x48,0x8e,0x62,0x28,0xc1,0xf1,0xd6,0x39,0xf0, - 0x0f,0xa3,0x7d,0xd6,0x70,0x67,0x61,0x84,0xd4,0xf2,0x46,0x60,0xa2,0x11,0xaa,0x83, - 0xde,0x9a,0x01,0x0e,0xfc,0x23,0x88,0x03,0x66,0xbc,0xab,0x82,0x51,0x35,0x21,0x17, - 0xe9,0x7c,0x88,0x1e,0x01,0xcd,0x86,0x03,0xff,0x08,0x7a,0xfc,0x6d,0xfa,0x09,0xf5, - 0x06,0x08,0x93,0x30,0x10,0xef,0x87,0x6f,0xca,0xe8,0x91,0x06,0x0c,0x6a,0x82,0xcb, - 0xf1,0x3f,0xe5,0x93,0x4c,0xfc,0x53,0x34,0xcb,0x77,0x80,0x0f,0x37,0xfb,0x29,0x70, - 0x7a,0x84,0x76,0xdb,0x6a,0xf5,0x27,0x45,0x36,0xff,0xc3,0xc3,0x9e,0x08,0xc5,0x03, - 0x45,0x9d,0xc5,0xe8,0x9d,0x68,0x34,0xb7,0x10,0x42,0xaf,0x71,0xcb,0xc6,0xff,0xd4, - 0x95,0xa4,0xa0,0x47,0x42,0xfc,0xa3,0x52,0xfe,0x87,0xec,0xa5,0xb4,0x03,0x1d,0x6f, - 0xcc,0x40,0x80,0x12,0x0b,0xcd,0x33,0x2c,0xff,0xb3,0xf5,0xfa,0x01,0x9e,0xe2,0x99, - 0xe5,0xfd,0x38,0xba,0x3f,0xfa,0x1a,0xe5,0x60,0x3f,0xa5,0x35,0xd8,0x30,0x2b,0x07, - 0x32,0x08,0x84,0x64,0x07,0xfe,0xd1,0xf9,0x1f,0x84,0x85,0xfd,0xf8,0x05,0xfc,0x0e, - 0xe6,0xcb,0xc1,0x16,0x6e,0x85,0xf0,0x31,0x31,0xec,0x73,0xa4,0x9c,0x35,0x1c,0xf8, - 0x07,0x41,0x0e,0x85,0x3d,0xb8,0x1a,0xed,0x82,0x6a,0x7c,0x1f,0x46,0x04,0xc5,0x60, - 0x29,0xc5,0x3f,0xbb,0xe4,0x18,0x7e,0x33,0xe4,0x41,0xcb,0x9e,0xcd,0x14,0xff,0xc8, - 0x2a,0x0e,0xaa,0x8c,0xa7,0x78,0x72,0x21,0xc2,0xc2,0xc5,0xd6,0x78,0xd5,0x36,0x89, - 0x36,0xda,0xcb,0x72,0xf8,0x67,0x1a,0x85,0x31,0x61,0x6a,0x34,0x0a,0x3b,0xab,0x9b, - 0x97,0x7c,0x9f,0x50,0x0b,0xcf,0x96,0x97,0xf6,0x30,0x84,0x19,0x5b,0x18,0xc8,0xe3, - 0x7f,0x4e,0x51,0x58,0xdb,0x51,0x05,0x47,0x24,0xe9,0xd6,0xa0,0xc8,0xad,0x30,0x7e, - 0xd6,0xe7,0x07,0xc4,0x23,0xfa,0xef,0x9b,0xe3,0x7f,0x06,0x7d,0x3b,0xe1,0x7d,0x05, - 0x2f,0xfe,0x70,0xd1,0x80,0x81,0x8e,0xbe,0x38,0x20,0xd2,0xc6,0xf2,0xdc,0x7c,0x80, - 0x1c,0xff,0x43,0xf1,0xcf,0x88,0x8c,0xb0,0xb3,0x73,0x11,0x9a,0x5d,0xde,0x3b,0x35, - 0xd8,0xe9,0x93,0xf4,0x19,0xd8,0x5e,0x99,0xe5,0x07,0xf9,0x04,0x2c,0x57,0x02,0x6e, - 0xfe,0x27,0xac,0x2c,0xbd,0x3b,0x5c,0x2e,0x3d,0xbb,0x38,0xac,0x04,0x55,0x74,0x0c, - 0x0c,0x11,0xed,0xc4,0x78,0xb4,0x1e,0x6f,0xe1,0xfc,0xf7,0x3b,0xf0,0x0f,0xf3,0xc6, - 0x10,0x5e,0xac,0x3c,0xd3,0x27,0x69,0xb8,0x0c,0x0f,0xc2,0x0e,0xf6,0xbd,0x14,0x0d, - 0x91,0x0e,0xea,0x9a,0x28,0xfe,0x31,0xe7,0x9b,0x8a,0xf8,0xa7,0x11,0x2a,0xb4,0x40, - 0xff,0x9a,0xa9,0xf0,0x9c,0x5c,0xa1,0xad,0x1f,0x0e,0x7f,0x45,0xd8,0x47,0x6a,0xb4, - 0x0d,0x29,0x72,0xba,0x0b,0xfd,0x8f,0xb6,0xb4,0x35,0x1c,0xb1,0xfa,0xef,0x12,0xe8, - 0x7a,0x6d,0x5b,0x36,0x74,0x5b,0xe0,0xbf,0x05,0x3f,0x5c,0x33,0x2f,0x5b,0xb2,0x9a, - 0x9b,0x01,0x6f,0x51,0x46,0xe8,0x6f,0xb8,0x71,0xf2,0xfc,0xae,0x79,0xd9,0xd0,0x77, - 0xbe,0x66,0xe3,0x7f,0x10,0xff,0x7c,0x40,0xd0,0x69,0x88,0x68,0xed,0x0f,0xa0,0x41, - 0x9b,0x94,0xc9,0xf9,0x93,0x21,0x69,0xac,0x05,0x1b,0x4f,0x71,0x39,0xfc,0x03,0x7f, - 0x7d,0x99,0x1f,0x57,0x2a,0xb3,0xa1,0x53,0xdc,0xed,0x4d,0x27,0x95,0x05,0x03,0xc1, - 0x91,0x29,0xf7,0xf3,0x8d,0xe9,0x9b,0xcf,0x86,0x46,0x7c,0x97,0xe1,0x64,0xdb,0xfc, - 0xec,0xe4,0x11,0x4e,0x56,0x9d,0xf8,0xa7,0x62,0xa8,0xa3,0x85,0xfb,0x8c,0xb2,0x56, - 0xad,0x18,0xf4,0x53,0x1a,0x67,0x0b,0x1d,0x2f,0xbe,0x3f,0x3c,0x86,0x43,0x2b,0x7e, - 0x9f,0x54,0xe7,0xf8,0x1f,0x78,0x14,0x17,0xad,0x15,0xbd,0x81,0x7e,0xec,0xb6,0xa9, - 0xf5,0x53,0x7d,0xc5,0xc3,0x14,0xef,0x91,0x39,0xbd,0x81,0xbf,0xc2,0xfe,0x6b,0x61, - 0x1b,0x85,0x46,0xb2,0xe5,0x7f,0x24,0xfe,0x38,0xcf,0xec,0x29,0xae,0x59,0x0c,0x3b, - 0x94,0xaa,0x6c,0x71,0x03,0x06,0x3e,0xf6,0x7c,0x08,0x1f,0x47,0xc3,0x4a,0x34,0x14, - 0x0a,0x39,0xfe,0x67,0x12,0x46,0x2b,0x19,0x83,0xc8,0x56,0x8e,0x27,0xc7,0x96,0xd5, - 0x66,0x8b,0x33,0x1d,0x94,0x81,0xa9,0xa7,0x78,0xe6,0x92,0x70,0x92,0xc6,0x97,0x61, - 0xee,0xae,0x1c,0xff,0x03,0x68,0x0d,0x81,0x45,0x9f,0x37,0x84,0x2f,0x93,0xfa,0x5f, - 0x96,0x66,0x3a,0x76,0xe3,0x32,0x3f,0xa9,0xcd,0xfc,0xb1,0x61,0xa8,0x12,0x3b,0xff, - 0xe3,0xc3,0x90,0xcf,0xbc,0x77,0xff,0x94,0x8b,0x18,0xdd,0xf6,0x61,0xe0,0x23,0x07, - 0x31,0xf0,0xe1,0x95,0x4b,0xdc,0x25,0x7e,0x8c,0xa7,0xc0,0xc0,0x07,0x16,0xff,0xa3, - 0x30,0xfe,0x07,0xa3,0xd5,0xc1,0xb2,0x37,0x94,0xb6,0x3e,0x29,0x1b,0x8a,0x13,0x83, - 0xe1,0x79,0x94,0x21,0x22,0xb6,0xb4,0x97,0x72,0xf8,0x67,0x9a,0x7e,0xd7,0xff,0x28, - 0x51,0x97,0x1c,0x68,0x9b,0xbd,0x78,0x7a,0x86,0xec,0xf6,0xb1,0x6e,0x6a,0xae,0xbf, - 0xea,0xc2,0x3f,0x94,0x1f,0x23,0x72,0x78,0x43,0x3c,0xdc,0x77,0x53,0x86,0xe1,0x81, - 0x55,0x68,0x9f,0x26,0x13,0x3a,0x92,0x76,0x07,0xff,0x83,0x20,0xf0,0xf8,0x17,0xd2, - 0x95,0x3b,0x7b,0xc7,0x52,0xb5,0x7d,0x68,0x96,0x9f,0xc3,0x6b,0x5c,0xf2,0x65,0xf4, - 0x48,0xa7,0x71,0x68,0xb8,0x42,0x1f,0x0e,0x28,0x0e,0xfc,0xf3,0x27,0x3e,0x79,0x7c, - 0xf9,0xad,0x0f,0x0d,0xf0,0x1f,0x24,0x66,0xf6,0x7f,0xb5,0x75,0xd1,0x7d,0xd2,0x78, - 0xa4,0xb1,0x6f,0xb9,0xe6,0x33,0x4c,0x31,0xcc,0xad,0x74,0xe0,0x1f,0xc6,0xff,0x8c, - 0x72,0xff,0xa0,0xbc,0x17,0xaf,0x95,0x42,0xc3,0x95,0x27,0xe0,0x35,0x6d,0x3e,0x65, - 0x84,0x5e,0x82,0x4b,0x4a,0xe3,0xe1,0xe0,0x08,0x02,0xa7,0x1c,0xff,0x73,0x1e,0xd1, - 0xce,0xb5,0xd9,0x50,0x62,0xd1,0xa5,0xe6,0x4d,0xf1,0x6a,0x49,0xf8,0x38,0xfc,0x4d, - 0x1e,0x61,0x09,0x65,0x84,0xde,0x84,0x67,0xda,0x63,0xc3,0x42,0x0f,0xc9,0xda,0xd6, - 0x5f,0xd6,0xa0,0x96,0x29,0x3b,0xd0,0x71,0x2d,0x61,0x61,0x48,0xaa,0xa2,0x57,0x28, - 0xde,0x8b,0x6a,0x11,0xca,0x77,0x39,0xf9,0x9f,0x6a,0x6d,0x09,0x9a,0x11,0x61,0x64, - 0xb5,0x4f,0xc8,0x90,0x55,0xd7,0x74,0x30,0x33,0x16,0xbd,0x01,0x3d,0x62,0x4c,0xc3, - 0x2b,0xc3,0x96,0xff,0x91,0x8d,0xfc,0x17,0x1a,0x79,0x15,0xbc,0x03,0x0b,0xde,0xff, - 0x42,0x86,0x3b,0x2e,0xbc,0xc6,0xd7,0xd2,0xf9,0x43,0xd7,0xe3,0x0d,0x5a,0x30,0xc3, - 0xf5,0x5b,0xf3,0x27,0xab,0xe7,0xbf,0x18,0xff,0x43,0x5e,0x83,0xc6,0xe1,0x20,0x25, - 0x6a,0xbe,0xc7,0x18,0x21,0x9a,0xdf,0xa1,0xff,0x21,0x4a,0x74,0x98,0xcf,0xcf,0xf1, - 0x3f,0x53,0x86,0xc8,0x49,0xa8,0x3f,0x15,0xca,0x04,0xa2,0xca,0x18,0x4e,0x4b,0x9c, - 0x66,0x2b,0xe5,0xb7,0xf1,0x56,0x34,0xe3,0xc2,0x3f,0xc6,0x8f,0xde,0x00,0x21,0x12, - 0x1e,0x0e,0x8c,0xb6,0xcf,0x45,0xd8,0x16,0xd6,0x4a,0x33,0xb8,0x7e,0x5f,0x07,0x73, - 0xfb,0xf0,0xfd,0x73,0xf8,0xc7,0xc6,0xff,0xec,0x06,0x0e,0x22,0x10,0x88,0xcf,0xde, - 0x88,0x9f,0x49,0x84,0x5e,0x39,0x24,0xa9,0x78,0xab,0x2b,0x6e,0xc3,0x3f,0x06,0xff, - 0x33,0x88,0xd1,0xbf,0x14,0xd6,0xa6,0x2b,0x54,0x6c,0xfc,0xb8,0x73,0xad,0x5a,0x9c, - 0xf5,0xaf,0x26,0x17,0xa6,0xae,0x41,0x60,0x20,0xac,0x76,0xe1,0x1f,0x9a,0xff,0x42, - 0x7c,0xf2,0x20,0x74,0x64,0xea,0xbe,0x11,0x9a,0xcf,0x3d,0x38,0xe7,0x1d,0xb5,0x6e, - 0xa8,0x24,0xfe,0x17,0xcd,0xda,0xd7,0xc4,0x06,0xed,0xba,0xb8,0x0b,0xff,0xd0,0x49, - 0x35,0x39,0xc3,0xfd,0x4b,0x13,0xc2,0xe6,0x7f,0x0d,0xec,0xf9,0xec,0x2a,0x78,0x4f, - 0xdc,0xa7,0x85,0xde,0xe7,0x86,0x5b,0x2e,0x0b,0x8c,0x1a,0xf2,0xe2,0x7f,0x02,0x35, - 0x30,0xee,0x4b,0x94,0x23,0x50,0x1f,0x82,0x77,0x8a,0x92,0x1a,0x02,0xf5,0x9d,0x1a, - 0xe5,0x63,0x37,0x66,0xb8,0x73,0x39,0xfe,0x87,0xf9,0x9f,0x9b,0xd0,0xc8,0xe4,0xfa, - 0xb6,0xb5,0x2d,0x15,0xe9,0x07,0xbf,0x45,0x97,0x5d,0xc6,0x0a,0x4b,0xdd,0x17,0xac, - 0x19,0xc4,0x85,0xd8,0x85,0x1c,0xff,0x63,0xe6,0xbf,0x56,0x93,0x19,0xfc,0x63,0xea, - 0xdf,0xa5,0x02,0xf7,0x22,0xec,0x79,0xcc,0xc0,0x3f,0xbe,0x7d,0x4a,0x74,0x00,0xc7, - 0x3b,0xec,0xc0,0x3f,0xdd,0xba,0xf5,0x28,0x5a,0x4e,0x8d,0xe8,0x69,0x2f,0xdd,0xc2, - 0x27,0xb4,0x6e,0x8e,0xcd,0xb7,0x97,0x1c,0xfc,0xcf,0x47,0x3a,0xff,0x13,0xc1,0xc6, - 0x3d,0x19,0x46,0x04,0x9d,0xd3,0xaf,0xe0,0x2d,0x3e,0x89,0x11,0xa4,0xf2,0x23,0x17, - 0xff,0x53,0x6f,0xae,0xc7,0x9f,0xe5,0x4b,0x3b,0x2d,0xfc,0x33,0x99,0x46,0xa8,0x64, - 0x61,0xfc,0xc3,0x1f,0x21,0xb5,0x72,0xe8,0x51,0xee,0x2d,0x0c,0xa3,0x8c,0x08,0xc2, - 0x5b,0xcd,0x0d,0x94,0x28,0x38,0xec,0xe2,0x7f,0x62,0xf2,0x06,0x3d,0xfe,0x12,0x6d, - 0xc3,0x56,0xf2,0x02,0x0d,0xdc,0x34,0x22,0xbf,0xbb,0xf8,0x80,0x5c,0xda,0x12,0x49, - 0x63,0xa0,0x77,0xe2,0x9f,0x98,0x15,0xdf,0xe9,0xb2,0x62,0xc0,0xb7,0x4d,0xef,0x8f, - 0xf8,0x47,0x8e,0x35,0x61,0xff,0x17,0x9c,0xf8,0x47,0x8f,0xfe,0xfc,0xf6,0xb6,0x88, - 0x24,0x6f,0x28,0x6b,0xef,0x45,0xc4,0x48,0x11,0x02,0x1a,0x0a,0x6f,0x2d,0x11,0x44, - 0x1b,0xff,0x5c,0x17,0x4c,0x19,0xa3,0x0b,0x80,0xa2,0x51,0xfe,0x67,0x3b,0x8e,0x77, - 0x90,0x24,0x0c,0x0b,0xf8,0x92,0x42,0x54,0xe1,0x4e,0xd8,0xf0,0x8f,0xc1,0x6f,0x6c, - 0xde,0x31,0xa0,0x8e,0x56,0x3f,0x2b,0x6f,0xa2,0x61,0xfd,0x15,0x84,0x3d,0xac,0x31, - 0xea,0x63,0xa6,0xb0,0xe1,0x1f,0x9f,0x61,0x9f,0x87,0xb9,0x37,0xd2,0xa3,0x02,0xe3, - 0x7f,0xa6,0xc2,0x91,0x26,0x0b,0x1f,0x36,0x52,0xa2,0xec,0x05,0x17,0xfe,0x89,0x41, - 0xa0,0x9d,0x9c,0x55,0x7a,0x52,0xd5,0x3a,0x10,0x3a,0xc5,0x18,0xa1,0x26,0x9d,0xff, - 0x11,0x14,0x72,0xc2,0x8b,0xff,0xf9,0xa5,0x6f,0x8f,0x50,0x25,0x07,0x16,0x14,0xf1, - 0xd0,0xe6,0x33,0xf1,0x1e,0x8f,0xf3,0x41,0xb4,0xf9,0x1f,0x1d,0xff,0x18,0xfc,0xcf, - 0x7e,0xb8,0xab,0x85,0x01,0xa1,0x47,0x8c,0x2b,0xe2,0x7e,0x9d,0x58,0x7b,0x21,0x3f, - 0xff,0xa5,0xbf,0x6d,0xed,0xc2,0x50,0x3a,0x80,0x40,0xc8,0xba,0xa2,0xb2,0xfc,0xd7, - 0xa0,0xe5,0x7f,0x76,0xf9,0x76,0xe6,0xa1,0xdf,0x01,0x9f,0xd1,0x78,0x03,0x46,0xfb, - 0x74,0xfe,0xc7,0x89,0x7f,0xd0,0xfe,0x08,0x3b,0x55,0xd0,0x7c,0xb5,0xb8,0x82,0xe2, - 0x28,0xfe,0x49,0x40,0x89,0xce,0xff,0x30,0x22,0xee,0x68,0x7e,0xfe,0x8b,0xca,0x1d, - 0xd6,0xfb,0x6a,0x77,0x2e,0x1d,0x20,0xe5,0x40,0xf9,0x4c,0x8c,0x47,0xe7,0x94,0x7a, - 0x75,0x2e,0x25,0x82,0x8e,0xba,0xf0,0x0f,0xfb,0x3a,0x36,0x62,0x98,0x96,0x7a,0xa7, - 0xd7,0x92,0x65,0x02,0x0d,0xd3,0xf4,0x7b,0x81,0xf9,0x4a,0xb4,0x5f,0x88,0x63,0x7f, - 0x2b,0xbe,0x20,0xfe,0xa1,0x5f,0xeb,0x74,0xf4,0x3f,0xda,0x0f,0xe0,0xeb,0xf8,0xd9, - 0x56,0xb7,0xe0,0x32,0x64,0x16,0xfb,0x7e,0xe9,0x2d,0x19,0xbf,0xdf,0x41,0xeb,0xf9, - 0x14,0xff,0xd0,0xfc,0x57,0xe9,0x47,0xe4,0xc7,0xea,0xef,0xb3,0x88,0x76,0x56,0xe3, - 0x42,0xfb,0xbd,0x27,0x18,0x10,0x7a,0x55,0xa2,0xb7,0x82,0xab,0xb9,0x73,0x96,0xff, - 0x11,0xae,0xd7,0xfd,0xed,0xe4,0xa7,0xb8,0x4b,0x9d,0xef,0x08,0xc9,0x3e,0x74,0x5c, - 0xaa,0x30,0x76,0x0d,0xf3,0xc0,0x67,0x95,0x31,0xa9,0x41,0x9e,0x9b,0xb1,0xe3,0x1f, - 0x3d,0x7e,0x0d,0x84,0x3e,0xe6,0xce,0xcb,0x27,0xd3,0x89,0x05,0x18,0xc8,0x66,0xc0, - 0xff,0x50,0x92,0x34,0x7e,0x7d,0x28,0x5f,0xd2,0xe6,0xab,0xc1,0x51,0x04,0xea,0x39, - 0xfc,0x73,0x9d,0xce,0xff,0xdc,0x8b,0xa3,0xfb,0x8d,0x5a,0x91,0x0d,0xdd,0x47,0xca, - 0x70,0xd9,0x18,0xcd,0xe2,0xfb,0x9f,0x82,0x27,0xe5,0x8a,0x2e,0x44,0x44,0xe7,0x72, - 0xf9,0x05,0x30,0xf2,0x5f,0x74,0x74,0x3f,0x80,0x3b,0x84,0x40,0x82,0x3c,0xea,0x33, - 0xfc,0xd5,0xcb,0x70,0x50,0xa8,0xd0,0x9a,0x5b,0x8b,0xb4,0x1c,0xfe,0xb1,0xf8,0x1f, - 0x72,0x5c,0x44,0x33,0x66,0x71,0x7d,0xa1,0x98,0x8c,0xd0,0xf3,0x90,0x29,0x96,0x34, - 0xf4,0x48,0xf6,0xfc,0x97,0x11,0x5f,0x68,0xf4,0xf9,0x67,0xdf,0xf6,0xd7,0x37,0xa4, - 0xa7,0x77,0x31,0x0f,0x1c,0xca,0x4c,0x3e,0x0f,0x63,0x93,0x12,0x32,0xc6,0xaf,0xdc, - 0xfb,0x30,0xfc,0xc3,0xee,0xb2,0xf8,0x85,0x1f,0x26,0x5d,0x0d,0x2d,0xf5,0x25,0x0f, - 0x51,0x22,0x48,0xa6,0xf9,0x62,0x96,0xff,0x32,0x9f,0xef,0x13,0x2f,0xb1,0xfc,0x17, - 0x3e,0x7f,0x88,0x1f,0xc3,0x30,0xb7,0xbc,0x05,0xe7,0xfa,0x49,0xb8,0xf1,0x50,0x09, - 0x86,0x39,0x09,0xe3,0xfb,0xca,0x8d,0x34,0xff,0x65,0xf1,0x45,0x66,0xfe,0x4b,0xe7, - 0x7f,0xea,0xeb,0xbe,0xbc,0x91,0x93,0xc4,0x9f,0xf9,0x58,0x44,0xc3,0xa5,0xd0,0xe1, - 0xa8,0xec,0x77,0xe7,0xbf,0x7e,0xa6,0xc7,0xbb,0xa1,0x49,0x37,0x43,0x6c,0x92,0x7f, - 0x2b,0x79,0x42,0xdc,0x00,0xdf,0xd4,0xd8,0x7a,0xed,0x66,0x31,0xa6,0x60,0xbc,0xcb, - 0xba,0xf0,0x4f,0xd5,0xd1,0x62,0xb4,0x4f,0xe7,0x96,0xb8,0x54,0x5e,0x2c,0xb6,0xb7, - 0x1f,0xda,0x21,0xaf,0x3a,0x35,0x3d,0x4e,0x9a,0xa9,0xa1,0xa8,0x50,0xc1,0x99,0xff, - 0x7a,0x07,0x62,0x7d,0xd4,0x3e,0xc2,0xf8,0x1d,0xf5,0x62,0x68,0x73,0xa5,0xaa,0x9c, - 0x94,0x6b,0x5f,0x7d,0x20,0xc3,0x0d,0x94,0x8f,0xe8,0xf1,0x37,0x97,0xff,0x52,0x8b, - 0xe9,0x78,0x93,0x47,0x37,0xed,0xe1,0x3e,0x56,0xc7,0xe4,0x9b,0xcb,0xf1,0x7b,0x94, - 0x5a,0xc6,0x17,0x32,0x98,0x37,0x0c,0x17,0x71,0x7d,0x9d,0xc7,0xff,0xfc,0x91,0xb2, - 0x3d,0xf7,0x70,0x0d,0xca,0xaf,0x20,0xd1,0x57,0x72,0x81,0xbb,0x4f,0x39,0x59,0x35, - 0xbf,0xaf,0xe4,0x75,0x2e,0x89,0x86,0x6a,0x3c,0x1c,0x75,0xe3,0x9f,0xfd,0x4a,0x38, - 0xbb,0xe1,0x51,0xee,0x7f,0xfa,0x5e,0x3d,0x1c,0x6e,0x15,0x0e,0x92,0x1a,0xd8,0x90, - 0xae,0x8e,0x0b,0x55,0x87,0xa3,0xea,0xa6,0xf4,0xdc,0x7c,0xfc,0xb3,0x87,0x7e,0x4d, - 0xf3,0xfc,0x7f,0x09,0xdd,0xa2,0xda,0x5b,0x5c,0x41,0x96,0xc9,0x0f,0x41,0x55,0x6f, - 0xf1,0x14,0x8c,0x50,0x1d,0x94,0x0f,0x74,0xe3,0x9f,0xfd,0xca,0x9d,0xda,0xd2,0x3d, - 0xe1,0x15,0x74,0x21,0x23,0x17,0x67,0xca,0xa2,0xe8,0x7f,0xaa,0x09,0xba,0x1d,0x1a, - 0xd1,0xbe,0xe9,0xc4,0x3f,0x80,0xf8,0x07,0xd7,0x8f,0x87,0x66,0xee,0xfe,0xec,0x2a, - 0xb2,0x7f,0x71,0xfc,0xd7,0x25,0xfb,0x71,0xbd,0xf3,0x9a,0x92,0xe8,0x2f,0xd9,0xc5, - 0x45,0xc9,0x31,0xb4,0x0f,0xce,0x1f,0x2d,0x97,0xff,0x42,0xfc,0xf3,0xb1,0xf0,0x9c, - 0x16,0x1a,0xe4,0x1e,0x85,0x33,0xc5,0x8d,0x08,0x4b,0xb8,0x63,0xe4,0x9d,0x34,0xc6, - 0xbb,0xb7,0x71,0x06,0x8e,0x21,0x5e,0xca,0xcb,0x7f,0x8d,0x2a,0xf5,0x5a,0x69,0x15, - 0x86,0xf5,0xb3,0x72,0xfd,0xdb,0x21,0x89,0x8b,0x8a,0x67,0xe5,0xba,0x7e,0x74,0xcb, - 0x51,0xec,0x5f,0x4f,0x9f,0xef,0xc4,0x3f,0x7b,0x30,0x0c,0xa1,0x93,0x89,0x91,0x27, - 0x20,0xdc,0xff,0xf9,0x0c,0xe2,0x67,0x43,0xb6,0x14,0xa5,0x89,0x72,0x4a,0x24,0x5e, - 0xb0,0x7e,0x5e,0x13,0xff,0xf8,0xe3,0x45,0x7d,0xd2,0x0e,0x2d,0x9a,0xbe,0x09,0x03, - 0x13,0x6c,0xc7,0x08,0x2e,0x50,0xbe,0xab,0x5b,0xb7,0x8f,0x13,0xff,0x3c,0xa7,0x7c, - 0x6a,0x50,0x18,0x2d,0xba,0x36,0xbb,0x76,0xd7,0xac,0x95,0x9f,0xbc,0x8d,0x7c,0x02, - 0xd6,0x28,0x77,0xa4,0x84,0x95,0x4d,0x14,0x1a,0xcd,0xca,0x16,0xbb,0xf1,0x4f,0x37, - 0x24,0x69,0xb6,0xeb,0x05,0xed,0x0f,0x6a,0x43,0xa6,0x04,0x02,0x74,0x7d,0x57,0xa7, - 0x45,0xe3,0x1c,0x83,0x46,0x5a,0xd0,0x8d,0x7f,0x3e,0x86,0xfa,0xde,0x99,0x99,0xc0, - 0xcb,0xf2,0x98,0x78,0x13,0x8d,0x47,0x43,0x54,0xf6,0xb3,0x18,0x1d,0x0b,0xd5,0xff, - 0xdc,0xfc,0x52,0x01,0xfc,0xc3,0x09,0xfc,0x2b,0x90,0x51,0x4a,0x32,0x01,0x09,0x8e, - 0x2a,0x09,0x2d,0x88,0xf6,0x87,0xef,0xa6,0x6a,0xfb,0x4b,0xf2,0xf1,0x0f,0x7a,0x8f, - 0xf8,0x94,0xdb,0xf0,0xd7,0xff,0xb4,0x86,0xde,0x32,0x0e,0xbf,0xa5,0xfc,0x70,0x0a, - 0x57,0x58,0xdd,0x82,0xd4,0xe7,0x81,0x7f,0xee,0x66,0xf8,0x07,0x1e,0x50,0x2a,0xd4, - 0xe2,0x08,0xb9,0x1d,0xb6,0x28,0x15,0x59,0xa1,0x8e,0x29,0xa0,0x6a,0x06,0x8b,0xf3, - 0xf1,0x8f,0x8e,0xb7,0x17,0x6f,0x51,0xaa,0x06,0x84,0x9b,0xd8,0xfa,0x0b,0x1b,0x71, - 0x44,0xc8,0x14,0x1a,0x09,0x4e,0xfc,0x33,0x08,0x1f,0x49,0x94,0xed,0x99,0x5c,0x4d, - 0x8e,0xb6,0xc5,0xb7,0xd5,0xd0,0xf5,0xf2,0xab,0xb0,0x57,0x89,0xaa,0x01,0x8a,0x88, - 0x9e,0x55,0x4a,0x54,0xce,0x8e,0x7f,0x54,0x1d,0xe4,0xac,0xa3,0x30,0x80,0x26,0x26, - 0x60,0x91,0xa2,0x30,0x44,0xa4,0x71,0x34,0x54,0x2d,0xf0,0xc0,0x3f,0xba,0xa8,0x63, - 0x36,0x1c,0x51,0xea,0x75,0x22,0x88,0xe6,0x3b,0x98,0x30,0xe6,0x10,0xec,0xa5,0xf1, - 0xdd,0x85,0x7f,0x04,0xc4,0x3f,0x22,0x99,0x24,0xb7,0xb5,0x84,0x5b,0x4b,0x68,0x7f, - 0x3d,0xff,0x55,0xc6,0x32,0x62,0x34,0x11,0x96,0x75,0xe5,0xbf,0x30,0x3a,0x67,0xfc, - 0x0d,0x95,0x9b,0x8a,0x6f,0x58,0x82,0x0b,0xd5,0x05,0x18,0x24,0xe7,0xca,0xfe,0x7e, - 0xa2,0xf7,0xa7,0xf1,0xda,0x9a,0x6f,0x02,0x18,0xf8,0x67,0xf3,0x9a,0xa9,0xea,0x03, - 0x73,0x2a,0x96,0x14,0xdf,0xfa,0xe0,0xd4,0xed,0x0f,0x44,0x6a,0xb0,0x81,0x40,0x08, - 0x11,0x11,0x4d,0x84,0xd9,0xf0,0x8f,0x90,0x62,0x78,0x23,0xd4,0x3e,0x45,0x6a,0xeb, - 0x92,0xea,0x85,0x4d,0xed,0x9c,0xa4,0x74,0xd1,0xb4,0xd7,0x61,0x2e,0x4b,0xfa,0xa4, - 0x04,0x8d,0xbf,0x27,0xac,0xf9,0x43,0xf5,0x3f,0x2c,0x9f,0xd5,0x1f,0x18,0x20,0x06, - 0xda,0xd9,0xa9,0xea,0x88,0xa8,0x63,0x60,0xa7,0x11,0xe8,0xed,0xfc,0xcf,0x4e,0x1f, - 0xeb,0x5f,0xc6,0x3d,0xa9,0x7e,0x2c,0xcd,0x93,0x63,0xd8,0x5f,0x7e,0x45,0x48,0x34, - 0x05,0xbf,0xcf,0xcd,0x82,0xd1,0x48,0x62,0x49,0xc8,0x13,0xff,0x28,0x24,0x02,0x5d, - 0x62,0xad,0x58,0xf2,0x00,0xae,0x46,0xbb,0xe4,0xb0,0x28,0x74,0xe2,0x32,0xb3,0x07, - 0x1b,0xc5,0x0e,0xfc,0xc3,0x1b,0xf8,0xe7,0x21,0xd2,0x5b,0xbe,0x8d,0x97,0x16,0xfb, - 0xc5,0x26,0x1c,0x26,0xa4,0x64,0xe1,0x13,0x84,0x57,0x28,0xc3,0x16,0x70,0xe1,0x1f, - 0xde,0xc0,0x9f,0x2b,0xda,0xd7,0xc1,0x6c,0xb9,0x38,0x4d,0xbe,0x0e,0xeb,0x70,0xb5, - 0x0a,0xe9,0x76,0x46,0x0d,0x2d,0x2c,0x4e,0x37,0xd9,0xf0,0xcf,0x54,0x7a,0x11,0xdf, - 0xbf,0x9c,0xfb,0x25,0x23,0xb2,0x8a,0x36,0xc3,0x9b,0x70,0x44,0x0a,0xcb,0xc1,0x87, - 0x11,0x38,0x8d,0xe2,0xef,0x1b,0xb2,0xe3,0x9f,0x27,0x00,0x2f,0x8a,0x0c,0xef,0xed, - 0x84,0xb3,0x70,0x69,0xe1,0x4c,0x91,0xeb,0x6c,0x3f,0xab,0x1c,0x94,0xe7,0x5e,0x63, - 0x20,0xa2,0x12,0x77,0xfe,0x4b,0xc7,0x9f,0x53,0x2a,0xf0,0xb3,0x4e,0x90,0x12,0x9a, - 0xff,0x1a,0x6c,0xaa,0x85,0x8d,0x9d,0x38,0xdf,0x86,0x11,0x08,0x21,0x34,0x3a,0xea, - 0xc8,0x7f,0x5d,0x9e,0x4a,0xf1,0x0f,0xa9,0x83,0x5f,0xec,0xad,0x4c,0x47,0xd4,0xa2, - 0x08,0xbf,0x1e,0x2a,0x29,0xec,0xa1,0xd0,0xa8,0x96,0x36,0xfa,0x72,0xf8,0xe7,0x81, - 0x65,0xb0,0x43,0x66,0x6c,0x4f,0x49,0x55,0x1b,0x54,0xa5,0x96,0xc4,0xfd,0x1b,0xa1, - 0x83,0x8f,0x28,0xd5,0x71,0xb6,0x30,0xaf,0xa2,0xf1,0xfa,0xa8,0x94,0x97,0xff,0x1a, - 0xf6,0x97,0x8b,0x15,0x30,0x8b,0x20,0x5a,0xd8,0x08,0x6b,0xa1,0x58,0xf1,0x27,0x08, - 0x85,0x16,0x55,0x67,0xf1,0xfb,0xed,0x73,0xe4,0xbf,0x98,0xfe,0x67,0x35,0x57,0x0a, - 0xbf,0x54,0x9e,0x4a,0x85,0xea,0x10,0x08,0x3d,0xaf,0x6c,0x55,0x4b,0x57,0x77,0xfc, - 0x58,0xf9,0x40,0xf9,0xf4,0xd9,0xd2,0xd5,0xdc,0xd1,0x1c,0xfe,0xf9,0xe4,0x6e,0x78, - 0xdb,0xc8,0xef,0x60,0xa3,0x5e,0x46,0xef,0x71,0x37,0x5d,0x6f,0x2a,0x9f,0xdf,0xe7, - 0x63,0xf1,0x9d,0xde,0x72,0xe4,0xbf,0x18,0xfe,0xd9,0x34,0xca,0xc5,0xe0,0x45,0x65, - 0x4a,0xb6,0x64,0x84,0x4b,0xa6,0x36,0xec,0x49,0x6e,0xfb,0xfc,0x48,0x65,0x23,0xb0, - 0x44,0xc6,0x08,0xd7,0xef,0xc8,0x7f,0x3d,0xa5,0xe3,0x9f,0xd2,0xde,0xb6,0x27,0xe6, - 0x21,0x5a,0xe3,0x6e,0x97,0xff,0x4d,0xad,0xd9,0x29,0xdc,0xc3,0xde,0x7f,0x4e,0x6f, - 0xc0,0x8e,0x7f,0x14,0xc4,0x3f,0x4f,0x33,0x7f,0x85,0x77,0xdb,0xe2,0x73,0xe4,0x62, - 0xca,0x17,0xad,0xf5,0x45,0x95,0xe2,0x56,0x3f,0xed,0x5f,0x41,0x81,0x50,0xd6,0x91, - 0xff,0xda,0x63,0xe8,0xa9,0x84,0x36,0x59,0x6d,0x11,0x16,0xe8,0xfc,0x4f,0xa7,0xd0, - 0x40,0x82,0xe6,0xd2,0xec,0x94,0x35,0x3f,0x23,0x6c,0xbd,0x4f,0x07,0xb5,0x21,0x4a, - 0x9e,0x57,0xea,0x53,0xff,0xf8,0x24,0xd7,0x20,0x6c,0x80,0x64,0xa6,0xe4,0x02,0xae, - 0xa0,0xe9,0x42,0x1b,0xc7,0x7b,0xd4,0xc1,0xff,0x8c,0x2a,0x8c,0x6f,0xef,0x15,0x46, - 0xe5,0xe8,0x67,0x42,0x7b,0xb9,0xe3,0xe8,0xc6,0x93,0xed,0xa1,0xbd,0x95,0x43,0x7a, - 0xfc,0xa2,0xf8,0xc7,0x7c,0x1f,0x1f,0xcb,0x7f,0x31,0xd2,0x23,0x0a,0x2f,0x96,0xcf, - 0xa7,0x68,0xea,0x12,0x86,0xf5,0x6e,0x65,0x23,0x6d,0x7c,0x00,0xf3,0xb5,0xa8,0x1d, - 0xff,0xb0,0xfc,0x17,0x13,0xf9,0xf8,0xe7,0x52,0xef,0xf1,0x99,0x6a,0x0a,0x84,0x5e, - 0x03,0x89,0xc2,0x98,0x21,0x91,0x2a,0x72,0x69,0xfc,0x5d,0x68,0xe1,0x1f,0xaa,0xf7, - 0xd0,0x45,0x41,0xd8,0x5f,0x46,0x6f,0x43,0xfb,0xe3,0x7a,0x5f,0x89,0xe8,0x08,0x8a, - 0xf6,0x2f,0x72,0xe2,0x9f,0x3d,0x4a,0xf4,0x38,0xc2,0x48,0x7e,0xb1,0x92,0x92,0x64, - 0x9c,0x66,0xc7,0xab,0xb6,0x54,0x4a,0xed,0x82,0xbe,0x50,0x95,0x74,0x3c,0x60,0xce, - 0x07,0x10,0xa2,0xf4,0xa3,0xe8,0x0b,0xec,0xe5,0x6a,0x94,0x23,0x77,0x27,0x5a,0x96, - 0x65,0xa6,0x9c,0x6e,0x3b,0x16,0x49,0x74,0x05,0x29,0x62,0x3c,0x00,0x7b,0x59,0x7c, - 0x77,0xf0,0x3f,0xe8,0x4f,0x8e,0x07,0x10,0xff,0xc0,0x68,0xc5,0x2d,0x4b,0x28,0xf0, - 0xa3,0x8c,0x87,0x32,0x59,0xe7,0x37,0x1a,0xf3,0xf1,0xcf,0x38,0x45,0xcb,0x3d,0xdc, - 0x65,0x18,0xa3,0x44,0x50,0xf7,0xa2,0x18,0x5e,0xb9,0x51,0x09,0x8e,0x70,0x1f,0xc1, - 0x49,0x5d,0x1a,0x34,0x6c,0xd9,0x5f,0x63,0xfc,0x4f,0x2c,0xfb,0xe5,0x1e,0xc2,0x1a, - 0x67,0x4b,0x3f,0xe0,0xbe,0x09,0xdd,0x52,0xb8,0x02,0x61,0x0f,0x0e,0x1c,0x6f,0x05, - 0xec,0xf8,0xa7,0x6f,0x92,0xb5,0x1e,0x67,0x81,0xe9,0xd0,0xd2,0x44,0xd3,0x46,0x5f, - 0x37,0x2e,0x1a,0x05,0xca,0xff,0x74,0x50,0xe2,0x0b,0xc7,0x6b,0xcb,0x7f,0x59,0xfc, - 0x09,0xb5,0x76,0x4c,0xf3,0xeb,0x8d,0xea,0x30,0x1a,0xf6,0x3c,0x1a,0x96,0xdd,0xca, - 0xbd,0x4f,0xaf,0xc5,0xff,0x70,0x56,0x20,0xd6,0x15,0x74,0xc1,0xcc,0x94,0x73,0xe4, - 0x18,0x61,0x57,0xfa,0x65,0x97,0xfe,0xd9,0x64,0x7b,0xb0,0x11,0x9f,0x72,0x1f,0x3f, - 0x0e,0x37,0xca,0x73,0xed,0xf6,0xb1,0xe6,0x7f,0xbf,0x4d,0xff,0x63,0x36,0x18,0xec, - 0xa1,0xfa,0x96,0x41,0x38,0xa6,0x5f,0xf1,0xe4,0x7f,0xf0,0xd7,0x27,0x94,0x4d,0x42, - 0xfc,0x76,0x80,0x87,0x2c,0xbe,0xff,0x7b,0x92,0xf1,0xfe,0x9e,0xfc,0xcf,0xf1,0xa9, - 0x46,0x23,0x88,0x4f,0x88,0x0c,0x44,0xa8,0x3e,0xaa,0x43,0xbf,0xe2,0xcc,0x7f,0x99, - 0xd9,0x1f,0x65,0x9f,0x5a,0x82,0x1f,0x72,0x78,0x46,0xd7,0x3e,0xa5,0x62,0xa5,0xb0, - 0x9a,0xfc,0x06,0x17,0x32,0xec,0x56,0x0e,0xff,0x7c,0x4e,0x08,0xf2,0x1f,0xf8,0x1a, - 0x86,0x66,0xd6,0x71,0x27,0x94,0x0f,0xd4,0x86,0xa1,0xd0,0x4d,0x5c,0xa9,0xf2,0x41, - 0xa6,0x6e,0x30,0x18,0x9f,0xf2,0x2e,0xae,0x48,0x1a,0xe8,0xa7,0x94,0xcf,0xff,0xd0, - 0x69,0x23,0xb3,0xb4,0xe9,0x1f,0x69,0xda,0x4b,0x87,0x85,0x17,0x45,0xc3,0x3e,0xde, - 0xfa,0x1f,0xf8,0x00,0x61,0xcf,0xcc,0x27,0xd9,0x42,0x63,0xa6,0x66,0x0a,0x17,0xd9, - 0xf7,0x9b,0xcb,0x7f,0x3d,0x64,0xea,0x7f,0xb8,0x47,0x85,0x7d,0xb0,0x4d,0x2b,0x35, - 0x97,0x8d,0x74,0xfd,0xc5,0x1b,0x0b,0xab,0x0b,0xf6,0xfc,0x97,0x68,0x65,0xbb,0xf6, - 0xb1,0xc4,0x5f,0xd8,0x96,0xff,0x32,0x1a,0x9a,0x17,0xfe,0xa1,0xc2,0x7b,0xb6,0xda, - 0x62,0x57,0xfa,0x97,0xd2,0xf5,0xac,0x71,0xeb,0x25,0x9b,0xfe,0xd9,0xe2,0x7f,0x68, - 0xda,0x2b,0x61,0x36,0x6e,0x79,0x38,0xa4,0x2e,0x1a,0x31,0x6f,0x8d,0x78,0xe9,0x7f, - 0x54,0xca,0x7e,0xb0,0x7c,0x10,0x6f,0x44,0xa8,0xac,0x4c,0x1b,0xcb,0x0b,0xf0,0x3f, - 0xae,0x46,0xd0,0x76,0x25,0x9f,0xff,0x31,0xf8,0x87,0x5c,0x63,0x85,0x90,0x2e,0x7b, - 0x53,0xa2,0x57,0x38,0x4f,0xfe,0xc7,0xdd,0x5f,0x8e,0xa4,0xc9,0x9b,0xe6,0x15,0x4f, - 0xfe,0xc7,0x00,0x06,0x94,0xff,0x31,0x68,0x1f,0x8b,0x2a,0x39,0xec,0xc8,0x7f,0x19, - 0xe3,0x35,0x06,0xde,0xae,0x37,0x28,0xec,0xc9,0x0a,0xc6,0xad,0x33,0x96,0xff,0x39, - 0xa5,0xeb,0x9f,0x0d,0xb6,0xc7,0x80,0x3d,0x08,0x63,0x1a,0xe9,0x30,0x2f,0xaa,0x1e, - 0xf8,0xc7,0x0a,0xfa,0x06,0x70,0xda,0xdc,0x41,0x61,0x43,0x63,0x1f,0xda,0xe7,0xa2, - 0x6c,0xf4,0x7f,0xc1,0xd2,0x2b,0xae,0x36,0xf0,0x8f,0x40,0xed,0xcf,0x80,0xd0,0x1a, - 0xc2,0x1a,0x62,0x89,0xa1,0xff,0xa1,0xd0,0xe8,0x44,0xce,0xfe,0x8c,0xff,0x89,0xc9, - 0x54,0xdd,0x24,0xec,0xe1,0xa3,0x0b,0x03,0xe2,0x61,0x5e,0xdc,0x13,0x89,0xb6,0xd0, - 0xc4,0x9f,0x62,0x8c,0xf7,0xa5,0x3c,0xfe,0x07,0x41,0xe3,0x4e,0xd1,0x48,0x44,0xee, - 0x74,0x1a,0x76,0x29,0x1a,0x36,0x8f,0xff,0x29,0xb1,0xfd,0x9a,0xf4,0xfd,0x93,0x29, - 0xc4,0xb7,0x6f,0x48,0xc6,0x95,0x41,0x47,0xfe,0xcb,0x6b,0x3e,0x34,0x2c,0xa6,0x4f, - 0x48,0x19,0x57,0x3e,0xca,0xe3,0x7f,0x72,0xf6,0xa7,0xfc,0xcf,0x08,0x9f,0x80,0x20, - 0xce,0x37,0xd2,0xc7,0xb3,0x89,0xe7,0xc5,0xff,0x90,0x41,0xf8,0x21,0xc4,0xda,0xb0, - 0xb1,0x0b,0xaf,0x6c,0xa7,0xb0,0x67,0x4c,0x59,0xaf,0xdf,0x3a,0x2a,0xca,0x56,0xff, - 0x65,0xfa,0x7e,0x01,0x1b,0x4d,0x4a,0xc3,0xb4,0x94,0x42,0xff,0xfc,0xa2,0xe9,0x7f, - 0x8e,0x3a,0xf2,0x5f,0x26,0x5b,0x0b,0x3f,0x80,0x9a,0x43,0x81,0x7b,0x08,0x7e,0xd1, - 0xaa,0xd4,0x82,0xb0,0xe7,0x0c,0xbf,0x56,0xbf,0x35,0x98,0xcb,0x7f,0x75,0x59,0xf8, - 0xe7,0x8c,0xde,0x48,0x76,0xcc,0xc0,0xf8,0x32,0x2f,0x15,0x5d,0x8d,0x11,0xe7,0x57, - 0xfa,0xad,0x73,0x92,0x95,0xff,0xba,0xde,0xe6,0x6f,0x69,0x5a,0x27,0xf4,0x34,0xfa, - 0x93,0x71,0x9a,0x46,0xcf,0x2c,0xb2,0x5c,0xcd,0xe1,0x4e,0xd3,0x3e,0xf0,0xc0,0x65, - 0x91,0xf1,0x3f,0x23,0xdc,0x65,0x79,0x3c,0x5d,0x4b,0x1b,0xb1,0x85,0x63,0x2f,0xcf, - 0x5b,0x51,0x8a,0x57,0x2c,0xfd,0xb3,0xe2,0xe4,0x7f,0x6a,0x28,0xdb,0x73,0x02,0x5f, - 0x1b,0x81,0x50,0x2b,0x99,0xa1,0x74,0x2b,0xd2,0x4a,0x81,0xf2,0x3f,0xc6,0xd0,0xce, - 0x2d,0xb6,0x9e,0x6f,0xe3,0x7f,0x94,0x7d,0x52,0x0d,0x45,0x47,0xf8,0x84,0x8a,0x8a, - 0xe6,0xf5,0xad,0x66,0xe2,0xbe,0x95,0x78,0xf3,0x3f,0x7a,0x23,0x93,0xb3,0xe7,0xf3, - 0x8a,0x71,0xcb,0x83,0xff,0xc1,0xf1,0x06,0xc7,0xa0,0x56,0xdb,0x34,0x1c,0x88,0xa2, - 0xbf,0xcd,0x0c,0xe2,0xc2,0xfc,0xbc,0x62,0xdc,0x3a,0xe7,0xcc,0x7f,0xe9,0xfc,0x8f, - 0xcd,0xf1,0xea,0x7c,0x91,0x6f,0x80,0x37,0xae,0xd8,0xf2,0x5f,0xe2,0x25,0x57,0xbc, - 0x1b,0xe6,0x1a,0xa0,0x11,0xe3,0x63,0x89,0x7e,0x65,0x26,0xbd,0xa2,0x39,0xf3,0x5f, - 0xc4,0x8c,0x5f,0x50,0x8a,0x8d,0x5b,0x77,0xd3,0x1d,0x3d,0x2b,0x30,0x7e,0xfd,0x41, - 0x34,0x42,0x9b,0x87,0xfe,0x19,0xfb,0x0b,0x07,0xa0,0x88,0x36,0xf4,0x2b,0xc5,0x99, - 0xa6,0xf3,0xd2,0x01,0x9d,0x08,0x72,0xf3,0x3f,0xcc,0x08,0x2f,0x2a,0xf3,0x9b,0x11, - 0x08,0x2d,0x20,0x1b,0x15,0x63,0x99,0x6f,0x99,0x2e,0x4f,0xff,0x7c,0x7a,0xf9,0x53, - 0xdc,0xbb,0xd2,0x58,0x0a,0x47,0xf7,0x6d,0xae,0x46,0xfe,0xd3,0xbc,0xe4,0xf1,0x12, - 0x5b,0x44,0xb6,0xe1,0x9f,0x12,0xc6,0xff,0x1c,0x0f,0x5d,0x60,0x77,0x1b,0x4f,0xe1, - 0xe8,0x3e,0x56,0xc6,0xe3,0x78,0x65,0x78,0xca,0xb0,0x37,0xfe,0xb9,0x0c,0x37,0x42, - 0x49,0x96,0x0b,0xc3,0x25,0x1d,0x2d,0x53,0x20,0x44,0xf9,0xc3,0x40,0xd2,0x9c,0x3f, - 0xc3,0x96,0x7f,0xa0,0xfc,0x4f,0x8f,0x52,0x09,0xc2,0xae,0xca,0x30,0x64,0x20,0x4c, - 0xd1,0x8e,0x8e,0x88,0xb0,0x11,0x33,0x1b,0x4e,0xfe,0xe7,0x19,0x98,0xad,0x04,0x24, - 0xbf,0x06,0x99,0x39,0x6c,0x3f,0x8e,0x39,0x4c,0xd9,0x32,0xc5,0x61,0xeb,0x7b,0x61, - 0xfa,0x1f,0x04,0x8d,0xeb,0x77,0x51,0xfd,0xb9,0x12,0x36,0x7f,0x88,0x58,0xce,0xb0, - 0x01,0x77,0xfe,0xeb,0x23,0xb9,0x56,0x0a,0x3d,0xc1,0xbd,0xc9,0x8f,0x28,0x7b,0xf5, - 0xfe,0x36,0xa0,0xa2,0xe3,0x1f,0x47,0xfe,0x6b,0x04,0x1a,0x57,0x94,0xa4,0xa6,0x7c, - 0x1b,0x2e,0xf9,0x9c,0x13,0xc3,0x6a,0x38,0xf3,0x5f,0x1f,0xc9,0x09,0x88,0xaa,0x53, - 0xde,0xc2,0x30,0xb7,0xd7,0x01,0x84,0xac,0x86,0x5b,0xff,0x23,0xfd,0x37,0xf4,0x36, - 0xd4,0x5b,0xb2,0xb4,0x97,0xf1,0xfe,0xf1,0xdc,0x40,0x9c,0xf8,0x07,0xfb,0x83,0x10, - 0xe7,0x8f,0xa3,0xf7,0xae,0x72,0x38,0x22,0xab,0xe1,0xe4,0x7f,0x9e,0x54,0x2a,0x24, - 0xe1,0x5e,0xf2,0x92,0xf2,0xa4,0x3a,0x8b,0xa6,0xbd,0x1c,0x78,0xe0,0x6e,0x27,0xfe, - 0xa1,0xfc,0xcf,0x5e,0x48,0xec,0x0a,0xd6,0x4f,0x3e,0x2a,0x0f,0xab,0x0b,0x28,0xda, - 0x61,0xfa,0x9f,0x6c,0x20,0xce,0x16,0x0e,0x1e,0xf8,0xe7,0x32,0x46,0x9f,0xd0,0xfb, - 0x93,0x87,0xf1,0xd3,0x61,0x42,0xf1,0x21,0xd9,0x6d,0x9f,0x7e,0x62,0xda,0x87,0xe2, - 0x1f,0x84,0x0d,0x62,0x50,0x21,0x74,0xb7,0x82,0x0d,0x08,0xd9,0xed,0xe3,0xe4,0x7f, - 0x9e,0x82,0x8a,0xc5,0x25,0xf2,0xa2,0xdb,0xf4,0x85,0x55,0x6b,0xd9,0x69,0x73,0x19, - 0x65,0xf9,0x13,0x27,0xff,0x83,0xde,0x49,0x15,0x22,0x4d,0xb7,0x07,0x9f,0x6e,0xd7, - 0x87,0xc9,0xef,0x53,0xe6,0x60,0xa3,0xe5,0x8c,0x09,0x8d,0x1c,0xfc,0x8f,0xd0,0x2d, - 0x87,0xfb,0x1e,0x2f,0x22,0xcb,0x94,0xbd,0x92,0x65,0xc6,0x88,0xc3,0x9e,0x2f,0xf1, - 0xe6,0x7c,0xd3,0xf5,0x3f,0xf3,0x7b,0xa2,0x6f,0x92,0x2f,0x57,0x51,0x21,0x50,0x40, - 0xc7,0x3f,0xcf,0x98,0x40,0x88,0xe1,0x1f,0x57,0xfe,0x4b,0x78,0xd6,0x90,0x3d,0xfb, - 0x66,0x98,0x81,0x69,0xb6,0x2d,0x42,0xb9,0xf0,0x8f,0xef,0x7d,0xba,0x1b,0x48,0x5c, - 0x54,0x45,0x17,0xb6,0x1e,0x40,0xc8,0x03,0xff,0x84,0x53,0x91,0xb4,0x5f,0xa7,0x7d, - 0x42,0x79,0xc0,0x26,0xe0,0xc6,0x3f,0xb8,0xc8,0x6a,0x16,0xd2,0x45,0xdf,0xa0,0xfb, - 0x05,0x3c,0x80,0x50,0x71,0x1e,0xfe,0x89,0x48,0x47,0x85,0xb2,0x17,0x78,0xb1,0x0d, - 0xa3,0xff,0x74,0xa7,0xfe,0xc7,0x0b,0xff,0xf4,0x48,0x09,0x61,0x59,0x3b,0x97,0xd2, - 0x65,0x27,0xb6,0x61,0xea,0x8d,0x12,0x67,0xfe,0x6b,0x80,0xaa,0xe9,0x96,0x6c,0xea, - 0xe7,0x2e,0xc2,0xc7,0x11,0x6b,0xff,0x97,0x6d,0xbc,0x93,0xf3,0xf0,0x4f,0xa4,0xb1, - 0x29,0xb8,0x79,0xf2,0xb7,0xe9,0x6a,0x97,0xc1,0x24,0x0c,0xbc,0x49,0x79,0x66,0x7f, - 0xee,0x1f,0xe6,0xf0,0x0f,0xe3,0x7f,0xe4,0x18,0x74,0x75,0x72,0x29,0xf1,0x99,0x8a, - 0x5a,0xaa,0xff,0xc9,0x42,0x17,0xd3,0x23,0x15,0xc6,0x3f,0xd1,0x26,0x61,0x2a,0xe9, - 0x84,0xfd,0xc5,0xd2,0x42,0x36,0xcc,0xb6,0xbc,0xf1,0xba,0xf0,0xcf,0xf3,0xc2,0x43, - 0x45,0x68,0x3d,0x32,0x5b,0xf6,0xa3,0x19,0x05,0xfa,0x43,0xf8,0x99,0x3d,0x7d,0x14, - 0xff,0x94,0xb9,0xf2,0x5f,0x2d,0xc9,0x96,0xe0,0x56,0xf2,0x93,0xaa,0xf7,0xf9,0x84, - 0x21,0x5b,0xc2,0xd7,0x0e,0xd8,0x06,0xee,0xca,0x7f,0x29,0x0d,0x2b,0xe6,0x96,0x2f, - 0x5a,0xc1,0x8f,0x1a,0x32,0x27,0x46,0x94,0xd9,0xf4,0x3f,0xf8,0xbd,0x98,0xbf,0x97, - 0xa1,0xff,0xc1,0xef,0xab,0x52,0xe5,0x47,0x78,0x8a,0xae,0x17,0xb1,0xb4,0x23,0x85, - 0xd9,0xba,0xfd,0x97,0xe7,0xe1,0x1f,0xdf,0x0d,0xca,0x20,0xe2,0x9f,0xc8,0x33,0x3c, - 0x43,0x3b,0x7d,0x60,0x34,0x06,0x4d,0x68,0xe4,0xc6,0x3f,0x52,0x56,0x88,0xc3,0x09, - 0x98,0x8f,0x5f,0xc7,0x74,0x2f,0xff,0xe3,0xcc,0x7f,0x3d,0xa7,0xcc,0x69,0xef,0x62, - 0x5f,0x6b,0xbc,0x46,0xfb,0xb2,0xed,0xb3,0xb5,0x1a,0xee,0xfc,0x57,0x5c,0x0d,0x32, - 0xfc,0xb3,0xed,0x96,0xb3,0x33,0x2d,0x20,0x64,0x6b,0x9c,0x33,0xa7,0x1b,0xc3,0x3f, - 0x1f,0xe0,0x6a,0x5d,0xf7,0x1e,0x72,0x32,0xcf,0xdf,0xce,0xa0,0x89,0x9e,0xc3,0x39, - 0xfe,0x9f,0xad,0xdf,0xc9,0x40,0x68,0xd4,0x77,0x5e,0x1e,0xd3,0xe6,0x9f,0x65,0xf1, - 0xeb,0x3d,0x3d,0x6c,0xe5,0xf0,0x8f,0x4b,0xff,0x2c,0x45,0x03,0xf1,0x5b,0xcf,0x28, - 0x1d,0x99,0x4f,0x0f,0x51,0x20,0xa4,0xb9,0xdf,0xdf,0x9d,0xff,0xaa,0x10,0x02,0xad, - 0x4d,0x97,0xd4,0xff,0x0d,0x15,0x7a,0x22,0xec,0x31,0x57,0x7f,0x17,0xfe,0x51,0x24, - 0x2a,0xeb,0x3d,0x29,0x74,0x34,0x15,0xf0,0xe7,0x2e,0xfc,0x23,0x27,0xd2,0xcb,0x7b, - 0xb8,0x77,0xe1,0x3d,0xd9,0x70,0x9b,0xef,0x4c,0xd2,0xf3,0x59,0x96,0xff,0x74,0xe6, - 0xbf,0xca,0x0f,0xa6,0x43,0x7b,0x16,0x0e,0x75,0x8e,0x15,0x27,0xb5,0xe5,0x19,0xb6, - 0xde,0x9c,0xe1,0x30,0x94,0x33,0xff,0x85,0x30,0x80,0x30,0xb6,0x64,0x9c,0x14,0x88, - 0x77,0xee,0xfc,0x57,0x2c,0x1e,0xc9,0x94,0x9d,0x97,0xbb,0x21,0x7c,0x68,0x29,0x15, - 0x96,0x38,0x18,0x09,0x2f,0xfc,0xa3,0x0a,0xb6,0x30,0x9d,0xdf,0x70,0xe1,0x1f,0x3e, - 0x5a,0x42,0xd1,0x4e,0xff,0x01,0x81,0xa5,0x59,0x71,0x06,0xca,0xd1,0xde,0xc0,0x44, - 0xf8,0x47,0xd8,0x48,0xd1,0xef,0xb8,0x94,0xec,0xdb,0x94,0xa9,0x7c,0xb7,0xd9,0x1d, - 0x7f,0x9d,0xfc,0x0f,0x0e,0xaa,0x24,0x34,0xfc,0xfc,0xcb,0xda,0x9f,0x84,0x24,0x55, - 0x6b,0x0c,0x69,0xe3,0x52,0x63,0x5f,0x68,0x62,0xfe,0x67,0x84,0x3b,0x0f,0xaf,0x29, - 0x37,0x9e,0xdd,0xf4,0x21,0x77,0x0f,0xbb,0x82,0x16,0xbb,0x0f,0x7e,0x6f,0xe0,0x1f, - 0x97,0xfe,0x27,0xa6,0xc3,0x9e,0x77,0x94,0xd8,0xe1,0xc0,0x87,0x24,0x0c,0xdd,0x42, - 0x2c,0xbb,0x64,0x84,0x24,0xf3,0xf9,0x1f,0x9b,0xfe,0x87,0x35,0xfa,0xfc,0x0b,0xe8, - 0x46,0x54,0x69,0x15,0x5d,0x98,0x2f,0xcb,0x8d,0xd7,0xa9,0xff,0x31,0xac,0xcd,0x12, - 0x8b,0x71,0xff,0xdf,0x99,0x44,0x50,0x34,0xc7,0xff,0x98,0xf3,0x01,0xf1,0x4f,0xf0, - 0x80,0xb5,0x5e,0xf0,0xd5,0xe2,0xb4,0xf1,0xdd,0xd9,0xfc,0x5d,0xbc,0x82,0xf8,0x79, - 0x95,0x37,0xfe,0xd1,0xf3,0xa1,0x3e,0x23,0x31,0x9a,0xe1,0x32,0xcc,0x2c,0xcb,0x75, - 0x20,0xed,0x81,0x7f,0x9c,0xeb,0x91,0x0c,0x37,0x8b,0xf2,0x3f,0xd9,0xd2,0x3a,0x2e, - 0x28,0x79,0xe2,0x1f,0xeb,0xd7,0xff,0x11,0x53,0x13,0x91,0x08,0x5e,0x59,0xa0,0x09, - 0xc3,0xe4,0x5f,0x48,0x41,0xfe,0xa7,0xd8,0xb4,0x06,0x36,0xba,0x68,0xbe,0x46,0xcf, - 0xc8,0x57,0x7a,0xe1,0x1f,0x43,0xff,0x73,0x46,0xa1,0x8d,0xe9,0xab,0x97,0x7c,0x9f, - 0xa6,0xbd,0x86,0x8b,0x57,0x93,0x1f,0xe7,0xf3,0x3f,0x86,0xfe,0x67,0x30,0x44,0xd9, - 0x0f,0x26,0x7b,0x4e,0x70,0x0f,0x66,0xb1,0x31,0x84,0xb0,0x27,0xa8,0xfd,0xc1,0x9b, - 0xff,0x61,0x22,0x9f,0x21,0xf8,0xbd,0x48,0xe7,0xcf,0x8e,0xfb,0xc4,0x31,0xf1,0xba, - 0x43,0xa5,0xc3,0x81,0x8f,0xe5,0xf7,0xc4,0x89,0xf8,0x1f,0x5c,0xbf,0x64,0x6b,0x7a, - 0x48,0xa4,0x6f,0x4c,0x29,0xd3,0x42,0x7b,0xb9,0x68,0x9f,0x27,0xfe,0x71,0x78,0x9b, - 0xf2,0xbf,0x27,0x0f,0x4b,0x94,0x08,0x5a,0x1a,0x6f,0xbf,0xce,0x1b,0xff,0xe8,0x20, - 0xa7,0x89,0xc1,0xbc,0xb3,0xe5,0xab,0x13,0x33,0x94,0x7d,0xed,0x5f,0xcf,0x06,0xbe, - 0x4b,0x2c,0x69,0x90,0x67,0xfe,0xeb,0xb8,0x99,0x3d,0x64,0x34,0xfe,0xa1,0x40,0x7c, - 0xc9,0xc6,0x1c,0xfe,0xb1,0xeb,0x7f,0x9e,0xc9,0xf1,0x3f,0xb5,0xca,0xf5,0x6a,0x25, - 0x4d,0x7b,0x2d,0x60,0xfa,0x9f,0x4f,0x7e,0xe4,0xf3,0xc2,0x3f,0xf6,0xe8,0xff,0x3d, - 0x85,0x3b,0x0b,0x75,0x34,0xff,0xc5,0x93,0x3b,0x7c,0xf4,0xca,0x64,0x37,0xff,0xe3, - 0x82,0x3d,0x5f,0x1b,0x10,0x47,0x79,0x06,0x0c,0x66,0xb7,0x5c,0x99,0xff,0xe1,0xd2, - 0x4d,0xef,0x2a,0x6f,0x43,0x6c,0xa1,0x90,0xf6,0xcf,0x92,0x3c,0xf1,0x4f,0xae,0x3f, - 0xe2,0x1f,0x62,0xea,0xa5,0xfd,0x5b,0xdb,0xab,0xae,0xc8,0xff,0xac,0xd2,0xf9,0x9f, - 0x6d,0xd8,0x10,0xca,0xda,0xf9,0x5d,0x7b,0x88,0x07,0xfe,0xa1,0xb0,0x27,0xc0,0xc6, - 0xcb,0x35,0xf8,0x4a,0xc9,0x94,0x2c,0x0c,0x53,0x45,0x4a,0x3b,0x27,0x75,0x19,0xa6, - 0x70,0xe2,0x1f,0x0b,0xed,0x7c,0x87,0xed,0x76,0xdf,0x81,0x16,0x88,0xea,0x57,0xca, - 0x0b,0xf2,0x3f,0x14,0xf6,0x88,0xa3,0x88,0x2e,0x74,0xfe,0x47,0x9c,0xbf,0x30,0xb4, - 0x59,0x27,0x52,0xe4,0xbc,0xfc,0xd7,0xa0,0x0e,0x72,0x18,0xda,0xf1,0x6f,0xa0,0xc0, - 0xac,0x07,0x6a,0x21,0xd0,0xc9,0xb5,0xc2,0x56,0x03,0xff,0x38,0xf4,0x3f,0x0f,0x19, - 0xe3,0xe5,0x71,0xbc,0xcd,0x3f,0x12,0xdb,0x79,0x61,0x4f,0xf8,0x0e,0x39,0xf0,0x25, - 0xf2,0x4f,0xde,0xf8,0xe7,0x71,0xbb,0x3d,0x7f,0x94,0x6e,0xfa,0xba,0xbc,0x1f,0xbe, - 0x21,0x6f,0xe8,0x27,0x17,0xa9,0x10,0x68,0x61,0xc0,0xad,0xff,0x79,0xc5,0xf9,0xfb, - 0x92,0xd9,0x02,0x53,0x74,0xa7,0x2b,0x77,0x16,0xc0,0x3f,0x8e,0xfe,0xa2,0x6e,0x96, - 0x26,0xec,0xbf,0xc2,0x7c,0x54,0xbe,0xfe,0x47,0xe7,0x1b,0xb1,0x11,0x55,0x16,0x55, - 0x28,0xec,0x0a,0x59,0x24,0x99,0xb7,0x0a,0xf0,0x3f,0xb4,0x81,0x0b,0xb1,0x1b,0xa4, - 0x7a,0x88,0x6d,0x0b,0xa9,0xc2,0x2e,0x0b,0xff,0x78,0xeb,0x7f,0x68,0x03,0xe2,0xa4, - 0x54,0x98,0x8e,0xff,0x99,0x00,0x00,0x2f,0x78,0xe2,0x1f,0xfb,0xf7,0x3b,0x58,0xfc, - 0x2d,0x32,0x15,0xf6,0x49,0x77,0xf7,0xe3,0x0a,0x37,0x5d,0x08,0xff,0x30,0x90,0x43, - 0xbf,0xd6,0xc6,0x0b,0xfc,0x08,0x37,0x63,0xf1,0x9f,0xd4,0x5b,0xd4,0x10,0x15,0x42, - 0x9b,0xf8,0xc7,0xae,0xff,0xb9,0xc6,0x11,0xdd,0x4a,0x33,0x1d,0x6f,0xc0,0x98,0x38, - 0x03,0x1b,0x39,0xc6,0xc3,0xad,0xff,0xc1,0xf8,0xb5,0x9f,0x3b,0x43,0x8e,0x29,0x8d, - 0x03,0x33,0xf7,0x4f,0xa9,0x16,0xde,0xeb,0xbf,0x39,0x15,0x3a,0xc5,0xd5,0xca,0x27, - 0xbd,0xf0,0xcf,0x5b,0x94,0xff,0xb9,0x17,0xfd,0xe7,0xda,0xed,0x51,0xea,0x48,0x89, - 0xf2,0xbc,0x5a,0xf3,0x6e,0xa0,0x95,0x6b,0x21,0x6b,0xbd,0xf0,0x0f,0x45,0x3b,0xd3, - 0x29,0xff,0xf3,0x03,0x69,0x4e,0x5f,0x20,0x1e,0xae,0x53,0x1e,0xab,0x9c,0x23,0x23, - 0x50,0x0c,0xfa,0xd6,0x7a,0xe1,0x9f,0x1d,0xa6,0xff,0x31,0x64,0xab,0x80,0x61,0x2b, - 0x7a,0x88,0x05,0xfa,0x0e,0x2f,0xfc,0xf3,0x8e,0x31,0x5e,0xf2,0x1a,0x47,0xbd,0xeb, - 0xf4,0xe8,0xca,0xf7,0xa0,0x5e,0xc1,0x9f,0x35,0x2a,0x1c,0xf3,0xc2,0x3f,0xef,0xb8, - 0xa2,0xff,0xbb,0x78,0xa5,0x41,0x63,0x1e,0x6c,0x8c,0x78,0xe0,0x1f,0x07,0xda,0x09, - 0x0e,0x4f,0xa9,0xa7,0x3b,0xa0,0x95,0x60,0x2b,0x79,0x54,0x17,0x42,0x7b,0xe0,0x9f, - 0x1c,0x7a,0x41,0x60,0x13,0x49,0x19,0x69,0xaf,0xdd,0xdc,0x06,0x7e,0x02,0xfe,0x87, - 0x35,0xe6,0x64,0x48,0x95,0x70,0x00,0xaa,0x65,0xf4,0x57,0xbb,0x65,0x8c,0x77,0x87, - 0x0a,0xf0,0x3f,0xed,0x2f,0x42,0xb7,0x18,0x7d,0x01,0xfd,0xf3,0x24,0x05,0x81,0x56, - 0xaf,0x40,0x03,0x5f,0x47,0x01,0xfc,0x73,0x9c,0x0e,0xb3,0x6b,0x0c,0x61,0x4c,0xf0, - 0x02,0x57,0x01,0xe3,0x95,0xf5,0xcd,0x41,0x9a,0xe8,0x39,0x56,0x00,0xff,0xf4,0xb3, - 0xfc,0xc5,0xf8,0x9d,0xc9,0xbe,0xe5,0x17,0x03,0xfd,0xf2,0x58,0x39,0xe5,0x7f,0x0a, - 0xe3,0x9f,0xfb,0xa4,0x50,0x3f,0x87,0xff,0xa3,0xf3,0xc6,0x6c,0x48,0x87,0x3d,0xf3, - 0x4d,0xfc,0x3c,0x9f,0x66,0x54,0xf3,0xf0,0x8f,0x84,0x9f,0x79,0x84,0x3f,0xd5,0x59, - 0x9b,0x2d,0x1d,0x61,0xb0,0xc4,0x20,0x82,0xba,0xa5,0xea,0xa3,0x5e,0xfa,0x67,0x40, - 0x27,0x43,0x6b,0x0f,0xd1,0x30,0x44,0x64,0x61,0x8b,0xae,0xaf,0xdb,0x48,0xf5,0x1e, - 0x34,0xe2,0xe7,0xe1,0x1f,0xc9,0xff,0x90,0x7f,0x0e,0x6c,0xed,0xfc,0x29,0x85,0x3d, - 0x12,0xd3,0x0f,0x33,0x0b,0x33,0xfd,0x46,0xbe,0xfe,0x39,0x16,0x0f,0xd4,0xb5,0x57, - 0xca,0x7d,0x5d,0xb5,0x14,0xc6,0xac,0x42,0xa0,0x42,0x89,0x9a,0xc9,0xbb,0xc1,0x10, - 0x2a,0xe7,0xe9,0x9f,0x49,0x68,0x78,0x4a,0x3f,0xe3,0x7f,0x4a,0x87,0x73,0xb0,0xa7, - 0x00,0xff,0x83,0xf6,0x17,0x4b,0xff,0x09,0x61,0xcf,0xa0,0x84,0xd6,0xde,0xc3,0x35, - 0xdb,0x67,0x60,0x3d,0x05,0x5a,0x2e,0xfc,0xc3,0xc7,0xc4,0xe6,0xa7,0x96,0xcc,0x16, - 0x14,0xb9,0x5a,0x0b,0xac,0x2e,0x1b,0x34,0x61,0x9b,0x9e,0x0f,0x2d,0xf1,0xc0,0x3f, - 0x92,0x9f,0x47,0xb3,0xa8,0xfa,0x67,0x72,0x1c,0x7e,0x06,0x36,0xe2,0xc2,0x9f,0x8f, - 0x7f,0xe6,0x4a,0xc2,0xdf,0x5c,0x7b,0x2d,0x6c,0x54,0x1f,0xa7,0x1b,0xc3,0xcf,0xf8, - 0xd6,0xda,0x33,0x44,0x79,0xfa,0x9f,0x0f,0x7c,0xf7,0x6d,0x2f,0x55,0xb8,0x26,0xe9, - 0x75,0xe5,0x20,0x15,0x42,0xff,0x4a,0xdb,0xa1,0xc3,0x1e,0xca,0xff,0xe0,0xfb,0x7b, - 0xe0,0x9f,0x4e,0x9c,0x0f,0x83,0x3a,0xed,0xf3,0x3e,0x2e,0xe4,0x2d,0x85,0x5e,0xa1, - 0xfc,0x17,0x84,0x32,0xa1,0x26,0xaa,0x7e,0xc9,0x06,0xf7,0x74,0xe4,0x7f,0xa1,0x79, - 0xf8,0x07,0x4a,0x5b,0x49,0x39,0xbc,0xac,0xeb,0x7f,0xf2,0xd7,0x8f,0x79,0xf8,0x47, - 0x0d,0xdc,0x47,0x12,0xd1,0x67,0xdb,0x2b,0xb2,0xc2,0xbd,0x24,0x3f,0xff,0x95,0x87, - 0x7f,0x0e,0xfb,0xeb,0xfc,0x01,0x69,0x73,0xaa,0x8a,0xe2,0x9f,0xf3,0x39,0x44,0x74, - 0xc0,0x0b,0xff,0x7c,0x04,0x73,0xd3,0xa1,0x55,0x5c,0x3d,0x5c,0x86,0x84,0x12,0x41, - 0xb4,0xa3,0xd8,0x32,0x62,0xde,0xf8,0x47,0x0c,0xb5,0x07,0xb6,0x31,0x21,0xd0,0x4c, - 0x70,0xf3,0x21,0x5e,0xfa,0x67,0x9a,0xdd,0x98,0xad,0x8c,0xaa,0xf5,0x72,0x68,0xeb, - 0x42,0xbb,0x3e,0x16,0xea,0xbd,0xf0,0x0f,0xad,0xcf,0x43,0x7e,0x0a,0x7b,0xf8,0x5a, - 0x39,0xb0,0xb5,0x68,0x27,0x23,0x82,0x0c,0x44,0x54,0x9b,0x8f,0x7f,0x1e,0xa7,0x6c, - 0x73,0x9a,0xe8,0x1b,0xc1,0x96,0x6e,0x26,0x8e,0xfe,0xd5,0xde,0xf8,0x47,0xd8,0xbc, - 0xbe,0x53,0xdd,0x0f,0x2b,0xe8,0xfe,0xf7,0x4e,0x95,0xf2,0x21,0x9c,0x8e,0x88,0xaa, - 0x3c,0xf1,0x8f,0x52,0x42,0xb8,0x08,0x9a,0x05,0x61,0x5e,0x3b,0x51,0xdb,0xfb,0x72, - 0xe3,0xad,0x77,0xe1,0x9f,0x4f,0x32,0xd1,0xf2,0xc2,0xd0,0x4b,0x1d,0x17,0xd5,0x3f, - 0x1a,0xc0,0x46,0x65,0xdb,0xbe,0xd8,0x78,0x23,0xc9,0x25,0x1e,0xf8,0xe7,0x16,0x39, - 0xf8,0x5b,0x6e,0x81,0xf2,0x22,0x34,0xca,0xfe,0x7e,0x8c,0x77,0xa3,0xb2,0x33,0x51, - 0xf8,0x82,0x7b,0xff,0xbb,0x4f,0x58,0xe3,0xaf,0x58,0xbc,0x9e,0xa2,0x9d,0x4e,0xf2, - 0xb6,0xd6,0x23,0x99,0x88,0x48,0x8a,0x09,0xfe,0x7c,0xfd,0x73,0x4c,0x8e,0x4c,0xbd, - 0x76,0xb1,0xda,0xc6,0x47,0xe5,0x6b,0xc5,0xb2,0xde,0xf4,0x1e,0x5f,0x54,0x5e,0xca, - 0xc6,0x2b,0x44,0x9b,0x98,0xde,0xdb,0x7c,0x7f,0x83,0xff,0x69,0x8d,0x94,0x85,0x57, - 0x14,0xad,0x6b,0x33,0xcc,0xf8,0x48,0xce,0x9e,0xd1,0x85,0xfe,0x3c,0xfd,0x33,0xdf, - 0xd0,0x1a,0x4c,0x57,0x2e,0x56,0x8e,0xe8,0xbb,0xdd,0xdf,0xd0,0x15,0x41,0xb6,0xf7, - 0xf7,0xc2,0x3f,0x8b,0x76,0xf2,0x14,0x06,0x53,0x6b,0x2c,0x74,0xf3,0x81,0x79,0xf8, - 0xa7,0xac,0xa4,0x1d,0xd1,0x4e,0x1f,0x49,0xc0,0x49,0x85,0xab,0x20,0x7d,0xb0,0xd7, - 0x31,0xdf,0xdc,0xf8,0x67,0x6e,0x46,0xc8,0x92,0xba,0xf0,0x83,0x62,0x58,0xd9,0xf0, - 0x04,0xa1,0x42,0xe8,0xb0,0xb2,0xd4,0xce,0xff,0xb8,0xf1,0xcf,0xb7,0x8b,0x3f,0x5d, - 0xe6,0x4f,0xb7,0xcb,0xaa,0x9e,0xff,0xea,0xd0,0xfd,0x73,0x01,0xfe,0x67,0x1f,0xcc, - 0x85,0x95,0xc3,0x61,0x11,0xd6,0x74,0xde,0x41,0x85,0x2e,0x33,0x14,0xba,0xed,0x4b, - 0xff,0x7e,0x25,0x96,0x2a,0xca,0xc3,0x3f,0x15,0x9f,0xff,0x0e,0x97,0x80,0x5e,0x85, - 0xe9,0x9f,0x93,0x70,0x52,0x9d,0x67,0xf0,0x3f,0xed,0xf9,0xf8,0x87,0x3a,0x0d,0xdf, - 0xf2,0xf8,0x72,0x84,0xd9,0x18,0x6d,0x75,0x37,0x22,0x9a,0xfe,0xa4,0x3c,0xf9,0xc2, - 0x64,0x0f,0xfc,0xa3,0x96,0x9c,0xf2,0xdf,0xaf,0xbd,0x80,0xcf,0xe7,0xf7,0x73,0xe7, - 0x53,0xe3,0xca,0x8d,0x13,0xf0,0x3f,0x88,0x7f,0x1a,0x9a,0x6f,0xf5,0x7f,0x02,0x7e, - 0x2b,0x46,0xb4,0x9a,0xd5,0xdc,0x46,0x85,0xb9,0x91,0x09,0xf8,0x9f,0xb9,0xc2,0x9c, - 0x16,0x52,0x7e,0xf4,0x61,0x98,0xc5,0xfc,0x95,0xb2,0x8f,0xaf,0x39,0x54,0x98,0xff, - 0xd9,0xe1,0x0b,0x96,0x0b,0x0f,0x1f,0xa6,0x60,0x65,0xb7,0xbe,0xfe,0x32,0xdc,0x8e, - 0x55,0x0a,0xa6,0xcf,0xe2,0x9f,0xf5,0xfc,0xd7,0x0c,0xb1,0xe4,0x19,0xce,0xaf,0x3c, - 0xe4,0x7b,0x1a,0xa3,0x1b,0x73,0xb3,0xb5,0x66,0x62,0xab,0xd1,0x83,0xff,0xf1,0xa1, - 0xff,0xa1,0xf5,0xc7,0x46,0x9a,0xeb,0x0d,0xb3,0x90,0x9c,0xbf,0x3d,0xe4,0x81,0x7f, - 0x6e,0x96,0x30,0x08,0xd6,0xf3,0x97,0xe0,0x46,0xd3,0x8d,0xcf,0xd7,0x1b,0x33,0xf3, - 0xf0,0x0f,0xd0,0xfc,0x57,0xd4,0xe7,0xef,0xaa,0xdc,0x0e,0xbb,0xfa,0xaa,0xb5,0xa5, - 0xfb,0x8d,0xb0,0xe5,0xe0,0x73,0xdc,0xf8,0x87,0x2f,0xde,0x4a,0xa2,0x1d,0x3d,0x8a, - 0x2e,0x9c,0xf6,0x59,0xfd,0x19,0x03,0x90,0x09,0x3b,0xf0,0x8f,0xaf,0x9b,0x16,0xfd, - 0x2b,0x27,0x3f,0x69,0x53,0x40,0xd5,0xd6,0xc5,0xdb,0x8f,0x2b,0xdd,0x92,0x63,0xbe, - 0x81,0x1b,0xff,0xd4,0x87,0x4a,0xfa,0x27,0xcf,0x09,0x8f,0x40,0x6d,0x3f,0x2e,0xab, - 0x87,0x94,0x31,0x69,0xef,0xd1,0x4d,0x74,0xbc,0xbf,0xd7,0xed,0xe3,0xc6,0x3f,0xb7, - 0x08,0x81,0xfe,0x29,0x0a,0x5c,0x8a,0x34,0x1e,0xc5,0x40,0x46,0x85,0xd0,0x66,0xfc, - 0xe2,0x1b,0xe9,0xfe,0x26,0x37,0xfe,0x31,0xd8,0xc2,0xdf,0x2b,0xc9,0xe3,0xab,0x2e, - 0x70,0xb7,0xe0,0x1b,0x35,0xf6,0x6d,0xbc,0x40,0x85,0x52,0x91,0xf9,0xeb,0xbd,0xf8, - 0x9f,0xb3,0x81,0x9e,0x32,0xda,0x98,0x7b,0x4a,0x78,0x7f,0x7d,0x83,0xd6,0xa7,0xc4, - 0xaa,0x4a,0xd6,0x85,0xff,0x20,0x77,0x69,0xe1,0x56,0x0f,0xfe,0x27,0x62,0xad,0x2f, - 0x4e,0xf9,0x13,0x65,0x41,0xba,0x43,0x19,0xfc,0x12,0xa1,0x0b,0x4f,0x49,0x09,0xc4, - 0x9b,0xbc,0xf9,0x1f,0x36,0x6d,0x84,0x0c,0x44,0x85,0x47,0x28,0xec,0x4c,0x93,0x41, - 0xe1,0x09,0xba,0xb1,0xc5,0x6b,0xff,0x17,0xcb,0x87,0x52,0x7e,0x66,0x59,0x66,0x51, - 0x14,0x06,0xc9,0x4c,0x0a,0x6c,0x2e,0xd1,0xd0,0xa7,0x78,0xf0,0x3f,0xf4,0x47,0x27, - 0x97,0xf4,0x42,0x88,0xad,0x8b,0x8e,0xc3,0x7b,0x52,0x03,0xfc,0x63,0x6f,0x87,0x86, - 0xeb,0xaf,0xc6,0x96,0x99,0x5e,0xfc,0xcf,0x4c,0x13,0xed,0xe0,0x44,0xba,0x0f,0x4e, - 0xcd,0xc3,0x85,0x98,0xca,0x55,0xc9,0x9a,0x2f,0xa1,0x14,0xda,0xff,0x45,0xdf,0x7f, - 0xee,0xa1,0x2e,0xfa,0x1f,0x3a,0xa6,0x20,0x90,0x4e,0x57,0x57,0x53,0x20,0x27,0x17, - 0xd8,0xff,0x25,0xdb,0x88,0xa0,0x32,0x19,0x07,0x3e,0x95,0x04,0xd2,0x1c,0xb0,0x42, - 0x88,0x79,0xfc,0x8f,0x15,0xfd,0xcf,0x0a,0xab,0x13,0x67,0xfe,0x7a,0xcd,0xb6,0xbb, - 0x67,0x09,0x73,0xc8,0x27,0xe4,0x4e,0x9a,0x2a,0xf2,0xe0,0x7f,0x34,0x23,0xdb,0x55, - 0x3f,0x58,0x52,0xcf,0x7d,0xa1,0xf7,0x37,0xb4,0xec,0xa1,0x8f,0x03,0x72,0x08,0x32, - 0xb2,0x53,0xff,0x5c,0xe2,0xd0,0x47,0xcd,0x78,0x21,0xf4,0x47,0x2a,0x04,0x92,0x1a, - 0x0f,0x21,0x10,0xba,0x44,0x53,0x63,0xca,0x44,0xfc,0x4f,0xb2,0x3f,0x98,0x59,0xd4, - 0x20,0x9d,0x7a,0xb5,0x5e,0x8b,0xa6,0x03,0xb4,0x90,0x60,0xa2,0x39,0x3a,0x01,0xff, - 0x13,0x3d,0x2a,0x7c,0xd8,0xd4,0xa0,0x3c,0x46,0x33,0x80,0x12,0xe1,0x71,0x3e,0x2c, - 0x68,0x2f,0xb4,0xff,0xeb,0x4c,0xf1,0x3e,0x7d,0x77,0xdb,0xed,0xda,0x6e,0xad,0x46, - 0x12,0x9a,0xc9,0xad,0xd0,0xa9,0xcc,0x4a,0x79,0xec,0xff,0x72,0xf0,0x3f,0x65,0xcb, - 0x60,0x87,0x56,0x45,0xb7,0x7d,0x51,0xa9,0x67,0x95,0x22,0x14,0xd8,0xff,0xa5,0xa3, - 0x9d,0xa0,0xba,0x68,0x25,0x9c,0xd3,0x1a,0x68,0xfd,0xc3,0x95,0xf8,0xfe,0xb5,0x74, - 0x07,0x71,0x41,0xfe,0xa7,0x41,0x5f,0x98,0x77,0xa5,0x6e,0x16,0x67,0x6a,0x5c,0x1a, - 0x2e,0x4a,0x8d,0xde,0xfb,0xbf,0x2c,0x7d,0x48,0x89,0x48,0x37,0x82,0x61,0x7c,0x2f, - 0x99,0xca,0x84,0xcd,0x71,0x0f,0xfd,0xb3,0x9d,0xff,0x41,0x20,0x54,0xc5,0x6f,0x90, - 0xa8,0x9e,0xa7,0x72,0x85,0x90,0xaf,0x7f,0xb6,0xf3,0x3f,0x8f,0xeb,0x7c,0x11,0xdd, - 0x08,0x16,0x6b,0x9a,0xd3,0x5f,0xd6,0x00,0x3f,0x87,0xaf,0x69,0xc2,0x44,0xfa,0x9f, - 0x25,0x42,0xd9,0x7a,0x7e,0x57,0x1b,0xdc,0xbd,0x44,0xb8,0x75,0xcd,0x97,0xd4,0x9f, - 0x54,0xdf,0xe1,0xd2,0x3f,0xdb,0xf5,0x3f,0x83,0x10,0x13,0x42,0x4c,0xff,0x4c,0x92, - 0x42,0x09,0x36,0xda,0x07,0xa5,0x6e,0xa6,0x7f,0xf6,0xe6,0x7f,0xf4,0x6a,0x87,0x5b, - 0x06,0x7e,0xfa,0x3e,0x24,0x17,0xbe,0xc7,0x36,0x82,0xe5,0xf1,0x3f,0xd6,0xfe,0xa9, - 0x2f,0xb2,0xc6,0x6d,0xc1,0x2d,0x1d,0xb3,0x94,0x57,0xf8,0xc6,0xe6,0xe8,0x66,0xae, - 0x4a,0x3a,0x22,0x24,0x96,0x78,0xef,0xff,0xd2,0xf9,0x9f,0xba,0xa9,0xfe,0x35,0x04, - 0xdf,0x07,0x70,0xc5,0xa1,0x90,0x79,0xd0,0xb5,0x38,0x2c,0x16,0xda,0xff,0xc5,0x80, - 0x50,0x33,0xa2,0x9d,0x49,0xca,0x1e,0xa8,0x59,0xe1,0xff,0x12,0x99,0x8a,0xee,0x1e, - 0xbf,0x2f,0x07,0xff,0x33,0xc9,0xae,0xf6,0xe1,0x59,0xb5,0x1f,0x44,0x98,0x8b,0x63, - 0x29,0xff,0x45,0xb2,0x40,0x31,0xf5,0xe4,0x39,0xfc,0x33,0xc9,0x3e,0x5e,0x8e,0xa2, - 0x9d,0xe9,0xb4,0x10,0x62,0xb2,0xf5,0x41,0x5d,0xe8,0x9e,0x28,0x84,0x7f,0x68,0xff, - 0x49,0xf5,0x7a,0xe3,0x15,0x36,0x31,0x02,0xbd,0xe4,0x7d,0xed,0xa0,0x3c,0xd7,0x81, - 0x7f,0x40,0x85,0x53,0x76,0x74,0x8d,0xd6,0xc6,0xaf,0x08,0x1a,0x84,0xdd,0x0a,0x27, - 0x55,0xe9,0x42,0x20,0xef,0xfd,0x5f,0x16,0xff,0xb3,0x0b,0xfc,0x10,0xcb,0x60,0x63, - 0x0e,0xdb,0x1a,0xef,0xdc,0xff,0x35,0x6d,0x99,0xfd,0x7b,0x89,0x69,0x5d,0xf1,0x6b, - 0x83,0x62,0xc7,0xa4,0x68,0x05,0x08,0xc4,0x87,0x57,0x54,0xcd,0x73,0xff,0x97,0x19, - 0xfd,0x8f,0x47,0xee,0x21,0x8f,0xca,0x6b,0x61,0x2e,0x41,0x7f,0x45,0x6f,0x49,0x9a, - 0xe7,0xfe,0x2f,0x33,0xdb,0xf5,0xfa,0xb2,0x7a,0x34,0xd2,0xaf,0x94,0x86,0x54,0x70, - 0x65,0xa0,0x0c,0x3e,0x68,0x9b,0x97,0x8d,0x7a,0xed,0xff,0xb2,0xa2,0xf9,0xf2,0xa7, - 0x3b,0x86,0xda,0x47,0x7c,0x6c,0x5b,0x53,0x41,0xfe,0x27,0x97,0xed,0x1a,0x28,0x1d, - 0xe9,0x48,0xca,0x27,0xb5,0x64,0x2a,0x38,0xc8,0xd5,0x22,0x5a,0x9c,0x9f,0x0d,0x7a, - 0xe0,0x1f,0xe3,0xfd,0xf9,0xbb,0x07,0x43,0x09,0xf2,0xa0,0xfc,0x2b,0xf5,0xeb,0x2b, - 0x84,0x6f,0xb5,0x5f,0x57,0xf5,0x98,0x30,0xe7,0x05,0xc1,0x63,0xff,0x57,0x6e,0x75, - 0xe6,0x6f,0x85,0x47,0x95,0x1f,0x88,0x35,0xb2,0x3f,0x45,0xbe,0x24,0xaf,0x15,0x2b, - 0xe8,0x78,0x0b,0xf0,0x3f,0xdd,0xf0,0x4d,0xba,0xdb,0x7d,0x23,0x28,0xe9,0xaa,0x55, - 0xd5,0x09,0xf2,0x79,0xf4,0x3f,0x91,0x3e,0xa1,0x90,0xfe,0x07,0xc6,0xb8,0xc6,0x43, - 0x18,0xb6,0x1a,0xca,0x4e,0xc9,0xc9,0x74,0xec,0x51,0xee,0x2e,0x38,0xa6,0x25,0x86, - 0xa3,0x5e,0xfc,0xcf,0xf2,0x9c,0x35,0xa6,0x1c,0x87,0xd1,0xe6,0x19,0x0a,0xfa,0x93, - 0x8d,0x91,0x31,0xa9,0x61,0x42,0xfe,0x27,0x49,0xf9,0x9f,0x06,0x38,0xa1,0xd1,0xc0, - 0xca,0xdd,0x00,0xcf,0xfb,0x12,0x78,0xc5,0x8d,0x7f,0x58,0xfc,0xe2,0x56,0xc1,0xcd, - 0xd8,0x20,0x18,0x7f,0x61,0x97,0x12,0xcb,0x0a,0xf4,0xca,0x06,0x7d,0xfd,0xee,0xc0, - 0x3f,0x3e,0x2b,0xde,0xd1,0xfe,0x3e,0xec,0xcf,0x77,0x09,0xb1,0xc5,0x46,0xbe,0x86, - 0x11,0x47,0x9e,0xfa,0x1f,0x36,0xf1,0xfa,0x71,0x75,0x1f,0xec,0xda,0x36,0x69,0x55, - 0x53,0x35,0x5e,0x61,0xf5,0x16,0x8a,0x3d,0xf8,0x1f,0x73,0x3e,0xcc,0x3d,0x15,0xfc, - 0x36,0x77,0xfd,0x8a,0xf5,0x55,0xc9,0xe6,0x52,0xaa,0x6f,0x39,0x86,0xef,0x1f,0xf5, - 0xe0,0x7f,0x74,0x99,0xd3,0xf7,0x20,0x79,0x2a,0x70,0x61,0xc3,0x90,0x32,0x22,0x36, - 0x2e,0x2c,0x61,0x3b,0xc8,0xf2,0xf9,0x9f,0x67,0xcd,0xfc,0xd7,0x05,0x38,0xde,0xf6, - 0xbf,0x72,0xb0,0x19,0xa7,0xcd,0xe5,0xa9,0xe3,0xe9,0x1b,0x75,0xfd,0x4f,0xce,0xfe, - 0x14,0xf6,0x94,0x22,0xfe,0x21,0xaf,0x83,0xa0,0xdc,0x99,0xd3,0xff,0xf8,0x0d,0xfe, - 0xe7,0xac,0x03,0xff,0x44,0x78,0x23,0xe9,0x50,0x37,0xbb,0x0f,0xb6,0xda,0x97,0x15, - 0xba,0xde,0x49,0x07,0x7e,0x87,0x7d,0xe6,0xfc,0xd1,0xa6,0x19,0x20,0xb3,0x87,0x9c, - 0x83,0xad,0xc5,0x61,0x7d,0x63,0xbb,0x29,0x84,0xc6,0x7f,0x58,0xed,0xd4,0x3f,0x03, - 0xab,0x3f,0x8c,0xcb,0x84,0x9e,0x45,0xaf,0xc3,0x29,0xf9,0xce,0x1c,0xed,0x10,0xd4, - 0x1b,0x34,0xa3,0x3a,0x45,0xfb,0x92,0xf9,0xfc,0x6d,0xa2,0xb5,0xff,0x7d,0xb8,0x6c, - 0xe8,0xa1,0xef,0x7a,0xe7,0x43,0x07,0xbd,0xea,0x1f,0x46,0x60,0x50,0x76,0xca,0x5a, - 0xcc,0xe7,0xdb,0xf1,0x0f,0x6f,0xe0,0x9f,0x47,0x48,0xa9,0xa8,0xfe,0x55,0x75,0x0e, - 0xc8,0x19,0x8d,0x5a,0x3d,0xff,0x65,0xfe,0x69,0xb9,0xf9,0xd0,0x24,0xa7,0x5d,0xcb, - 0x2e,0x5d,0x0f,0xef,0xcc,0x7f,0x01,0xc5,0x3f,0x77,0x0f,0x4e,0x6f,0x25,0xf7,0xf0, - 0x4f,0x32,0x19,0x8c,0x41,0x83,0x4c,0xd7,0x1b,0xb3,0x5c,0xf9,0x2f,0x30,0xf6,0xbf, - 0xcf,0xeb,0x58,0x02,0x2f,0xd1,0x6a,0x3f,0x09,0x7c,0xac,0x4d,0xff,0x13,0xef,0x73, - 0xe6,0xbf,0xae,0x33,0xf4,0xcf,0xad,0x5c,0x97,0x9c,0x15,0x73,0x66,0xe9,0xcd,0xd9, - 0xe7,0x7d,0x7b,0xfd,0xe7,0x49,0x3a,0x2c,0x0c,0xf5,0x30,0xb7,0x5c,0x40,0xff,0x93, - 0xd3,0x3f,0x0f,0x5a,0xf5,0x0f,0xcb,0x44,0xbe,0x33,0xe7,0x58,0xdc,0xfa,0x1f,0xb3, - 0x3f,0x30,0xfc,0x83,0xc3,0x1c,0x21,0xf5,0xf0,0x40,0x6e,0xbc,0x15,0x56,0x46,0xac, - 0x80,0xfe,0x39,0x42,0x26,0x83,0xa2,0x39,0xcd,0x68,0xe3,0x7f,0xac,0xf7,0xe1,0x29, - 0xfe,0xa9,0x57,0x42,0xd9,0x8e,0x4f,0xde,0x73,0x42,0xc6,0x06,0x5d,0x26,0x7f,0x04, - 0x7b,0x1d,0xfc,0x8f,0x4d,0xff,0x6c,0xe4,0x23,0x96,0x6f,0xa4,0xf1,0x48,0xf4,0xd2, - 0xc3,0xb8,0xf0,0xcf,0x4e,0x73,0x7f,0xf7,0x5b,0x70,0x44,0x60,0x0b,0x7f,0x07,0x42, - 0xa8,0x97,0x97,0xa7,0xa7,0x1c,0x9e,0x9a,0xc3,0x3f,0x06,0x9e,0x79,0x98,0xbc,0xc9, - 0xbf,0xd2,0x9b,0xaf,0xe7,0x09,0xbb,0xf8,0x1f,0x30,0xf1,0x4f,0xd9,0x80,0xb8,0x4e, - 0xcb,0xef,0x6f,0xf0,0x3f,0xe6,0x9f,0xb5,0xff,0x2b,0x1e,0xce,0x25,0x86,0xd8,0x15, - 0x9d,0x0f,0x31,0xf6,0x43,0x59,0xfd,0xeb,0xca,0x6d,0xf8,0xa7,0x0f,0xee,0xcf,0x1b, - 0x2f,0xe3,0x7f,0xce,0x58,0xf5,0x0f,0x7b,0x4c,0xfc,0xd3,0xc2,0x5d,0x64,0x85,0x80, - 0x36,0xd9,0x68,0x0d,0xc6,0xff,0x38,0xf1,0x4f,0xdd,0x24,0x63,0x93,0x7b,0x0b,0x37, - 0x15,0x5e,0x84,0x5a,0xbd,0xdb,0xc7,0x78,0x65,0x95,0xb1,0xa3,0xdc,0x99,0xff,0x2a, - 0x17,0xb3,0xbc,0xae,0x7f,0xfe,0x62,0xca,0xe7,0xd7,0x0b,0x01,0xe9,0x88,0xc8,0x8f, - 0x0d,0xa1,0x47,0x0a,0x3b,0xf3,0x5f,0x66,0xfd,0xe7,0x75,0x22,0x59,0x81,0xce,0xbd, - 0x2a,0x37,0x5e,0x5d,0xef,0x2d,0x54,0xb9,0xf4,0xcf,0x53,0x75,0xfc,0x53,0xfc,0xd0, - 0xf6,0x15,0xca,0x23,0xe2,0x6c,0x79,0xba,0x69,0x4f,0xbf,0xcd,0xfe,0x39,0xfd,0xf3, - 0x76,0xde,0x80,0xb5,0x0f,0x73,0x2b,0x22,0x47,0xb4,0x5a,0xf3,0xf7,0x8d,0x19,0xfa, - 0x76,0x9e,0xbd,0xff,0xa0,0x55,0xff,0x70,0xd0,0x98,0x0f,0xb1,0xad,0xdc,0x9b,0xe4, - 0x6d,0xa5,0xde,0x02,0x8a,0x0b,0xed,0xfc,0xcf,0x47,0xf9,0xfb,0xbf,0x1e,0xe0,0xc2, - 0x8b,0x4f,0xc9,0xb5,0x79,0xf6,0x67,0x85,0x08,0x72,0xfb,0xbf,0x80,0xd5,0x3f,0x8c, - 0x2a,0x81,0x95,0xe4,0x87,0xb0,0xe6,0x4b,0xd5,0x66,0x22,0x2c,0x6a,0x36,0x6a,0x75, - 0x45,0x90,0xe9,0x1f,0x04,0x73,0xfd,0x35,0x9b,0x00,0x69,0x97,0xdd,0xfe,0xe7,0x80, - 0xfe,0xe1,0x1c,0xb5,0xe6,0x43,0xc5,0x35,0x06,0xfe,0xd1,0xca,0x7a,0x60,0x2d,0xcc, - 0x71,0x7c,0xb6,0xb4,0xc1,0x36,0xc2,0xf7,0x99,0x8f,0xcf,0xed,0xff,0x5a,0xc9,0x5d, - 0x6b,0xf0,0x3f,0xc4,0xa6,0xff,0x19,0x1f,0x66,0x57,0x8e,0x86,0xad,0xf9,0x69,0xe0, - 0x81,0xe5,0xf8,0xf5,0x21,0xd4,0x35,0xf9,0x0d,0x93,0x0f,0x19,0x93,0x74,0xfc,0xb3, - 0xd6,0x1c,0x6f,0x8a,0x7f,0x96,0x15,0x39,0x0c,0x8d,0x71,0x3f,0x96,0x5f,0x48,0xb3, - 0xb4,0xc5,0x2f,0x64,0x3b,0x22,0x62,0xfb,0xbf,0x72,0xfa,0x67,0x78,0x94,0xd6,0x7f, - 0x1e,0x0a,0x7c,0xbd,0xbd,0x54,0x59,0xa3,0x7e,0x9a,0xee,0xbf,0x38,0xa3,0xcb,0x92, - 0x73,0x03,0xe1,0x9e,0xb0,0xf4,0xd5,0x8a,0xa8,0xef,0x76,0xf7,0x7f,0x83,0xfc,0x4e, - 0xee,0x94,0x66,0xe5,0x8d,0xb7,0xc6,0xb9,0xff,0x4b,0x9e,0x4a,0xe3,0x5d,0xf0,0x10, - 0xfa,0x9f,0x65,0xa0,0x64,0xab,0xac,0xfd,0x17,0x0e,0xc3,0xda,0xf6,0x7f,0x19,0xeb, - 0xc7,0xd2,0xc8,0xe4,0x73,0x53,0x95,0xae,0x5a,0x73,0xa1,0xed,0x10,0x36,0xdb,0xf0, - 0xad,0x6a,0xc6,0xa3,0xce,0xc9,0xbb,0xe4,0x11,0xf9,0x7e,0xd6,0xcd,0x37,0xe6,0x73, - 0xf2,0xed,0xaa,0xf5,0x7b,0x99,0xf8,0xa7,0x34,0xcb,0xad,0x2e,0xac,0x77,0xcd,0xe9, - 0x9f,0x0f,0x19,0xf9,0xaf,0xa5,0x3b,0xc9,0x0d,0x91,0x1e,0x6d,0xaf,0xb7,0x9e,0x67, - 0xd8,0xfa,0x7d,0xe9,0xfe,0x2f,0x26,0x53,0x51,0x8b,0xee,0x82,0x9e,0xae,0x7c,0xfd, - 0x8f,0x5b,0xff,0x0c,0x41,0x9e,0xc2,0x9e,0x80,0xda,0x24,0xc8,0x19,0x9c,0x5d,0x4b, - 0xd1,0x2c,0xaa,0xdb,0x3e,0x39,0xff,0x03,0x40,0xf7,0xbf,0x27,0x4f,0x85,0x70,0x35, - 0xaa,0x8c,0x48,0x66,0x61,0x4c,0x48,0xf6,0x06,0x6c,0xf6,0xd1,0xac,0xfa,0xf3,0xea, - 0x35,0x0c,0xe6,0xfd,0x3a,0x94,0xe2,0xde,0x4e,0x8f,0xc8,0x66,0x59,0x1b,0xc1,0x1a, - 0x2f,0x2b,0x05,0x30,0x38,0x39,0x8f,0xff,0xb9,0x30,0xe5,0x92,0x82,0xff,0xb0,0x6f, - 0xd3,0x05,0xc6,0x2f,0xdd,0xa8,0x6d,0x1c,0xe1,0x3e,0xf4,0xd0,0xff,0x80,0xa1,0xff, - 0xd9,0x1f,0x3e,0x2f,0x1f,0xe8,0x8f,0x0d,0x07,0xfe,0x85,0xbc,0x27,0xbf,0xd3,0x3f, - 0x17,0x7d,0x0f,0xdd,0x9f,0x95,0xa7,0xff,0x01,0xfa,0x7d,0xb1,0x4d,0x5e,0xbd,0xb0, - 0x8d,0x44,0xfa,0x37,0xe8,0xc3,0x64,0x89,0x89,0x01,0xbd,0x30,0x94,0x73,0xff,0xd7, - 0x6e,0x97,0xb5,0x9f,0x26,0xef,0x52,0x61,0x27,0x85,0x91,0x03,0xf9,0xfb,0xbf,0xc0, - 0xe4,0x1f,0x14,0x16,0xad,0xee,0x7f,0x21,0x94,0xa9,0x1c,0x40,0xb7,0x50,0x4b,0xf1, - 0xcf,0x0b,0xa6,0x62,0x27,0xf7,0xfb,0xaa,0xd7,0xe8,0xf8,0x67,0x53,0x96,0x9e,0x76, - 0x41,0xd8,0xe8,0x2e,0xc1,0xf9,0x22,0x66,0x9f,0xf1,0x09,0xf0,0xcf,0x66,0x8e,0x6d, - 0x64,0x7e,0x29,0xf4,0x24,0x2d,0xd3,0x21,0x25,0x7b,0x69,0x7d,0x63,0xf3,0xf9,0x0e, - 0xfe,0x87,0x37,0xf0,0x1b,0xda,0x67,0x21,0x5a,0x63,0x5f,0xd9,0xbb,0xda,0x01,0xb9, - 0x26,0x1b,0xa1,0xef,0x6f,0xe9,0x9f,0xcd,0x3f,0x0b,0xff,0x2c,0x20,0xcb,0xe4,0x6e, - 0x59,0x12,0x8b,0xa1,0xec,0x73,0xbe,0x6e,0x91,0xe1,0xc3,0x5e,0xd3,0x3e,0x6e,0xfc, - 0xa3,0xf3,0x21,0xe2,0xbe,0xad,0x25,0x3b,0x03,0x7f,0x17,0x7e,0x55,0xd9,0xd7,0x19, - 0x1d,0x11,0x6c,0xf9,0x20,0x1b,0xfe,0x29,0x0f,0x1a,0x22,0xe7,0x8e,0x5e,0x5a,0x1d, - 0xf4,0xae,0x90,0x48,0x37,0x82,0x29,0x0d,0x43,0xf4,0xfc,0x0b,0xf8,0x4d,0x9e,0xfe, - 0x27,0x68,0xe7,0x7f,0x7c,0x8c,0x5d,0x1c,0x92,0xc7,0x3f,0xdd,0xf8,0xba,0x77,0xfe, - 0x4b,0x30,0xed,0xdf,0xc5,0x55,0xc3,0xab,0xca,0xff,0x25,0x05,0xbb,0xb8,0x30,0xf4, - 0x29,0x09,0x5a,0xa8,0x6a,0xc0,0x63,0xff,0x97,0x89,0x7f,0x52,0xa4,0x1c,0xd6,0x40, - 0x45,0x9b,0xc0,0x1a,0xbe,0x8a,0x21,0x6f,0xfc,0x63,0x9d,0x7f,0x51,0x4e,0x8a,0xa0, - 0x4d,0x91,0x52,0x42,0x39,0x02,0x9b,0x87,0x10,0xff,0x2c,0xf5,0xdc,0xff,0xb5,0xd2, - 0xe2,0x7f,0xfc,0x41,0xd2,0xd1,0xac,0x6a,0x11,0xda,0xd8,0xa2,0xa8,0x8e,0xef,0xcb, - 0x8d,0x7f,0x10,0xe4,0xbc,0xdb,0x71,0x13,0x9c,0x59,0x78,0x63,0x5b,0x30,0xcb,0xd5, - 0xc3,0x99,0xe6,0xc4,0x15,0xf0,0x4f,0xc8,0xa8,0xbe,0x62,0x10,0x23,0xd2,0x15,0xf1, - 0x8f,0x2d,0xdb,0xc5,0xf6,0xfb,0xc8,0xc1,0xcd,0xde,0xfa,0x67,0x0b,0xff,0xbc,0x41, - 0xab,0xf7,0xb4,0x2c,0x65,0x8d,0x26,0x46,0x04,0x15,0xd0,0x3f,0xeb,0x17,0xdb,0x07, - 0xa4,0xfd,0x42,0xac,0x89,0x36,0x2a,0x1e,0x11,0x9c,0xfd,0x6d,0xf8,0xc7,0xe4,0x7f, - 0xca,0xda,0x7b,0xd5,0x3d,0x73,0xa2,0x4b,0xf4,0x46,0x24,0x7a,0x97,0x60,0x29,0x82, - 0x1c,0xfc,0xcf,0xf5,0x29,0x6b,0xdb,0x17,0xf5,0x3f,0xc5,0x66,0x43,0x88,0xd8,0xc6, - 0xeb,0x81,0x7f,0x98,0xfe,0x99,0x26,0xc2,0xb0,0x21,0x7c,0xac,0xc3,0x98,0x8b,0xe6, - 0x78,0x73,0xe7,0x5f,0xd4,0x59,0xfc,0x4f,0xc7,0x4e,0x69,0x54,0xd0,0x0d,0xa5,0xe0, - 0x95,0xe6,0x90,0x5d,0xff,0x6c,0x7d,0xef,0xe5,0x82,0xc1,0xff,0x74,0x92,0x0a,0x26, - 0x84,0xa6,0x65,0x7f,0x82,0x3d,0x0b,0xe7,0xea,0xf5,0x0f,0x4d,0xfd,0x73,0x91,0x1b, - 0xff,0x04,0x4e,0xb1,0xd3,0x61,0x6a,0xbe,0x15,0xf8,0x4a,0xd9,0xbf,0xc1,0x53,0x2f, - 0xd4,0xb4,0xd8,0xf5,0xcf,0x36,0xfc,0x63,0x9e,0x7f,0xd1,0x42,0xbe,0x0d,0xff,0xc2, - 0xcf,0x95,0x03,0x54,0xf6,0xf3,0x2f,0x30,0xd7,0x01,0x2c,0xdf,0xb4,0xf8,0x19,0x75, - 0xaa,0x0d,0xdf,0x8e,0x6a,0xf7,0xb7,0x84,0x1e,0xae,0x44,0xff,0xb0,0xd0,0x99,0xcf, - 0x1a,0xb4,0xfc,0xe7,0x60,0xae,0xfe,0xf3,0x4e,0x65,0xb4,0xe2,0x7e,0xb3,0x5b,0x2d, - 0x63,0x08,0xcd,0xfd,0x6e,0x1f,0x59,0xf1,0xd7,0xc2,0x3f,0xda,0x17,0xe9,0x0e,0x89, - 0xf9,0x10,0xa4,0xe7,0xfb,0x0c,0x61,0xc3,0x91,0xff,0xb2,0xf0,0x8f,0x60,0xd5,0x7f, - 0xa6,0x69,0x2f,0x08,0x2b,0x5d,0x6a,0x13,0x6b,0x6c,0xb7,0xeb,0x9f,0xfb,0x24,0xd3, - 0x3f,0x08,0x39,0xfd,0xcf,0x83,0xb0,0x43,0x91,0xb2,0xfe,0x3a,0x5a,0xff,0x50,0xa1, - 0x15,0xfc,0xec,0xf9,0x2f,0xf3,0x4f,0x32,0xf9,0x1f,0x99,0x4c,0x81,0xce,0xde,0x8a, - 0xb8,0x7f,0x19,0x49,0x88,0x9d,0x5a,0x05,0xa0,0xc5,0xac,0xef,0xd7,0x86,0x7f,0xca, - 0x0d,0xfc,0x23,0x71,0xeb,0xc9,0xeb,0x4a,0x46,0x8d,0x45,0x02,0xf5,0xf0,0xba,0xb2, - 0x47,0x0d,0xdd,0x96,0xd3,0x3f,0xdb,0xf0,0x4f,0x89,0x79,0xbe,0x43,0xae,0x1a,0x80, - 0x65,0xc6,0x1c,0xff,0xb3,0xc6,0x1c,0x6f,0x6a,0xea,0xb3,0x26,0xc8,0xa9,0x85,0x17, - 0x95,0xe4,0x8a,0xd0,0x2b,0xdc,0x65,0xf9,0xe3,0xb6,0xc6,0xd4,0xf2,0xdb,0x38,0x6b, - 0xff,0x4e,0xff,0x4e,0x1b,0xfe,0x31,0xde,0x9f,0xbb,0x0d,0x7e,0x7b,0x4d,0x8d,0x1a, - 0xb8,0x8b,0xbc,0x04,0x4f,0x43,0xb4,0x13,0xdf,0xff,0xd1,0x42,0xf9,0x2f,0xe6,0xaf, - 0x44,0x9c,0x4a,0x35,0x82,0xbf,0x89,0x9c,0xd2,0x9e,0x14,0x6b,0x24,0xec,0x7f,0x5d, - 0x21,0xfc,0xc3,0xea,0xfb,0x2d,0x33,0xbd,0x77,0xaf,0x71,0x22,0x06,0x5a,0x38,0x1f, - 0xff,0x98,0xfc,0xcf,0x56,0x2e,0x06,0xc7,0xf4,0x8d,0xd8,0x6f,0xb2,0x63,0x05,0x70, - 0xbc,0x51,0x29,0xcf,0x7f,0xaa,0x30,0xa4,0x6f,0xf2,0x8a,0x70,0x87,0x85,0x11,0x25, - 0x29,0xa1,0xe3,0x3d,0x0a,0x23,0x0a,0x2e,0x4c,0x72,0xf6,0x99,0x92,0xb5,0xfc,0x9b, - 0xc5,0xff,0xb4,0xe1,0xfa,0xfd,0x04,0x65,0xef,0xb3,0xdc,0xb0,0x7c,0x82,0x6b,0x6c, - 0x63,0x81,0x2f,0x0f,0xff,0xd8,0xf4,0x3f,0x34,0xb1,0xce,0xce,0x7f,0x19,0xd2,0xf3, - 0xe9,0x3d,0x9e,0xf8,0x67,0x92,0xd1,0x9f,0x1d,0x13,0x43,0x62,0x0b,0xbf,0x9c,0xbe, - 0x73,0x00,0xd6,0x15,0x61,0xff,0xcd,0x9e,0xfa,0x67,0x30,0xe2,0x9d,0xe4,0x17,0x60, - 0x3b,0x89,0xb6,0x4f,0x0f,0x93,0x23,0xa4,0x5d,0x44,0xfb,0xdb,0xe6,0x9b,0x8d,0xff, - 0x29,0x5f,0x65,0xc6,0x77,0x89,0xae,0xaf,0x83,0xb4,0xcc,0x7e,0x17,0xcb,0xbf,0x4f, - 0xa4,0x7f,0x36,0xd1,0xce,0x8d,0x7d,0x18,0xaf,0x31,0x7e,0x49,0x8d,0x47,0xbc,0xf5, - 0x3f,0x00,0xa4,0x93,0x55,0xe1,0xf5,0x8b,0x13,0x34,0xc0,0xfe,0xc7,0x03,0xbe,0x9d, - 0x8c,0x1e,0x78,0x82,0x86,0xfd,0xaf,0x13,0x2a,0x40,0x90,0xd9,0xf4,0x29,0xd8,0xf8, - 0x8f,0x3c,0x5f,0xa1,0xc9,0x13,0xfd,0xcc,0xb3,0x82,0x0d,0xdb,0xdf,0xc4,0x1d,0xf5, - 0xc6,0x7f,0xe4,0xf9,0x7f,0xee,0xdf,0x7f,0x32,0xfb,0x8b,0xf4,0x2c,0xbf,0xe3,0xf0, - 0xf7,0x70,0x9d,0x36,0x41,0x83,0xff,0x77,0x3f,0xff,0xff,0x65,0xfb,0xf3,0xa2,0x72, - 0x15,0x36,0xf7,0xd9,0xf8,0xa5,0x3f,0xef,0xaf,0xa1,0xe1,0x6a,0x7a,0x85,0x42,0xff, - 0xce,0xc7,0xff,0x7f,0xf0,0xd7,0x38,0x3e,0x3e,0xae,0x5d,0xa1,0xf1,0xff,0xe7,0xfe, - 0xff,0xc9,0xbe,0xc7,0xff,0xf2,0x87,0xff,0xe5,0x0f,0xff,0x03,0xf6,0xff,0x2f,0x7f, - 0x78,0xa5,0xbf,0xff,0x6c,0xfe,0xe7,0x3f,0x57,0x7f,0x6d,0x1a,0xe5,0xc7,0x6e,0xa1, - 0xc7,0x22,0x5c,0x2e,0x37,0x76,0x13,0x9c,0x07,0x37,0xbf,0xea,0xd2,0x47,0x75,0xce, - 0x1d,0x16,0x54,0xca,0x0e,0xb5,0x25,0xad,0x8d,0x72,0xd8,0xe0,0x7e,0x61,0xd5,0x07, - 0xb0,0xf0,0xbc,0x00,0xec,0xbc,0xce,0xc5,0x82,0x44,0x86,0x4c,0xf5,0x7b,0x3e,0x5f, - 0x9a,0x97,0x1f,0x94,0x05,0x75,0xcd,0x4f,0xe9,0x69,0x20,0x0e,0xbe,0xd1,0xa2,0xce, - 0x72,0xfc,0x98,0x4f,0x3f,0x9f,0x74,0xd7,0xc6,0x9d,0xe4,0xfc,0xc3,0xba,0x7a,0x9f, - 0x1b,0x02,0x6b,0xc7,0xdc,0x98,0x9b,0x1f,0x33,0xf2,0x83,0x03,0x21,0x0d,0x57,0xeb, - 0x16,0x90,0x7e,0x4f,0x6f,0x1c,0x2c,0xc8,0x8f,0x2d,0x2e,0x55,0x11,0x66,0x1f,0x33, - 0x1f,0xeb,0xd6,0x3f,0xbb,0xf3,0x83,0xd1,0x6f,0x0b,0x9d,0x84,0x67,0x6c,0x5e,0xa9, - 0x17,0xbf,0x9a,0x57,0x1f,0x12,0xfc,0x61,0xff,0x83,0x85,0xed,0x93,0xa7,0x8f,0x4a, - 0x09,0xdf,0x29,0x9a,0xa9,0xac,0xd5,0xab,0x41,0x9e,0x51,0xdc,0x7a,0xe9,0x53,0xbc, - 0x6c,0xf4,0xd7,0xeb,0x43,0x36,0x28,0xa5,0xea,0x94,0x5f,0x28,0xcf,0xef,0x61,0x6c, - 0xd8,0x09,0xe5,0x83,0x9c,0x3e,0x5c,0xe7,0xc7,0xac,0x03,0xb4,0x8c,0xfa,0x48,0x03, - 0x38,0xa8,0x83,0xac,0x3e,0x52,0x29,0x3d,0x8f,0x26,0xaf,0x3e,0x80,0xb5,0x7e,0x8c, - 0xe8,0xf6,0x2f,0x0f,0xaa,0x34,0x5b,0xed,0x32,0x8b,0x2d,0x3f,0x68,0xae,0x07,0xfb, - 0x44,0xb6,0xde,0x6c,0x6a,0xc6,0xd5,0x25,0xf9,0x37,0x9d,0x8d,0xd7,0x97,0xd5,0x21, - 0x1b,0x3f,0x76,0x8f,0x2b,0x3f,0x18,0x55,0xfd,0x83,0x45,0xd6,0xee,0xbf,0x89,0xeb, - 0x23,0xe9,0xeb,0xd3,0x72,0x91,0x14,0x9b,0xf6,0xdc,0x98,0x67,0xcf,0x97,0x26,0x99, - 0xef,0xa3,0xd7,0x47,0x6a,0x54,0xa2,0xaf,0x73,0x75,0xf2,0x7a,0x98,0x61,0xe6,0x07, - 0x93,0x85,0xf8,0x31,0x4b,0x1f,0x15,0x70,0xa5,0x05,0xf5,0x83,0x33,0x58,0xbd,0x1a, - 0xee,0x56,0x97,0x3e,0xaa,0x41,0x0e,0x3e,0xcc,0xcd,0x86,0x57,0xe0,0x13,0xe6,0xb6, - 0xf1,0xda,0x09,0xeb,0x03,0xc4,0x64,0x49,0x24,0x6b,0xec,0x32,0x6f,0x5b,0x63,0xba, - 0x57,0x7d,0x48,0x2a,0xa3,0x4a,0x3d,0xa2,0xaf,0x67,0xf3,0xeb,0x09,0xe4,0xf1,0x63, - 0x4b,0xb0,0x7f,0xa7,0x33,0x5f,0xe6,0xd8,0x2f,0x6f,0xf5,0x5f,0x2d,0x48,0x66,0x35, - 0x24,0xe0,0x4f,0x91,0xfc,0xfc,0x14,0xdb,0x3a,0x97,0xe3,0xc7,0x74,0x7d,0x54,0xa3, - 0x1c,0xba,0xb5,0xc3,0xaa,0x86,0x94,0x5f,0x0f,0xc1,0xa9,0x8f,0x7a,0x05,0x1a,0x53, - 0xc1,0x7e,0xee,0xdb,0xf0,0x62,0xae,0x5b,0xa3,0x6c,0xaf,0x1f,0x65,0xd3,0x47,0x95, - 0xb3,0xfc,0xa0,0x88,0x51,0x90,0xca,0xa2,0xbe,0x91,0xa3,0xc5,0xe8,0xf9,0x68,0x41, - 0x93,0x1f,0x73,0x9e,0x0f,0x02,0xd1,0x7e,0xa1,0x6c,0x0d,0x2f,0xb5,0xc1,0xaa,0x5c, - 0x3d,0x04,0x7b,0x3d,0xa8,0x1c,0x3f,0xb6,0x55,0xd7,0x47,0xb5,0x08,0x71,0xff,0x62, - 0xa7,0xfd,0xed,0x7c,0xe3,0x9b,0x0e,0x7d,0x14,0x55,0x37,0x45,0xd3,0xbe,0x15,0xe1, - 0x23,0xac,0x9e,0x43,0x4e,0x16,0x4e,0xf3,0x83,0xee,0xfa,0x48,0xd7,0xec,0x84,0xef, - 0x50,0x9a,0x3a,0xcd,0xed,0xe4,0xed,0xd3,0x60,0xe1,0xdc,0x89,0xf2,0x83,0x62,0xb4, - 0xed,0xf9,0x14,0xf1,0xae,0xcf,0xe0,0xe0,0xc7,0x24,0x5d,0x1f,0x9e,0x8e,0x0c,0x90, - 0x03,0xfc,0x7a,0x5f,0x0c,0x3f,0x7c,0x23,0x3f,0x58,0xea,0xc9,0x8f,0x45,0x3a,0x8d, - 0x22,0xb4,0x75,0x45,0x25,0x8a,0x71,0x2c,0x88,0x57,0x7d,0x00,0xf3,0xaf,0x02,0xae, - 0x33,0x8a,0x60,0x17,0x95,0x4b,0x6b,0x61,0x96,0x46,0x72,0xc2,0x21,0x4f,0x7e,0xac, - 0x6b,0x86,0xb8,0x4f,0x69,0xc8,0x46,0x57,0x4f,0xae,0xe5,0x1f,0xeb,0xbc,0xe5,0x6c, - 0xc8,0xab,0x3e,0x80,0x8d,0x1f,0xbb,0x8e,0xf9,0x13,0x79,0x72,0x26,0xf4,0x93,0xb4, - 0xe9,0x46,0xae,0x71,0xfb,0x93,0x1c,0x3f,0x66,0xd4,0x87,0xa4,0x6a,0x96,0xff,0x0e, - 0xbf,0x52,0xf6,0x99,0x61,0x2b,0xe9,0xcc,0x0f,0xda,0xcf,0x07,0x91,0xf7,0xc1,0x4d, - 0x2d,0xc2,0x77,0x3b,0x4e,0x68,0xbf,0xc9,0x54,0xf4,0x86,0x0c,0xff,0xc3,0xf8,0x79, - 0x39,0x8f,0x1f,0x53,0xd8,0xf9,0xb0,0x51,0xad,0xf8,0x1e,0x72,0x11,0xd6,0x4a,0xce, - 0xb4,0xa0,0x47,0x7e,0x50,0x3f,0x1f,0x2d,0xd2,0xf4,0xb9,0x05,0xe4,0x31,0x79,0x8b, - 0xbe,0xbb,0x67,0x23,0xdd,0x11,0x5f,0x28,0x3f,0x38,0x95,0x8e,0xb7,0xa1,0xbf,0xa6, - 0x01,0xde,0xc5,0x78,0x31,0xc3,0x08,0x13,0xfc,0xfd,0x4e,0xff,0x69,0xab,0x17,0xc7, - 0xec,0x93,0x2e,0xdd,0x49,0xcf,0x03,0x35,0xd2,0xa6,0x82,0xdb,0x3e,0xf6,0xfa,0x90, - 0x7a,0x50,0x0b,0x5e,0xea,0xb8,0x28,0x9d,0x34,0xdd,0xf8,0xff,0x9e,0x20,0x3f,0xa8, - 0x9f,0xc6,0x1e,0xd9,0x4d,0x66,0x49,0xef,0x40,0xbd,0x29,0xf3,0x2e,0x2d,0x94,0x1f, - 0xf4,0xb1,0xfe,0x59,0x3d,0x7b,0xc5,0x5b,0x85,0x01,0x67,0x3b,0xfa,0x3b,0xf4,0x51, - 0x34,0x3f,0x28,0x0b,0x7b,0x49,0xf0,0xf0,0x96,0x54,0x44,0xfb,0x32,0x95,0xcd,0x6f, - 0x81,0xe0,0xe1,0x09,0xeb,0x03,0x68,0xc1,0xcd,0xdc,0x1f,0xc3,0xc7,0x8c,0x7a,0x11, - 0xf2,0x04,0xf5,0x01,0x3e,0xc9,0x06,0x25,0x07,0x1e,0xe6,0x5e,0x56,0xde,0x31,0xf2, - 0x83,0x4a,0x9e,0xfe,0x27,0xa7,0x8f,0xfa,0x27,0x6b,0x92,0xdc,0x1f,0x1c,0x6f,0xc7, - 0x78,0xb7,0x77,0x4b,0x0c,0x9e,0x83,0x1b,0xb5,0x12,0x4f,0xfc,0xa3,0xd9,0xeb,0x03, - 0x1c,0x50,0xe6,0xfe,0x4e,0xb8,0xd8,0x8e,0xfd,0xbf,0x91,0x7c,0x55,0xb0,0x15,0x4a, - 0x1a,0xce,0xd5,0x87,0x04,0xe3,0xbc,0x60,0xa6,0xce,0x85,0xe8,0xe1,0x6b,0x13,0xd7, - 0xe2,0x17,0xd7,0x1c,0xe9,0x65,0x89,0x63,0xca,0xa0,0x2e,0x8d,0x97,0x5d,0xc8,0xe9, - 0xc3,0xa7,0xda,0xf3,0x83,0x24,0x46,0x0f,0x0a,0xd1,0x15,0x47,0xcd,0x39,0x7b,0x42, - 0x4e,0x1f,0xbe,0xd0,0xd2,0x87,0x73,0xab,0x04,0x0a,0x4b,0x8a,0xa8,0x3e,0x7c,0x0c, - 0xea,0x3b,0x1d,0xf3,0xc1,0xf2,0x3f,0x8e,0xfa,0x90,0xcf,0x61,0xe3,0x7a,0x63,0x3f, - 0x82,0x6a,0xd4,0x87,0xfc,0x1e,0xb3,0x8f,0xc5,0xff,0xbf,0x2c,0xee,0x76,0xa0,0x9d, - 0x43,0xc1,0x61,0x6e,0x15,0x7c,0xe0,0x8b,0x2d,0x2c,0xb5,0xd5,0x2b,0xf3,0xd2,0x87, - 0x03,0xd3,0x87,0x6b,0x7e,0x5a,0x98,0xf4,0x39,0x3e,0xa6,0x17,0x0e,0x7d,0x47,0x1f, - 0xda,0x87,0xd6,0x7c,0xd0,0xf8,0x65,0xfc,0x0e,0x5f,0x54,0xe3,0x4c,0x7d,0x66,0x80, - 0x1e,0x24,0xd7,0xed,0x8b,0x69,0x2b,0xe3,0x60,0xcd,0x87,0x8f,0x72,0xf5,0x21,0xc5, - 0xdb,0xf3,0xa2,0xff,0x0c,0x61,0xdf,0xf6,0x92,0x2c,0xcb,0x0f,0x1a,0x07,0x67,0x8c, - 0xd8,0xf4,0xe1,0xcb,0xe0,0x0f,0xf8,0x10,0x8a,0x76,0xe4,0x0f,0xc4,0xe4,0x60,0xa0, - 0x8e,0xfb,0x02,0x7c,0x20,0x5e,0x47,0xb7,0xc5,0x1d,0x2f,0xce,0xaf,0x8f,0x34,0x2d, - 0x67,0x9f,0x6b,0xb0,0xf1,0xf2,0xfa,0xf7,0xdb,0x10,0xff,0xb4,0x26,0x7b,0x99,0x3e, - 0x3c,0x3f,0x3f,0xc8,0x5b,0xfa,0x31,0x3a,0x51,0x63,0xa7,0xaf,0xbb,0x40,0xcb,0x52, - 0x55,0xec,0x85,0xa8,0xf7,0xfe,0xb8,0x72,0xa7,0x3e,0x5c,0xfb,0x3f,0xbe,0xc5,0x7d, - 0x05,0xde,0x92,0x70,0xdd,0x68,0xcf,0x0f,0x56,0x99,0xcf,0x97,0x6c,0xfa,0x70,0x91, - 0x1e,0x03,0xd7,0x75,0x2f,0x2b,0x8b,0xed,0x2c,0x0c,0x95,0xb5,0xf0,0xea,0x20,0xef, - 0x42,0x3b,0x9f,0x8c,0xfb,0xd1,0xc2,0xf0,0xd3,0x0b,0xf6,0xfa,0x63,0x39,0x7d,0x78, - 0x76,0x9a,0x0b,0xed,0x6c,0xd4,0x0f,0x0a,0xb9,0x31,0x53,0xea,0x8d,0x7f,0x7c,0xae, - 0x7a,0x7d,0xa5,0xc0,0xd1,0x63,0xaa,0xea,0xf9,0xc0,0xd5,0xe4,0x07,0x1b,0xe4,0x12, - 0xba,0x6d,0xfc,0x7d,0x5f,0x42,0x5e,0x76,0x15,0xf5,0x21,0x89,0x5e,0xa8,0x10,0x1b, - 0xd5,0x05,0xf2,0x83,0x75,0xfa,0xfe,0xb8,0xdc,0x36,0x2e,0x3f,0xeb,0x5f,0x74,0xe7, - 0x42,0x67,0x7e,0xd0,0x9c,0x0f,0x91,0xa9,0xa6,0x3e,0xbc,0x08,0xa3,0xbf,0x2f,0xba, - 0xc4,0x5f,0xd6,0xde,0x09,0x7b,0xe6,0x08,0x05,0xea,0x43,0xae,0x2e,0x71,0x96,0x45, - 0x12,0xe6,0x12,0x5a,0x96,0x59,0x12,0xe9,0xb1,0x20,0xd6,0x78,0xcf,0xe7,0xf4,0xe1, - 0xce,0xf3,0x32,0x92,0x4b,0x3e,0xbf,0x79,0xcf,0x0a,0x7e,0x74,0x4e,0xe3,0x12,0x3b, - 0xfe,0xf9,0xd0,0xa5,0x0f,0x67,0xd9,0x31,0xb6,0x3b,0xfe,0x33,0x25,0xdf,0xa7,0x69, - 0xc4,0xf2,0x7b,0x9b,0x1c,0x78,0xc9,0xa6,0x0f,0x57,0x73,0xfa,0xf0,0x11,0x12,0x2b, - 0x2f,0x59,0x4b,0xb2,0xbe,0x1e,0xf9,0x69,0xd1,0x9e,0x1f,0x3c,0x93,0xc3,0x3f,0x7c, - 0xa7,0x1d,0xdd,0x45,0x58,0xa1,0x48,0x71,0x8f,0x24,0xdd,0xe5,0x5d,0x1f,0x69,0x2b, - 0xbf,0xd3,0xae,0xb7,0x8f,0xca,0xc5,0x69,0x5a,0x28,0xc9,0xe7,0x04,0x96,0x4e,0x7d, - 0xb8,0xbe,0x1b,0x8e,0xdd,0x9d,0xc1,0xf2,0x59,0xe2,0x7e,0xa8,0x4e,0x39,0xf2,0x83, - 0x96,0x3e,0xaa,0xcf,0xa1,0x0f,0x27,0x49,0xfc,0xbd,0xf4,0xc4,0x71,0xb3,0xb7,0x3e, - 0x4a,0x00,0xd5,0xb4,0xbf,0xca,0xd4,0x68,0x9b,0x58,0xa2,0xc4,0xc7,0x64,0xe1,0x1e, - 0xf8,0xc7,0x55,0x1f,0x60,0x36,0x36,0x96,0x44,0x04,0x9a,0x28,0x8c,0x18,0x15,0x23, - 0x9d,0xfa,0xa8,0x88,0xfd,0x3c,0xe5,0x6e,0x73,0x7f,0xee,0x06,0xbd,0x4c,0xb1,0xc7, - 0xfe,0x38,0x45,0xfc,0x0a,0x2d,0x0b,0x99,0x53,0x43,0x6d,0xb8,0x17,0xce,0xf8,0xd6, - 0x4a,0x15,0x67,0x9b,0x8d,0x8a,0x91,0xac,0x3e,0x80,0x6c,0x3e,0xbf,0xab,0xeb,0x76, - 0x07,0xda,0x19,0x58,0xfe,0x11,0x77,0x66,0xea,0xa2,0x4c,0x7c,0x88,0xb7,0xd7,0x47, - 0xca,0xd3,0x47,0x19,0xfe,0xf6,0x7b,0xfd,0xa1,0xa7,0x3b,0x82,0x30,0x26,0x3e,0xeb, - 0xc2,0x3f,0xa6,0x7d,0xc0,0xd4,0x47,0xe9,0xfb,0x9b,0xee,0x7f,0x3d,0x38,0xb2,0x25, - 0xb6,0x78,0x4c,0x99,0xff,0xfa,0x46,0x7b,0xfc,0xb2,0xf4,0x51,0x4f,0x18,0xfe,0x87, - 0xad,0xb6,0xde,0x22,0x75,0xd9,0x48,0x6b,0x60,0x86,0xbc,0x4f,0xa9,0x1c,0x2a,0xa1, - 0x57,0xfe,0x64,0xe0,0x9f,0x5c,0xfd,0x49,0xb0,0x4e,0x03,0xd1,0xbd,0x93,0xc0,0xce, - 0xc3,0x95,0x6a,0xfa,0xec,0xfe,0x2a,0xa7,0x6f,0x91,0xec,0xfe,0x67,0x87,0x2f,0x72, - 0x48,0x88,0x87,0xd9,0x89,0x18,0x54,0xf6,0xec,0x59,0x1f,0xc9,0xb6,0x5a,0x3c,0x80, - 0xde,0xf5,0x3a,0x1a,0x5f,0x18,0x62,0xb1,0x8d,0xf7,0x55,0x9b,0x3e,0x7c,0x37,0xaf, - 0x97,0x4d,0x60,0x77,0x6f,0xd6,0xbe,0x1a,0x5f,0x64,0x6d,0xd3,0x36,0x17,0xe6,0x53, - 0x06,0x2c,0xff,0x53,0x61,0xd7,0x87,0xb3,0x65,0x7e,0x46,0xa6,0x65,0xb7,0x6f,0xd1, - 0x82,0x36,0x3c,0x90,0x8b,0xd7,0xdb,0xdc,0xf5,0x01,0x98,0x50,0xdc,0x28,0x14,0x60, - 0xc3,0x33,0xf6,0xfd,0x71,0x3f,0xb3,0xf7,0xf7,0xeb,0x34,0xc5,0x37,0x5d,0xfd,0xcd, - 0xf9,0x20,0x4c,0x0d,0x3a,0xe6,0x1b,0xad,0x0f,0xf9,0xa2,0xd2,0x2d,0xad,0xea,0x93, - 0x73,0xf6,0x49,0x38,0xf0,0x8f,0x40,0x83,0xa6,0xf1,0xeb,0xdf,0xd2,0x1f,0xba,0xc8, - 0xfd,0x5c,0x1a,0xa7,0xf5,0x63,0xed,0xf1,0xdd,0xf2,0x3f,0xdb,0xa7,0x39,0xd5,0x5f, - 0xbd,0x93,0x2f,0x70,0xf7,0xc1,0xb8,0x9c,0xec,0xf5,0xc6,0x3f,0x87,0x72,0xf8,0x99, - 0xd2,0x3e,0x33,0x1d,0xb0,0xd9,0x0b,0xff,0x08,0x94,0xe4,0x49,0xf6,0xd9,0xd1,0x4e, - 0x7e,0xc3,0x56,0x1f,0x5b,0x9f,0x0f,0x87,0x71,0x1a,0x1c,0x2f,0x36,0x84,0x52,0x1e, - 0xfc,0x4f,0x4e,0x1f,0xc5,0x53,0xeb,0x45,0x0c,0xeb,0x91,0x7c,0xbd,0x99,0x8b,0xff, - 0xd1,0xf1,0x4f,0xcc,0x31,0x5b,0xf2,0x1b,0xfd,0x8b,0x3d,0xf1,0x4f,0xc1,0x46,0x0e, - 0xff,0xf4,0x8a,0xbb,0x45,0x9b,0xda,0xbc,0xc0,0xf3,0x73,0xf8,0x47,0xd3,0xf1,0xcf, - 0x69,0x41,0xaf,0x17,0x5a,0xe0,0xfd,0x6d,0xfb,0xe3,0x78,0x6b,0x5b,0x5c,0xbe,0x59, - 0x3c,0xf8,0x9f,0x61,0x60,0xf8,0x67,0xf0,0x73,0xf7,0xb2,0xfa,0xd8,0xa6,0x50,0xca, - 0xcd,0xff,0x58,0xcf,0x5f,0x59,0xbe,0x8c,0x56,0x8f,0x1f,0x2c,0xb9,0x89,0x3b,0xd1, - 0xf7,0xc1,0xd3,0x88,0x76,0xea,0x72,0xb4,0x4f,0x81,0xfa,0x90,0x74,0xda,0xd0,0xdd, - 0x85,0xf2,0xf8,0x35,0x4c,0x1f,0xc5,0x2a,0x8c,0x15,0xa8,0x0f,0x60,0xe2,0x9f,0x60, - 0x66,0xa1,0xdd,0x2c,0xc4,0x69,0x1f,0x9b,0x3e,0xca,0xf0,0x3f,0xcd,0x5e,0xcb,0xa8, - 0x09,0xf4,0x51,0xc2,0xea,0xb2,0x33,0xfc,0xbe,0xf6,0xbb,0xb3,0x4b,0x57,0x4f,0x58, - 0x1f,0x5b,0x9f,0x6f,0x31,0xad,0xce,0x86,0x1e,0x87,0xf2,0xf9,0x1f,0x5b,0x7d,0xec, - 0x41,0x56,0x1f,0x29,0x28,0xc1,0xa0,0xbd,0x50,0x92,0xd5,0x88,0x5d,0x01,0xff,0x5c, - 0xa5,0x3e,0x3c,0x98,0xb6,0xaa,0xfd,0x4c,0xce,0xab,0x98,0x94,0x8f,0x7f,0x5a,0x22, - 0xe9,0x30,0xad,0x27,0x69,0x04,0x62,0x1b,0x11,0x51,0xef,0xc2,0x3f,0x3e,0xc6,0xff, - 0x34,0x09,0x66,0x7d,0x00,0x6b,0xa3,0x5c,0x60,0x42,0xfc,0x23,0xd0,0x63,0x68,0x8c, - 0xe8,0x3f,0xe0,0xcb,0xaf,0x97,0x68,0xce,0x87,0xd5,0x6c,0x7f,0x5c,0x03,0x8d,0xb6, - 0x92,0xa0,0xab,0xc1,0x49,0x36,0xaf,0x50,0xe4,0x19,0x37,0xfe,0x41,0xb4,0x13,0xd2, - 0x87,0xb9,0xdc,0xc5,0xff,0xd4,0x7b,0xd5,0x47,0x6a,0x5c,0x1c,0xec,0xf7,0xa0,0x89, - 0xbc,0xf9,0x1f,0x0a,0x72,0x22,0x02,0x43,0x3b,0x24,0xe6,0x90,0x45,0x79,0xd4,0x87, - 0x34,0xf5,0x51,0x16,0xba,0x5b,0xea,0xc5,0x77,0xbd,0xe4,0xc2,0x3f,0xb4,0x3e,0x43, - 0x51,0x3e,0x8d,0xe6,0xc5,0xff,0x18,0x78,0x2f,0x4a,0x61,0xcf,0xa8,0xab,0x2c,0xa4, - 0x47,0x7d,0x48,0x27,0xfe,0xc9,0xeb,0xff,0x1d,0x77,0x7d,0x6c,0xc1,0xd0,0x47,0x05, - 0x27,0x9c,0x6f,0x4b,0xdc,0xf5,0x01,0xe8,0x26,0x38,0x9c,0xcf,0xbe,0x98,0xa3,0x2c, - 0xa4,0x57,0x7d,0x00,0x9e,0x7d,0x14,0x59,0x61,0x42,0xff,0x93,0xab,0x8f,0x4d,0xf1, - 0x0f,0x7e,0xa4,0x2d,0xd6,0x69,0xf2,0x9e,0xdf,0x6f,0xae,0x3e,0x36,0xe2,0x1f,0xf1, - 0x4f,0x18,0x44,0xa2,0x14,0xed,0xfc,0x2f,0x17,0xed,0x63,0x35,0xee,0x9a,0x6d,0xf6, - 0x37,0xf0,0x4f,0x8b,0xa7,0x9b,0xf5,0xda,0x1f,0xc7,0xb3,0xfd,0x4d,0xdf,0x0e,0xae, - 0xe6,0x62,0x30,0x96,0x6e,0xcc,0x2e,0x1f,0xa9,0xbc,0x2c,0xe7,0xd5,0x07,0xc8,0xf1, - 0x3f,0xe5,0x94,0xff,0xa1,0xe3,0xf5,0xcf,0xd0,0xba,0x55,0x76,0xf0,0x07,0x3a,0x52, - 0xe3,0xfd,0xf3,0xf9,0x1f,0x60,0xfc,0xcf,0x2c,0x5a,0x3d,0xfb,0x3a,0xd8,0x27,0xb2, - 0xfa,0xd8,0xa7,0x15,0x43,0x06,0xef,0x55,0x1f,0x80,0xe5,0x3b,0xa2,0x08,0x7b,0x88, - 0x3d,0xd0,0xbb,0xf8,0x1f,0x37,0xfe,0xa9,0xd5,0xa2,0x74,0x99,0x6f,0x2f,0x34,0xe7, - 0x18,0xaf,0xad,0x3e,0xb6,0x8f,0xd9,0x07,0x26,0xb6,0x4f,0xae,0x3e,0x76,0x85,0xc9, - 0xff,0x50,0xef,0xfd,0x3d,0x5a,0x06,0x70,0x78,0xd1,0x44,0xfa,0x70,0x1d,0xff,0x34, - 0x2c,0xb4,0xa1,0x17,0xce,0xad,0x58,0xf6,0xa8,0x0f,0x20,0x5f,0x6d,0x7d,0x48,0xbf, - 0x8e,0x7f,0x76,0xd1,0xea,0xeb,0x4a,0x77,0x2a,0xaa,0x2d,0x5d,0x40,0x36,0xf2,0xdd, - 0x3e,0x77,0x3e,0xc8,0x34,0x3f,0xfc,0xe3,0xaa,0xe0,0x98,0xaf,0xe6,0x33,0xd1,0x3d, - 0xdc,0xbb,0x2a,0xdb,0x1d,0xf0,0xa4,0xae,0x0f,0x2f,0xc4,0xff,0x4c,0x62,0xf5,0x10, - 0x0c,0xda,0x27,0xc5,0x46,0xf7,0xf3,0xfc,0xf8,0xee,0x55,0x1f,0x20,0x09,0xe3,0xe9, - 0x1b,0x07,0x4a,0x46,0xb9,0x67,0x17,0x8f,0xc7,0x6b,0x27,0xca,0x7f,0x21,0xc8,0x29, - 0x65,0xd9,0x2e,0x49,0xea,0x6b,0xce,0x90,0xa0,0xf2,0x5c,0x3c,0x5c,0x00,0xff,0xd8, - 0xcf,0x87,0x85,0x6e,0x09,0x03,0x7d,0xa2,0x5a,0xc7,0xc3,0x81,0x2b,0xd6,0x87,0xc4, - 0xbb,0x61,0xba,0x0c,0x89,0xe6,0xd5,0x67,0x70,0x9e,0x8f,0x66,0xe3,0x1f,0x6a,0xe9, - 0x79,0xca,0xd1,0xbc,0xf9,0xa3,0xe5,0xd5,0x07,0xc0,0xf8,0x7e,0x90,0xed,0x16,0x5c, - 0x4e,0xeb,0x41,0x8d,0xe9,0xfa,0xf9,0xfb,0xae,0x50,0x1f,0x92,0x01,0xef,0xbd,0x38, - 0x1f,0x7e,0x95,0xdb,0xb8,0xc1,0xce,0x23,0x2e,0x58,0x1f,0x20,0xf6,0xba,0x70,0x50, - 0x89,0xa5,0x36,0x09,0xe1,0x42,0xf8,0xc7,0x76,0x3e,0x08,0x0d,0xdc,0x7d,0x94,0x2f, - 0x25,0x3b,0x94,0x48,0x0e,0x11,0x15,0x4f,0x54,0x1f,0x60,0xd0,0xff,0x1d,0x32,0x03, - 0x1e,0x7b,0xa0,0xa2,0x00,0xfe,0x31,0xeb,0x03,0xe8,0xfc,0x0f,0x34,0x0c,0x96,0xee, - 0xe1,0x1e,0x84,0x3f,0xec,0x2c,0xcf,0x5a,0xf8,0xa7,0xc4,0x03,0xff,0x98,0xb3,0xe5, - 0xfe,0xde,0x92,0xf7,0x11,0x08,0xfd,0xf3,0x6d,0x85,0xf0,0x8f,0xb3,0x3e,0x80,0xbe, - 0x2d,0x6e,0x95,0xef,0xf7,0x12,0x6d,0x4c,0xb6,0x4c,0x57,0xb0,0x3e,0x00,0xdb,0x16, - 0xd7,0x00,0xb8,0x7e,0x74,0xe1,0x1f,0xcb,0xfe,0x36,0xfe,0xc7,0xd8,0x16,0x47,0x6e, - 0xe7,0xb7,0xb4,0xd1,0x46,0x59,0xae,0x3e,0x92,0xc5,0xff,0xb8,0xea,0x03,0x6c,0xd7, - 0xcb,0xaa,0xff,0xc8,0xb5,0xf1,0xb0,0x60,0x7d,0x00,0x26,0x0b,0xa7,0xe7,0xa3,0x25, - 0x8c,0xf3,0x61,0x0b,0xd4,0x47,0x72,0x64,0x7f,0xf2,0xf1,0x40,0xc1,0xf3,0x41,0xea, - 0x11,0x08,0x55,0xd2,0x6d,0xe3,0xf5,0x13,0xe3,0x1f,0xeb,0x74,0x57,0x99,0x16,0xca, - 0x26,0xc6,0xf9,0xb0,0x13,0xea,0xc3,0xe9,0x5d,0x5d,0x16,0xce,0x0e,0x76,0x2f,0x80, - 0x7f,0xf2,0xce,0x07,0x61,0x40,0x88,0x1e,0x14,0x5b,0xb8,0x3e,0xb6,0x35,0xde,0x61, - 0xc4,0x3f,0x41,0x7a,0x3e,0x45,0x9f,0x54,0xef,0x18,0xef,0xf9,0x02,0xf5,0x01,0x68, - 0x35,0xa4,0xcd,0x1d,0xf4,0xa0,0xd8,0x82,0xf9,0xaf,0x49,0x2e,0xb4,0x10,0x64,0x44, - 0x90,0x94,0x90,0x0b,0xf1,0x3f,0x2e,0xb4,0x83,0x40,0x48,0x12,0x3a,0x53,0x61,0x27, - 0xfe,0x29,0x50,0x1f,0xe0,0x06,0x76,0x0c,0xdc,0x97,0xd4,0x7f,0x6a,0xde,0x29,0x7b, - 0xf3,0x3f,0xae,0xf3,0x61,0x6b,0xe4,0xe2,0x7e,0x32,0x95,0xff,0x47,0x28,0xc8,0xff, - 0x4c,0x75,0xe1,0x99,0x1a,0x9d,0xc8,0x72,0xe6,0x37,0x73,0xfc,0xcf,0x2e,0x70,0xf5, - 0x2f,0x75,0x6d,0x1c,0xd0,0xeb,0x23,0x79,0x9c,0x8f,0xc6,0xea,0xb1,0x37,0xc2,0x09, - 0x6d,0x0a,0x3d,0xe6,0xf2,0xda,0x42,0xf5,0x91,0xf8,0xfc,0xfa,0x90,0x83,0x4c,0x28, - 0xee,0xd0,0x87,0x7b,0xd5,0x87,0xd4,0xbf,0x0e,0x5c,0xbf,0x1f,0x67,0xe7,0x33,0x7a, - 0xd7,0x47,0xb2,0xf4,0xe1,0xc6,0xd7,0x4a,0xe5,0x3e,0xfd,0xf0,0x80,0x6b,0x7f,0x6b, - 0x8e,0xff,0x89,0xd8,0xeb,0x03,0x7c,0x88,0xd1,0xa4,0x94,0x1e,0x0b,0xf2,0x26,0xdc, - 0xe4,0xac,0x8f,0xed,0x5d,0x1f,0xe0,0x23,0x36,0xba,0xca,0x2c,0x02,0x69,0x17,0xff, - 0x93,0x3b,0x1f,0x6d,0x9a,0x6b,0xb5,0x1e,0xec,0x41,0x20,0x74,0x22,0x57,0xdf,0xcf, - 0x15,0xbf,0x76,0x7d,0xd2,0xe6,0x7f,0xde,0x82,0x64,0xa4,0x64,0x09,0x69,0xd7,0x1e, - 0xd7,0x8f,0xb9,0x2f,0x58,0x1f,0xc9,0xe8,0xff,0x34,0xd4,0xf4,0x15,0xdf,0x43,0xae, - 0x13,0xd7,0x28,0x15,0x05,0xf0,0x4f,0x8a,0xb7,0xf9,0x9f,0xed,0x7c,0x14,0x8a,0x15, - 0xa2,0xe2,0x7a,0xc4,0x55,0x6f,0x2a,0x5f,0x1f,0xae,0x8f,0xee,0x7e,0x1a,0x4d,0xa2, - 0xb4,0xac,0x8a,0x63,0xbc,0x67,0xec,0xf5,0x01,0x78,0x5b,0xff,0x7b,0xd9,0xb1,0x44, - 0xb4,0x30,0x85,0xbd,0x7f,0x65,0x81,0xfa,0x00,0x97,0x61,0xbe,0xb6,0x91,0x6e,0x9c, - 0x3f,0x61,0xd6,0x47,0xca,0xe3,0x7f,0x4c,0x7d,0x78,0x31,0x8d,0x56,0x3f,0x86,0x1b, - 0xc0,0xaf,0x71,0xad,0xf0,0x3b,0x7d,0x5b,0xb7,0x27,0xfe,0x59,0x65,0x8f,0xd7,0x12, - 0x25,0x2e,0xa2,0xf0,0x43,0x8c,0xd7,0xc5,0xde,0xfc,0x0f,0xd8,0x60,0xe1,0x16,0x88, - 0x94,0xfb,0x81,0xc8,0xda,0x43,0x0c,0x0f,0x14,0x79,0xe1,0x1f,0x81,0xa5,0x15,0xf4, - 0xe7,0xa3,0x7f,0x7e,0x35,0x18,0xe7,0x4a,0xd4,0xa3,0x62,0xa2,0xd7,0x81,0xf7,0xf2, - 0xf4,0xe1,0xb4,0x1a,0x00,0x9c,0xa1,0xf3,0xe7,0x10,0xfe,0xfa,0x1f,0x5f,0x01,0xff, - 0x24,0xb3,0xd1,0x11,0xee,0xbc,0x70,0x40,0x09,0x9b,0x44,0xd0,0x84,0xfa,0x1f,0x5a, - 0xed,0x87,0xa2,0x9d,0x31,0x08,0xa7,0xfc,0x9e,0xfc,0x0f,0x38,0xf1,0x4f,0x4c,0x67, - 0x53,0x0f,0xe8,0x78,0x06,0xaf,0x10,0x37,0xde,0x73,0xe3,0x1f,0x66,0xbd,0x9f,0xa1, - 0xdb,0xf7,0x7b,0xf3,0x3f,0xd6,0xfc,0x64,0xf8,0xa7,0x41,0x0b,0xea,0xf6,0x8f,0x67, - 0x3d,0x89,0x9a,0xdc,0xf9,0xb0,0x26,0xfe,0x89,0xe9,0xd5,0x12,0x9e,0x6b,0xf5,0x3e, - 0x1f,0x24,0x6f,0x7f,0x5c,0xd0,0x0b,0x96,0x4f,0x90,0xff,0x32,0xf0,0x70,0x58,0x9e, - 0x8e,0x0d,0xde,0x7a,0xff,0x31,0x0f,0xfd,0x8f,0x98,0xab,0x96,0x40,0xf5,0x18,0x57, - 0xa5,0xff,0x61,0xd9,0x2e,0xed,0x07,0x4a,0x45,0x8a,0x02,0x83,0xb6,0x89,0xf5,0x3f, - 0x1f,0x40,0x32,0x1b,0x8c,0xff,0xc5,0x89,0xf4,0x98,0xb2,0x20,0x15,0x60,0x07,0xa5, - 0x65,0x26,0xd6,0xff,0xd0,0x6a,0x00,0xbe,0x21,0x71,0xfc,0x1a,0xf4,0xc6,0xc3,0x7a, - 0xbe,0xb5,0xd7,0x2e,0x94,0xca,0xe9,0x7f,0x4c,0xfc,0x83,0xf6,0x39,0x01,0xc7,0x14, - 0x0c,0x5b,0x5e,0xf6,0x71,0xe3,0x9f,0xb9,0x5a,0xa4,0x95,0x3b,0x4d,0xd6,0x92,0x4f, - 0xcb,0x86,0x1b,0xb9,0xbb,0x00,0xfe,0x39,0x64,0xf1,0x3f,0x38,0xba,0xb5,0xc6,0x78, - 0xf3,0xf8,0x1f,0x77,0x7d,0x24,0x36,0xdf,0x36,0xf2,0x1d,0x74,0xb7,0xbb,0x97,0x3d, - 0xf3,0xf1,0x4f,0x90,0x46,0x87,0xa3,0xb0,0x5d,0x07,0x42,0x6e,0x22,0x68,0x02,0xfc, - 0x63,0x34,0xee,0x9f,0x18,0xff,0x34,0x47,0xd3,0xdc,0x4e,0xe3,0x74,0xf8,0x4a,0x3d, - 0xcc,0x6d,0xf2,0xc4,0x3f,0xed,0x3a,0xfe,0x49,0xd1,0xec,0x15,0xbf,0x9f,0x9d,0xf7, - 0x11,0xbe,0xd2,0xf9,0x20,0x6e,0x75,0xca,0x55,0xe8,0x7f,0x1c,0xea,0x97,0x89,0xf4, - 0x3f,0x3d,0x06,0xfe,0x09,0xd2,0xfc,0xcb,0x30,0x49,0xd2,0xfc,0x4b,0xd6,0xe7,0xb6, - 0xc0,0x09,0xb7,0xfe,0x47,0xcf,0x76,0x7d,0xac,0x1f,0x8b,0x36,0x91,0xfe,0x67,0xab, - 0x51,0x1f,0x20,0x4a,0x77,0xcf,0xbd,0xc2,0x0f,0x1b,0xdd,0x7c,0xce,0x7f,0x98,0x57, - 0x1f,0x49,0x60,0xfc,0x4f,0x97,0x54,0xeb,0x38,0x16,0xa4,0x20,0xfe,0x89,0x35,0x09, - 0x62,0xd3,0x00,0x3c,0x22,0x48,0x05,0xc6,0xeb,0x71,0x3e,0x5a,0xd1,0x80,0xf0,0x08, - 0xf5,0x3f,0x9e,0xf6,0xcc,0xe1,0x9f,0x7f,0x32,0xf4,0x5d,0xf8,0xb6,0xc2,0xaf,0x19, - 0x4c,0x9d,0x90,0xff,0x31,0xeb,0x23,0x31,0xb5,0x8f,0x49,0x03,0x8a,0x79,0xf5,0x21, - 0xdd,0xf8,0x87,0x37,0xf0,0x4f,0x01,0x22,0xc8,0xa1,0xff,0xf1,0x21,0xc8,0x51,0x2d, - 0xb4,0x53,0xe2,0xc5,0xff,0xe4,0xe1,0x9f,0x6c,0x80,0x6e,0xba,0xb3,0x39,0x22,0x17, - 0xff,0x63,0x9d,0x0f,0xeb,0x3a,0x1f,0x6d,0x6e,0xb6,0xd8,0x8b,0xff,0xc9,0x9d,0x0f, - 0x4b,0xeb,0x23,0xed,0xb3,0xd8,0x9e,0xcc,0x2d,0xd9,0xa0,0xa7,0xfe,0xc7,0x13,0xff, - 0x88,0xf9,0xfc,0xc6,0x6b,0xba,0x07,0xce,0xe1,0x1f,0x33,0x7e,0x21,0xec,0xb9,0x2c, - 0x8f,0x75,0x21,0xbe,0x1a,0xe1,0x9e,0x95,0xdf,0x4b,0xdf,0xc2,0xea,0xdb,0x58,0xfa, - 0x1f,0xd7,0xf9,0x20,0x73,0x87,0x04,0x26,0x9b,0xcc,0x60,0xe3,0x99,0x29,0xf7,0x43, - 0x87,0xca,0x12,0x5b,0x05,0xf0,0xcf,0x63,0x08,0x83,0xe7,0xb4,0x16,0x51,0xda,0x67, - 0xae,0xe6,0xbf,0x40,0x0e,0x2a,0x46,0x22,0xcc,0x43,0xff,0x23,0xe9,0xf9,0x44,0xd9, - 0x5c,0xbd,0xf6,0x32,0x22,0x68,0x8b,0xcb,0xb0,0x39,0xfd,0xcf,0x4a,0xa3,0x3e,0x76, - 0x89,0xbe,0xdb,0x9d,0xe9,0x45,0x31,0x02,0xf2,0xf4,0xd8,0xf7,0xcf,0xda,0xf4,0x3f, - 0xe6,0xfb,0x98,0xe7,0xa3,0x95,0x3a,0xcc,0xe2,0xd6,0xa3,0xe6,0xe2,0xaf,0xe6,0x71, - 0x3e,0xda,0x55,0x9c,0x0f,0x62,0x46,0xdb,0xfa,0x42,0xf5,0x01,0x5c,0xfc,0x8f,0x79, - 0xb7,0xfa,0x4a,0xfc,0x8f,0x51,0x1f,0xe9,0xf8,0xf4,0x04,0xa1,0x65,0x21,0x85,0xbe, - 0x23,0xf1,0xf6,0xe3,0x6d,0xdd,0xc5,0x51,0x6d,0x83,0x69,0x1f,0xce,0x8e,0x7f,0x14, - 0x5d,0xff,0xb3,0x84,0x8e,0x4e,0x1a,0xaf,0xab,0x7f,0x39,0xf4,0x34,0xf7,0xae,0xec, - 0x3e,0x38,0x26,0x4f,0xff,0xd3,0x1c,0xba,0x48,0xfb,0x43,0x7d,0x6f,0x68,0x6f,0xc7, - 0xd0,0xc2,0xb1,0x48,0x41,0xfc,0xf3,0x80,0x03,0x3f,0x53,0xd9,0xd8,0xa2,0x09,0xf3, - 0x5f,0xe5,0x26,0xff,0x63,0xa0,0x9d,0xe9,0xac,0x50,0xa4,0xe4,0xe4,0x7f,0x6c,0xfa, - 0x9f,0x49,0x54,0xff,0xe3,0x5c,0x4d,0x60,0x43,0x70,0x5e,0xb1,0xe9,0x7f,0xf8,0xdd, - 0xb9,0x6a,0x48,0xb6,0xfc,0x57,0x21,0xfe,0x67,0xe1,0x34,0x57,0xb4,0x0d,0x78,0xe3, - 0x13,0x77,0xfe,0xab,0xd4,0xb4,0xc6,0x26,0xaf,0xf9,0x30,0x54,0x90,0xff,0x39,0xb4, - 0xdc,0x26,0xfb,0x29,0x9c,0xff,0xf2,0x9e,0x06,0x56,0x23,0xa7,0xff,0xe9,0xe3,0x97, - 0xe5,0x79,0x1b,0xab,0x8c,0x8f,0x57,0xfe,0x2b,0x4f,0xff,0xe3,0x55,0x2f,0xda,0xa9, - 0xff,0xc9,0x65,0xbb,0xc4,0x86,0x6c,0xa8,0x5e,0x87,0x3d,0x7d,0x36,0xfc,0xe3,0xf3, - 0xd6,0xff,0xe8,0xd5,0x27,0xde,0xa7,0xc3,0x14,0xaf,0x94,0xff,0x72,0xc1,0x1e,0xc5, - 0xc5,0xdf,0x16,0xd2,0xff,0x14,0xaa,0x8f,0xe4,0xa9,0xff,0xb1,0x37,0x66,0x31,0xfe, - 0xc7,0x4c,0xfc,0xe5,0xfc,0x8f,0x53,0xff,0xe3,0xb3,0xf2,0xad,0x85,0xf8,0x9f,0xec, - 0x35,0xf9,0x6a,0x67,0xbd,0x8c,0x4c,0x01,0xfd,0xf3,0xbf,0x33,0xff,0xe5,0x2a,0x83, - 0x33,0xe9,0x0a,0xf9,0x2f,0x53,0x4f,0x52,0x00,0xcf,0x38,0xf5,0x3f,0x05,0xbb,0x4d, - 0xa8,0xff,0x99,0x10,0xff,0xb8,0xf2,0x5f,0xee,0x61,0x0e,0xbb,0xf1,0x4f,0x9e,0xfe, - 0xa7,0xd4,0x09,0x03,0x5c,0xfc,0xcf,0x87,0x85,0xf9,0x1f,0xbd,0x21,0x3b,0xf9,0x1f, - 0xdb,0xf9,0x68,0xe5,0xf9,0x68,0x27,0xcb,0x67,0xa4,0x6a,0xc7,0x95,0x33,0x79,0xf9, - 0x2f,0xe7,0x30,0xf7,0x83,0x9b,0xef,0xf2,0xd4,0xff,0xb8,0xcb,0x4c,0x79,0xe1,0x9f, - 0x69,0x9e,0xef,0x0f,0x89,0x02,0xf8,0x27,0x2f,0xff,0x45,0x1b,0x82,0xfb,0x4a,0x7e, - 0xfe,0x0b,0x8d,0xec,0xf8,0x21,0x12,0x13,0xd6,0xc7,0xce,0x4f,0x7b,0x85,0x0b,0xe6, - 0xbf,0xbc,0xfd,0x4f,0xa1,0xfa,0xd8,0x46,0xfe,0xeb,0x0a,0xdf,0x6f,0xae,0x3e,0xa4, - 0x9e,0xff,0xca,0x4b,0x7b,0xa5,0xe7,0x39,0xf9,0x1f,0xf3,0xf5,0xdd,0xfa,0x1f,0xb3, - 0x21,0xb9,0xf8,0x9f,0x9c,0x3e,0x27,0x57,0x1f,0xc0,0x1e,0xb6,0xba,0x12,0xd9,0x4d, - 0xde,0xe7,0xc3,0x8a,0x8f,0xca,0xce,0xf7,0x8f,0x93,0xd3,0xf2,0x73,0x4a,0xc5,0xa0, - 0x83,0xff,0xc9,0x9d,0x0f,0xab,0x78,0xfa,0x2b,0xc9,0x38,0x28,0x2d,0x3f,0xff,0x25, - 0xe6,0xef,0xb6,0xc8,0xf7,0x3f,0x05,0xf4,0x3f,0xb4,0xb1,0x94,0x16,0x3a,0x1e,0x77, - 0xf1,0x3f,0x36,0x3d,0xb6,0x6f,0x37,0xef,0x61,0x1f,0x52,0x08,0xff,0x54,0x88,0x07, - 0xff,0x2c,0xfc,0xa3,0xe7,0xbf,0x92,0xee,0xb0,0xc5,0xbb,0xf1,0x4c,0x01,0xfc,0x53, - 0x7a,0x25,0xfc,0xe3,0x77,0xe9,0x7f,0x8c,0x86,0x34,0x41,0xfe,0xcb,0x61,0x9f,0x97, - 0x43,0x4f,0x51,0xa0,0x18,0x29,0x88,0x7f,0xa6,0xe5,0xf2,0x5f,0xb9,0x61,0x8e,0x39, - 0xea,0xfb,0x79,0xe6,0xbf,0xf6,0x72,0x97,0x94,0x63,0x52,0xa3,0x14,0x9c,0x58,0xff, - 0x63,0x9d,0x8f,0xf6,0x08,0x79,0x4b,0xde,0xd0,0x1f,0x93,0x22,0x08,0x7b,0xf8,0xc2, - 0xfa,0x1f,0x2b,0xff,0x25,0x91,0xe3,0x64,0x0b,0x7a,0xa7,0x62,0xaf,0xfd,0x05,0x1e, - 0xf9,0x2f,0xea,0x6d,0x7e,0x14,0x89,0x91,0xe2,0x89,0xf9,0x9f,0x5c,0x7d,0x6c,0xfc, - 0xe8,0x5e,0x93,0x1b,0xc4,0x12,0x4f,0xfd,0x4f,0x5e,0xfe,0xeb,0x24,0x15,0xf9,0xbc, - 0xa7,0x34,0x8a,0xa5,0x5e,0xf3,0xc1,0x23,0xff,0xa5,0x72,0xc7,0xa5,0x63,0x72,0xb2, - 0xc5,0x93,0x5f,0xf2,0xcc,0x7f,0xbd,0x47,0x4f,0x43,0x6b,0x5e,0x79,0x05,0xfd,0x8f, - 0xc9,0x3f,0xcf,0x23,0x27,0x20,0x0d,0x51,0xf0,0x5c,0x7f,0x79,0xe4,0xbf,0xfe,0x86, - 0xfc,0xb6,0xf9,0x61,0x75,0xae,0x24,0x78,0xf1,0x21,0x1e,0xf9,0xaf,0x1b,0xb8,0xe3, - 0xa9,0x5f,0xab,0x0d,0x7c,0x90,0xe9,0x7f,0x94,0x86,0xec,0x84,0xfa,0x1f,0x8d,0x96, - 0xb5,0x91,0xdf,0x85,0x06,0xde,0xa3,0x3e,0xa4,0x67,0xfe,0xab,0x87,0xdb,0x05,0x47, - 0xa1,0x0c,0xae,0x8a,0xff,0x61,0x6e,0xa7,0x5c,0x58,0x03,0x15,0x50,0x40,0xff,0x63, - 0xd9,0xdf,0xc4,0x3f,0x2b,0xc9,0x17,0xc4,0x1d,0x4a,0x4d,0xe6,0xaa,0xf8,0x1f,0x6a, - 0x34,0xff,0x8b,0xed,0x3b,0x60,0xb7,0xb2,0xc1,0xcb,0x9e,0xf9,0xfc,0x4f,0x60,0xb0, - 0xfd,0xbb,0xd2,0xf9,0x75,0x8d,0x79,0xfa,0x9f,0xc2,0xfc,0x8f,0x84,0x3f,0x4a,0x58, - 0x08,0x79,0xf1,0x21,0xce,0xf3,0x61,0x19,0x1e,0x78,0x08,0xc3,0xdc,0x11,0x48,0x34, - 0x3f,0xef,0xc5,0x0f,0x78,0xe4,0xbf,0xb6,0x86,0x7f,0x09,0xeb,0x60,0x7b,0xea,0x0b, - 0x57,0x3e,0x1f,0xd6,0xb8,0xf8,0x06,0x59,0xe7,0x0b,0x5f,0x09,0xff,0x38,0xea,0x23, - 0xd1,0xb4,0x97,0x9f,0xc1,0x00,0x5f,0x70,0x82,0xfc,0x57,0x0f,0x3b,0x0d,0xad,0x32, - 0xab,0xf4,0x49,0x34,0xec,0xce,0xcf,0x0a,0x79,0xfc,0x4f,0x5e,0xfe,0x6b,0x53,0x7f, - 0xe5,0x45,0x3f,0x2d,0xf3,0x58,0xea,0x35,0x5e,0x5b,0xfe,0xcb,0x67,0x14,0xcd,0xee, - 0x87,0x27,0xd5,0x23,0xc2,0x14,0x39,0xe8,0xd5,0xdf,0x75,0x3e,0x2c,0x03,0x39,0xfe, - 0x39,0xf0,0x2a,0x4d,0xd4,0x4c,0xac,0xff,0xb1,0xce,0x47,0x9b,0x4a,0x16,0x9b,0xd5, - 0xb0,0xaf,0xc0,0xff,0xf8,0x8c,0xfa,0x54,0xab,0xe0,0x11,0xb8,0xf3,0x36,0x4f,0x62, - 0xcd,0x75,0x3e,0x9a,0x0f,0x61,0xed,0xc3,0x64,0x05,0x1c,0x81,0x70,0x4a,0xf0,0x12, - 0xf6,0xe4,0xf3,0x3f,0x9b,0x44,0x6e,0x27,0xbc,0x6f,0x0d,0x93,0x2f,0x7c,0x3e,0x08, - 0xdd,0x7f,0x47,0x4f,0xbf,0x9d,0x9f,0x62,0xa7,0xd1,0x6d,0xf2,0xe4,0x7f,0xbc,0xf0, - 0x4f,0xb9,0xf0,0x0c,0xd4,0x39,0xb6,0x7d,0x15,0x3e,0x1f,0x44,0x0b,0xd4,0x15,0x29, - 0x32,0x36,0x16,0x06,0x6c,0xc2,0x39,0x0f,0xfc,0x63,0xf2,0x3f,0xd3,0x17,0x10,0x76, - 0x1a,0x9a,0x4c,0xbc,0xbe,0x5f,0x67,0x7d,0x6c,0xc6,0xff,0xdc,0x16,0xd8,0x8c,0x68, - 0xe7,0x7a,0x06,0x7b,0x84,0x3f,0x75,0x5e,0x3f,0xc1,0xf9,0xb0,0x86,0xd3,0x90,0xb0, - 0x51,0x2f,0x3b,0x0f,0x82,0x37,0xf1,0x8f,0xeb,0x7c,0xd8,0xc6,0xec,0xcc,0xd5,0x5c, - 0x82,0x9e,0x86,0x96,0xda,0xa4,0x9f,0x6f,0xde,0xe8,0xc4,0x3f,0x2e,0xfe,0xa7,0x66, - 0x30,0x70,0x0f,0x29,0x87,0xb5,0x50,0xb3,0x92,0xea,0x7f,0xa0,0x3b,0x13,0x9d,0x38, - 0xff,0xd5,0x47,0xeb,0xd9,0x62,0xff,0x59,0x7d,0x9e,0xfe,0x4a,0x73,0xf3,0x3f,0x68, - 0xb4,0xf5,0x02,0xdd,0x7f,0x4a,0xf9,0xe7,0x21,0xc1,0x6d,0x4f,0x8f,0xfa,0xd8,0x3d, - 0x5c,0x58,0x39,0x46,0x17,0x3e,0x19,0x9f,0x87,0xff,0xcc,0xe3,0x7f,0x36,0xcd,0xe3, - 0x7a,0xc9,0x07,0xe0,0x2c,0x1b,0xee,0x81,0x7f,0xac,0xfc,0xd7,0xfb,0xdc,0x02,0x38, - 0x09,0xf3,0x65,0xe6,0xc6,0xff,0xf9,0x2a,0xf8,0x1f,0xff,0x6c,0x8c,0x5f,0xdb,0x57, - 0xb0,0xb0,0xb5,0xc1,0x8d,0x67,0xbc,0xf8,0x9f,0xd9,0xec,0xf4,0x87,0xab,0xe3,0x7f, - 0xfa,0xd0,0x08,0x3c,0x74,0xc8,0x52,0x33,0x06,0xbe,0xa1,0x8d,0x3b,0x8a,0xa3,0xb9, - 0xfc,0xd7,0x52,0xcf,0xfa,0xd8,0x7b,0xb8,0x2a,0x38,0xb6,0x30,0xd1,0x44,0x87,0xa9, - 0x8e,0xc9,0x08,0x84,0xbc,0xf1,0x0f,0xcb,0x7f,0xb1,0x6c,0xc5,0xcb,0xb4,0x21,0x87, - 0x2e,0x60,0xb7,0xdf,0x17,0xe6,0x7f,0x26,0xe5,0x9f,0x26,0xac,0xcf,0x9f,0xc2,0xf8, - 0xe7,0x1d,0x27,0xda,0x09,0x9f,0x17,0x27,0xc6,0x3f,0xb6,0x7a,0xe9,0xc6,0xfe,0x82, - 0x89,0xf1,0xcf,0xcf,0x3c,0x69,0x93,0xe9,0x05,0xf1,0x8f,0x9b,0xfd,0x33,0x33,0xa4, - 0x8b,0x86,0x7c,0x05,0xf1,0x4f,0xc8,0xd4,0x83,0x4d,0xd6,0x1b,0x73,0xcd,0xc6,0x15, - 0xf5,0x3f,0x57,0x8d,0x7f,0x26,0xd0,0x6f,0x17,0xd4,0xff,0x58,0x0d,0xa7,0x50,0x7c, - 0x82,0xf3,0x41,0x36,0x5c,0x25,0xfe,0x31,0xd1,0x4e,0x69,0xfc,0xea,0xf0,0x8f,0x35, - 0x5b,0xa8,0xfe,0xf9,0xf7,0x22,0xc5,0x3f,0x93,0xaf,0xa8,0xff,0x29,0xd4,0x70,0xe2, - 0x9f,0xb7,0x3c,0xd6,0x8f,0x13,0xe1,0x1f,0xba,0xa9,0xad,0xd8,0x63,0x98,0x4d,0x05, - 0xf0,0xcf,0x0e,0x87,0x3d,0x33,0x57,0xc4,0x3f,0xe7,0xe8,0xf9,0x5f,0x79,0xb0,0x27, - 0x50,0x10,0xff,0x14,0xdc,0x86,0x7c,0x65,0xfd,0x0f,0x6b,0x54,0x5d,0x0d,0xfe,0xd1, - 0xa3,0x2d,0x95,0x9d,0x70,0x2b,0xae,0x0e,0xff,0x58,0x77,0xf3,0xaf,0x14,0xd4,0xff, - 0x54,0xd1,0xbb,0x8b,0x27,0xe0,0x7f,0x74,0xfd,0x4f,0xcc,0x31,0x3a,0x29,0x6f,0xbc, - 0x85,0xcf,0x07,0xc9,0x35,0x66,0x4e,0xa0,0xff,0xa9,0x77,0xf5,0x7f,0xdb,0xd5,0xdf, - 0x91,0xff,0xf2,0xb9,0xd0,0x0e,0xa7,0xba,0xaf,0x14,0xd4,0xff,0xf8,0x56,0xe9,0xfa, - 0xe7,0x6d,0xec,0x4a,0xd9,0x95,0xf5,0x3f,0xac,0x81,0x57,0x7c,0xec,0x58,0xd8,0x02, - 0xf8,0x67,0x7f,0xde,0x78,0xdf,0xbe,0x22,0xfe,0x71,0xf6,0xff,0x0e,0x6f,0x08,0xe3, - 0x3d,0xf0,0x8f,0x83,0x6f,0xac,0x37,0xca,0x2c,0xd0,0x0a,0xed,0x57,0xc7,0xff,0x2c, - 0xcd,0x6b,0x14,0x3a,0x1f,0x96,0x6d,0xdc,0xd6,0x9c,0xf5,0x9c,0x8d,0x1d,0xf1,0x85, - 0xcf,0x07,0x61,0x0d,0x9f,0xeb,0x4a,0x59,0xc1,0xf3,0x41,0x6e,0xa2,0xfa,0x9f,0xfc, - 0xfc,0x57,0xe1,0xf3,0x41,0xbc,0xf9,0x8d,0x82,0xe7,0x83,0x24,0x07,0x8c,0xc6,0xf7, - 0x06,0x42,0x13,0xe1,0x1f,0xf3,0xb5,0xef,0xa6,0xc7,0x4c,0x53,0xd9,0xf3,0x15,0xf0, - 0x8f,0x75,0xf7,0xca,0xf8,0x67,0x02,0x19,0xf9,0x44,0xf8,0x67,0xc2,0xfc,0x45,0x3e, - 0xfe,0xb9,0x92,0xfe,0xd9,0x53,0xff,0xf3,0xe7,0xe7,0xbf,0x1c,0x0d,0x98,0x18,0xff, - 0x5c,0x95,0xfe,0xd9,0x76,0x3e,0x88,0x61,0x8d,0x84,0x27,0x1e,0xb0,0xcc,0xef,0x3c, - 0x1f,0x24,0xd9,0x47,0xcf,0x47,0x03,0xa6,0xc7,0x98,0x00,0xff,0xe4,0x46,0xd7,0x3f, - 0x73,0x0f,0xe7,0xa8,0x8f,0xed,0x81,0x7f,0x4e,0x2a,0xf3,0x68,0xb6,0xf4,0x7e,0xf8, - 0xa5,0x32,0xff,0xc8,0x4c,0x5a,0x16,0xfb,0x45,0x98,0x4f,0xcf,0x97,0x99,0xa1,0x9f, - 0x2f,0x33,0xe8,0xc0,0x3f,0x43,0x10,0x80,0xb0,0x56,0x9e,0x29,0x8b,0xf2,0x1b,0x7c, - 0xe1,0x97,0x3f,0xa7,0xe3,0xc3,0x84,0x2c,0xa8,0xfa,0x79,0x28,0x54,0x71,0xe7,0xc4, - 0x3f,0x1d,0x20,0xe9,0x7a,0x78,0xda,0xc0,0xd1,0xf5,0x62,0x63,0xb6,0x2c,0x48,0xc6, - 0x41,0x84,0xd8,0x70,0xd4,0xc7,0x46,0xd8,0x59,0xd5,0x2b,0x64,0x48,0x50,0xee,0xd0, - 0x58,0x3e,0xf1,0x04,0x6c,0x10,0x71,0x61,0xa5,0xe2,0x15,0xb6,0x31,0x53,0xb5,0xed, - 0xff,0x92,0xaf,0x19,0x2a,0x3f,0x96,0x4e,0x68,0x42,0x26,0x10,0x23,0x1b,0x94,0xed, - 0x80,0xf3,0xe7,0x3c,0x7e,0xdf,0x4f,0x66,0xa3,0x6a,0x80,0x56,0xa4,0xd9,0xdb,0x13, - 0x54,0x6d,0xfb,0xbf,0x74,0xfc,0x73,0x40,0xfb,0x9f,0xc3,0xdc,0xb3,0xfc,0xb8,0xef, - 0x46,0xb9,0x44,0x17,0x86,0xa1,0x59,0xb2,0xdc,0x25,0x82,0xf6,0x49,0xcf,0xcd,0xda, - 0xf6,0x7f,0x99,0xf8,0x87,0xca,0xd2,0xc8,0x31,0x48,0x74,0x85,0xf6,0x56,0x46,0x15, - 0x76,0x2c,0x8b,0x8a,0xf6,0x3f,0x46,0x4f,0x04,0xdb,0xce,0xc5,0x6d,0xf8,0xa7,0x46, - 0x3e,0x70,0x6b,0xec,0x65,0xe1,0xa9,0xc9,0xab,0xc4,0x0d,0x24,0xdc,0x1f,0x38,0x48, - 0xcd,0x22,0xd4,0xf6,0x09,0x3b,0xc9,0x79,0xe5,0xb5,0x6c,0xec,0x4b,0xc2,0xae,0xf6, - 0x84,0x0d,0xff,0xac,0xf2,0xd1,0x6c,0x17,0x9a,0x11,0xad,0x21,0xa5,0xfa,0x97,0x36, - 0x90,0x12,0xd8,0xa0,0xa4,0x34,0xe1,0xa7,0xe4,0xb8,0xb2,0x01,0x87,0x81,0xf6,0xa9, - 0x73,0x9f,0x0f,0x8b,0x4b,0xf0,0xb2,0xdb,0x95,0x4d,0xca,0xb6,0xc1,0xc0,0xea,0xf6, - 0xa4,0xd4,0xa1,0x7c,0x2a,0x2b,0xac,0x24,0x97,0xe1,0x07,0x4a,0x8d,0x2a,0x0c,0xe2, - 0xd2,0xc6,0x7c,0xbe,0x81,0x7f,0x06,0x4a,0xf6,0xe0,0x6b,0x3c,0x0f,0x71,0x6d,0x69, - 0x26,0x50,0x22,0x62,0xa3,0x3f,0x2a,0x21,0xfe,0x79,0x1e,0x92,0x87,0xb1,0x51,0xe6, - 0xc4,0x3f,0x22,0x3d,0x44,0x6f,0xd1,0xa5,0x34,0x5a,0xe3,0x08,0x2e,0x1c,0x4e,0x93, - 0x71,0xf1,0x96,0x5e,0x34,0x8b,0x31,0x7f,0xee,0x08,0xb8,0xf1,0x0f,0x63,0x6b,0xcf, - 0xa3,0x35,0xea,0x81,0xf1,0x63,0xe7,0x2a,0xe2,0x5a,0xa9,0x3a,0x85,0xd9,0x87,0x9e, - 0x2f,0xe6,0xcf,0xed,0xcf,0x62,0xfe,0xc7,0x60,0xcb,0xd7,0x42,0x85,0xcc,0xd2,0xe8, - 0x6b,0x84,0x0a,0x4d,0x48,0x91,0x97,0x69,0xaa,0x5d,0xf1,0x67,0x49,0x22,0x97,0x4f, - 0x64,0xfc,0x0f,0x93,0x3d,0x3f,0x8b,0x6b,0xdf,0x39,0x19,0x61,0x35,0x0e,0xf3,0x53, - 0x4a,0x65,0xd6,0xbf,0x92,0xdc,0x0f,0x6b,0xa9,0x29,0x56,0x12,0x70,0xe0,0x9f,0x3d, - 0xa2,0x94,0x0a,0xc4,0x9b,0x7a,0xe5,0x76,0x25,0x3c,0x8c,0x13,0x6f,0x50,0xe8,0x50, - 0xb6,0xf7,0x08,0x52,0xf8,0x3c,0xf5,0xe7,0x97,0xfc,0x12,0x29,0xcb,0xd5,0xc7,0x66, - 0xfc,0x4f,0x62,0x17,0xa2,0x9d,0x27,0xe0,0xc1,0xec,0x0d,0xca,0x2a,0xd5,0x37,0xaa, - 0x9c,0xcb,0xce,0xcf,0xc4,0xb2,0xdc,0x39,0xe5,0x28,0xce,0x87,0x60,0x36,0x50,0x67, - 0xc3,0x3f,0x67,0x61,0x44,0x7e,0x56,0xa4,0xf1,0xa8,0x68,0xa4,0x38,0x29,0x50,0xfd, - 0xa1,0x34,0xac,0x24,0xf9,0xb9,0x9d,0x9c,0x71,0x74,0xac,0x13,0xff,0xbc,0x05,0x47, - 0x0e,0x25,0x5a,0xe9,0xfe,0x2f,0x71,0x54,0x49,0xe8,0xfc,0xc6,0x9c,0x6b,0x68,0x03, - 0x81,0xca,0x11,0x65,0xc6,0x4a,0x48,0x73,0xc4,0x8e,0x7f,0xc8,0x3a,0xd8,0x2e,0x47, - 0xd2,0xd5,0xb3,0x60,0x0f,0x1f,0x6e,0x11,0x1e,0x26,0x6f,0xf1,0xeb,0xe4,0xb0,0x2c, - 0x7c,0x9f,0x0a,0x9b,0xff,0x2a,0xd6,0x1c,0x11,0xfd,0x92,0x0d,0xff,0xf0,0x26,0xad, - 0x31,0x0b,0xf6,0x4b,0xdb,0x5b,0xb0,0xdb,0x9b,0xb0,0x4e,0x08,0xd3,0x2b,0x3b,0x57, - 0xac,0x93,0xa3,0xf2,0xfa,0x34,0x29,0x72,0xf8,0x1f,0xf6,0xd1,0x51,0xd9,0xf3,0x7e, - 0x90,0xe8,0xb6,0xf7,0x17,0x48,0x5b,0x44,0xc5,0xfe,0x7e,0x5a,0x11,0x28,0x2a,0x93, - 0x34,0x21,0x0e,0xfc,0xa3,0x01,0xdb,0x6d,0x2d,0x89,0x23,0x10,0xd7,0xb7,0xbd,0xf7, - 0x4a,0x09,0x88,0x2a,0x3e,0x2a,0x24,0x49,0x42,0x91,0xc2,0xcd,0xb0,0xe3,0x9f,0x9d, - 0x1f,0x47,0x1a,0x97,0x84,0x36,0xef,0x78,0x79,0xdb,0x9f,0xa2,0x8d,0x4b,0x4e,0x6e, - 0xee,0x78,0x59,0xfd,0x5d,0x64,0x2e,0x15,0x42,0x7f,0x49,0x1d,0x8d,0xdc,0x72,0xb4, - 0xe4,0xa5,0x0e,0x27,0xfe,0x79,0x1b,0xea,0x17,0x53,0xd9,0xb3,0x78,0x44,0x4c,0x50, - 0xa2,0xac,0x4a,0x3e,0x52,0x65,0x18,0xca,0x38,0x5f,0xcc,0x81,0x7f,0xa4,0x2e,0x21, - 0x0c,0x42,0xfb,0x66,0xa9,0xbd,0xab,0x22,0x5c,0x16,0x01,0xb4,0x46,0x97,0x5e,0x17, - 0x2f,0xab,0x28,0xb0,0x1d,0x84,0xc3,0x0e,0xfc,0x73,0x51,0xf9,0x39,0xcc,0x91,0x85, - 0x5b,0xc9,0x54,0xf5,0x81,0x70,0xc5,0x32,0xe1,0xd6,0xa6,0xa9,0xf0,0x40,0x5d,0x45, - 0x93,0xd0,0xd2,0xfe,0xb2,0xf4,0x93,0x48,0x25,0x6d,0xd8,0xea,0x63,0x4f,0x7b,0x18, - 0xfe,0x11,0x2a,0x65,0xa1,0x65,0xc9,0x54,0x2a,0xeb,0x4d,0xf9,0x5b,0xc9,0xf5,0xf0, - 0x80,0xdc,0x21,0x0b,0xfd,0xe4,0x65,0xe1,0x27,0x78,0x2b,0xd2,0xef,0xda,0xff,0x75, - 0x56,0xa9,0x4f,0xb1,0xfd,0x7d,0x9f,0x93,0xf7,0x52,0xbe,0x0b,0x7f,0xd6,0xf6,0x04, - 0x55,0x7c,0xbd,0x49,0xde,0x06,0xf6,0xd3,0xbb,0xf0,0x8f,0x94,0x6c,0x7e,0x2f,0x5d, - 0xf9,0x66,0x0b,0x36,0xe4,0xeb,0x71,0x98,0x64,0x34,0x9d,0x6c,0x0a,0xa5,0x3b,0x06, - 0xd4,0x57,0x84,0x64,0xb3,0x23,0xff,0x45,0xf1,0x4f,0x1f,0xb3,0x7f,0x07,0x4b,0x7b, - 0x91,0x12,0xa5,0x83,0x1d,0x14,0x2b,0x46,0x75,0x20,0x9a,0x10,0x42,0x1a,0xe7,0x77, - 0xe0,0x9f,0xa3,0xba,0x13,0x3e,0x27,0x3e,0x03,0xe1,0xcd,0xc2,0xce,0xc3,0x11,0x6d, - 0x3d,0x84,0xd3,0x02,0xad,0x98,0xfd,0x0c,0x3d,0x8f,0x52,0x25,0x7e,0x1b,0xfe,0xf9, - 0x02,0x74,0x28,0xe1,0xb3,0xc2,0x4d,0xe4,0x78,0x73,0xb7,0x22,0x0d,0x47,0x1a,0x48, - 0x29,0x5e,0xa9,0xd6,0x84,0x05,0x65,0x21,0x98,0xaf,0x49,0xc3,0x81,0xf8,0x76,0xbf, - 0x35,0xdf,0x54,0xdf,0x27,0x85,0x35,0x72,0x45,0x5a,0x48,0x15,0x9d,0x86,0xa7,0xe5, - 0x8a,0x43,0x42,0xab,0x7f,0x2a,0xac,0x95,0xd1,0xc2,0xab,0x89,0x28,0xed,0x13,0x2a, - 0xd2,0xf8,0xa9,0x46,0xac,0xfe,0xbb,0x84,0x24,0x39,0xa9,0x74,0xd3,0xfd,0x5f,0xaf, - 0x8a,0xe3,0x4a,0xb7,0x5a,0xb2,0x92,0x4b,0xc2,0x09,0x65,0x3f,0xbd,0x32,0x03,0x3e, - 0xa4,0x27,0x86,0x8c,0x04,0xaa,0xc3,0x66,0x7f,0xe1,0x93,0xe8,0x6f,0x79,0xca,0xb7, - 0x7f,0xd1,0x5a,0x7d,0x0c,0x90,0x8f,0xa8,0x9e,0x3c,0x13,0xc8,0xe2,0x95,0x67,0x15, - 0x17,0xfe,0xc1,0x68,0xd5,0xd9,0xb8,0x2a,0x34,0x8a,0xfe,0xe7,0x63,0x95,0x9e,0x66, - 0x5e,0xf9,0xac,0xfc,0x76,0xba,0x6e,0x67,0xe9,0x4a,0xa3,0x3e,0x36,0xc6,0x2f,0x5b, - 0xfe,0xeb,0x9a,0x34,0x74,0x86,0xa3,0xd5,0x4b,0xbf,0x23,0x9d,0xd1,0x0e,0x6a,0x73, - 0xfa,0x85,0x61,0x32,0x55,0x7b,0x40,0x99,0x23,0xf9,0x69,0x05,0xec,0x7d,0xd4,0xff, - 0xa4,0x48,0x4e,0x7f,0x45,0xf1,0xcf,0x5a,0x5f,0x8d,0xb6,0xf4,0x1e,0x38,0xb5,0xf3, - 0x39,0xb1,0xe2,0x61,0x21,0x4b,0x2e,0xf1,0x51,0xe9,0x86,0x2e,0x74,0x53,0xd7,0xc1, - 0xd3,0xb8,0x70,0x46,0xff,0xe3,0xc4,0x3f,0x1d,0x4a,0x54,0xe3,0x32,0xe4,0x1c,0x7a, - 0x43,0x41,0x01,0x95,0xfc,0x25,0xa2,0x16,0xfc,0x68,0x55,0xbf,0x24,0x3f,0x43,0x62, - 0x0f,0xa3,0xff,0x71,0xe2,0x9f,0x0d,0x5d,0xc9,0x6c,0x28,0xbd,0xf0,0x4d,0xf1,0x40, - 0x7b,0x82,0x96,0xad,0x18,0x54,0xde,0x51,0xea,0xfa,0x4b,0xd3,0x53,0x62,0x14,0x0f, - 0xaf,0xc0,0xf9,0x63,0xdb,0xff,0x05,0x83,0x84,0x99,0x45,0x99,0x32,0x00,0x63,0x2d, - 0x0d,0x2d,0x38,0xdf,0xb6,0x91,0x31,0x31,0x46,0x2b,0xb4,0x9f,0x85,0x51,0x19,0xfd, - 0x4f,0xda,0xb6,0xff,0x0b,0xf1,0x8f,0x8f,0x39,0xed,0x5f,0x7f,0x76,0x81,0x7c,0x52, - 0x48,0x88,0x1b,0x0f,0x55,0xd6,0x4b,0x2f,0x68,0x37,0x1f,0xde,0xf8,0x6b,0x68,0x20, - 0xc7,0x45,0x6e,0x71,0xf0,0x94,0x57,0x7d,0x6c,0xa5,0xa9,0x4a,0xdc,0xb0,0x38,0x2c, - 0x06,0x3b,0x9b,0xb8,0x96,0xf5,0x68,0x7f,0x21,0x5d,0x16,0xd6,0xba,0x20,0x5c,0x86, - 0x6f,0x68,0xc7,0x3f,0xc6,0x6a,0x2b,0x43,0x6a,0xe0,0x11,0x0a,0x0c,0xd2,0xf8,0xeb, - 0xaf,0x83,0x6a,0xa5,0x5a,0x69,0xdf,0x0d,0x8f,0x0b,0xd5,0xb2,0xd0,0xee,0xc0,0x3f, - 0x80,0xbe,0x31,0x4a,0x02,0xf1,0xf5,0xc1,0xea,0xb6,0xb0,0xa4,0x15,0x8b,0xa5,0x12, - 0x69,0x93,0x66,0x83,0x1f,0xae,0x55,0x70,0x61,0xd2,0x05,0x2b,0xc1,0x71,0x3e,0xec, - 0x32,0xbd,0x9a,0xdf,0x5e,0x12,0x55,0x5e,0x83,0xbd,0x4a,0x50,0x99,0x12,0x41,0xfb, - 0xd5,0xaf,0xc3,0x85,0xc0,0x6e,0x5c,0x8a,0xd6,0xcb,0xe8,0x9a,0xb4,0xc9,0x36,0xfc, - 0x83,0xe3,0x4d,0x1e,0x66,0xcb,0xf6,0x31,0xb9,0x51,0xc3,0xb5,0xf1,0x69,0xf8,0x50, - 0xbc,0x99,0x2f,0xe9,0xa7,0x07,0xdf,0xc3,0xa7,0x35,0xfc,0x5e,0x6c,0xf8,0xc7,0xd2, - 0xcf,0x4f,0xbe,0x5f,0x6f,0xf4,0x4c,0xa1,0x57,0x1c,0xfb,0x07,0x2b,0x3d,0xf2,0x5f, - 0x66,0xda,0x6b,0x69,0x5e,0x23,0xd0,0x53,0xe6,0xca,0x7f,0xe9,0x6a,0xe7,0x8d,0x76, - 0x5a,0xa3,0xaa,0x10,0xff,0x33,0x49,0xcf,0x7f,0x2d,0xcd,0x7c,0x42,0x47,0x8f,0x53, - 0x72,0x30,0xb2,0x69,0x48,0xcc,0xe3,0x7f,0xa4,0x1c,0xff,0xb0,0x4a,0x34,0x69,0x1f, - 0xb7,0x50,0x79,0x72,0xfe,0xfe,0x2f,0x1b,0x1a,0xb4,0xf6,0x03,0x4e,0xb1,0x1a,0x36, - 0xfe,0x07,0x4c,0x7c,0x3e,0x85,0x3e,0xcd,0xda,0xf6,0x55,0xaf,0x15,0xe4,0x7f,0x2c, - 0xb5,0x33,0x6b,0x70,0x79,0xf9,0x53,0xce,0xce,0xff,0x68,0xd3,0x5c,0xeb,0x2f,0x83, - 0x7f,0x8e,0x68,0x8b,0xe2,0x4d,0x57,0xc1,0xff,0x0c,0x52,0xfd,0x8f,0x6f,0x9f,0x52, - 0x62,0x27,0x46,0xc0,0xb6,0xff,0x9d,0xe2,0x9f,0x69,0x0d,0xda,0xf2,0xf8,0x67,0x29, - 0xdb,0x53,0xc7,0xf4,0x3f,0x0a,0x36,0xb4,0xd0,0xbc,0x82,0xfc,0x0f,0xff,0xbd,0x9c, - 0x35,0x96,0x33,0x43,0x89,0x94,0x51,0x5c,0xf4,0xe7,0xf0,0x3f,0x0e,0x21,0x7a,0xc1, - 0xfd,0x5f,0xd6,0x31,0xd3,0x73,0x1d,0xf5,0xd3,0x0a,0xec,0xff,0xba,0x91,0x35,0x8a, - 0xce,0xe8,0x08,0xd0,0x9e,0xff,0xb2,0xef,0xff,0xca,0xdb,0x4d,0x69,0x6c,0x6c,0x89, - 0x7f,0xe2,0xca,0xfb,0xbf,0x1c,0x07,0xc5,0x5e,0xb5,0xfe,0x59,0x74,0x33,0x24,0x13, - 0xf3,0x3f,0x03,0xa2,0x2e,0x84,0x9e,0x88,0xff,0xe1,0xae,0x52,0xff,0xe3,0xc1,0xff, - 0x34,0x0d,0xc0,0xe3,0x4c,0x38,0x5d,0x74,0x65,0xfe,0xe7,0x8a,0xfa,0x9f,0x3a,0x4f, - 0xfd,0x8f,0x9b,0x01,0x2b,0xb4,0xff,0x0b,0x74,0xbd,0x37,0x3f,0x41,0xfe,0x2b,0x5f, - 0xff,0x13,0xf6,0xc8,0x97,0x15,0xde,0xff,0xc5,0xf4,0x3f,0x57,0xcb,0xff,0x18,0x8d, - 0x6b,0xae,0xac,0x7f,0xb6,0xd9,0xd3,0x63,0x23,0xfc,0x04,0xfb,0xbf,0x3c,0xf5,0xcc, - 0x36,0xfc,0x03,0x3b,0xcd,0x4d,0xee,0x13,0xf4,0x2f,0xb4,0xff,0xab,0x60,0xfd,0xc3, - 0xc2,0xfb,0xbf,0x68,0x43,0xbc,0xcb,0xad,0x7f,0xce,0xd5,0x3f,0x74,0xf3,0xcf,0xb4, - 0x10,0x19,0xdf,0x0d,0xc1,0x02,0xf9,0x2f,0xd7,0xfe,0x2f,0x63,0xdb,0xc2,0x63,0x4e, - 0x3e,0x24,0x9c,0xbf,0xff,0x2b,0xe0,0x45,0xfb,0x5c,0x2d,0xff,0xe3,0x73,0x5f,0xb1, - 0xed,0xff,0x9a,0x94,0xa7,0xd6,0x20,0x97,0xe5,0x31,0xa5,0x71,0xa0,0xc0,0xfe,0xaf, - 0x6b,0x72,0xfa,0x1f,0x7e,0xdf,0x24,0x4a,0xfb,0x34,0x9d,0x6e,0x61,0x8e,0xf4,0xaa, - 0xf8,0x1f,0xe3,0x1f,0xba,0x88,0x20,0xdb,0xfe,0xaf,0x3f,0x93,0xff,0x89,0x78,0xeb, - 0x9d,0x5c,0x8d,0x57,0x27,0xe6,0x7f,0x78,0x9d,0x38,0x9a,0x62,0x5d,0x19,0x70,0xf1, - 0x3f,0x6e,0x3d,0x8c,0x19,0xef,0xcc,0xf3,0x52,0xf3,0xf7,0x7f,0x4d,0xcc,0xe7,0x9c, - 0xf5,0xde,0xff,0x75,0x35,0xfc,0x8f,0x6d,0xff,0xd7,0x24,0xaa,0x0f,0x0f,0xcc,0xd3, - 0xcd,0xd2,0x57,0x80,0xff,0x61,0xfb,0xbf,0xea,0xdd,0x66,0x09,0x27,0x8f,0x4e,0xbc, - 0xff,0xcb,0x1c,0x66,0x5f,0xe8,0x82,0x1e,0xbf,0x0a,0xf1,0x3f,0x25,0x97,0xf5,0x8b, - 0x17,0x16,0xd5,0x0a,0x9b,0x94,0x44,0x2a,0x38,0x8c,0xd1,0xaa,0x4f,0x49,0x48,0x08, - 0x0b,0x93,0x42,0xbe,0xfe,0x59,0x39,0x0f,0xcf,0x68,0xec,0x58,0xb4,0xd9,0xb0,0xae, - 0xbd,0x3a,0xeb,0xdf,0x85,0x8b,0xc0,0x75,0x80,0x2b,0x32,0x91,0xc4,0x3c,0xea,0xff, - 0xc0,0x46,0x61,0x9e,0x1c,0x6d,0x09,0x48,0x64,0x71,0xf9,0x16,0xa8,0x3a,0xd4,0x35, - 0x0f,0x3f,0x43,0xb6,0x5e,0x13,0x73,0x15,0x12,0x72,0xfc,0x4f,0x96,0xdf,0x4d,0x41, - 0x4e,0x3f,0x3e,0x64,0x85,0xef,0x47,0x55,0xb1,0xac,0x9f,0x0a,0x7b,0xd6,0xf9,0xf0, - 0xf9,0x69,0x12,0xcd,0xe5,0xbf,0xcc,0xf7,0xf1,0xf1,0x7a,0x7d,0x9e,0x50,0xc3,0xd7, - 0x16,0xc3,0x6f,0xf8,0x05,0x5a,0xb0,0x87,0x1b,0xc4,0xef,0x75,0x6f,0x2a,0xda,0x16, - 0x88,0x5a,0xfc,0x58,0xae,0xbe,0x01,0x1c,0xe4,0x2f,0xd3,0xfc,0x69,0x26,0xf0,0x24, - 0x5d,0x98,0x68,0xc5,0x6f,0x73,0xff,0x0f,0x6d,0xd7,0x1f,0x1d,0xc5,0x71,0xdf,0xbf, - 0xb3,0x37,0x77,0xda,0xfb,0x21,0xb4,0x27,0xee,0x60,0x71,0x55,0xbc,0x27,0x09,0x38, - 0x3b,0x82,0x9c,0x30,0xd8,0xd4,0x96,0xd1,0xe8,0x4e,0x12,0x02,0x14,0xfb,0x00,0x01, - 0xaa,0x9f,0xfe,0x58,0xa8,0xfe,0x20,0xef,0xb9,0xad,0x84,0x9b,0xda,0xf9,0xa3,0x66, - 0xee,0x74,0x80,0x08,0xb8,0xbe,0x60,0x1a,0xe4,0x96,0xbe,0x9e,0x5a,0x9c,0xb8,0xad, - 0xdb,0xa7,0xd8,0x71,0x4d,0x5d,0x37,0xac,0x28,0x22,0x18,0x53,0x87,0xc4,0x34,0x4f, - 0x49,0x69,0x50,0x5e,0x95,0xbe,0xb8,0x89,0x1f,0x38,0x75,0xdf,0x33,0x76,0x30,0xfd, - 0xce,0xee,0xde,0xed,0x9e,0x74,0x92,0x9c,0x97,0x74,0xe1,0x8f,0xcf,0x9b,0x9d,0x1b, - 0xcd,0xce,0xce,0x7c,0xbe,0x9f,0xf9,0xee,0xcc,0x7c,0x3f,0x14,0x2d,0xd0,0x5f,0x73, - 0x51,0xd8,0x77,0x5f,0xeb,0xf8,0xb3,0xee,0xf3,0x9f,0xa7,0x51,0xff,0x08,0x52,0x12, - 0xfe,0x1f,0xed,0x2d,0x58,0x6b,0x84,0xc6,0x82,0x71,0x76,0x09,0x1b,0xea,0x59,0xee, - 0x69,0x9a,0xad,0x7f,0x26,0x23,0xc5,0xfd,0x5f,0xbe,0x15,0x56,0x74,0xe0,0x6f,0xe2, - 0x6c,0x6b,0xc8,0xb8,0x5f,0x47,0x5a,0x6e,0x72,0xbe,0x7f,0x15,0x2f,0x33,0x3e,0x1a, - 0x69,0xe2,0x9b,0x15,0xa9,0xdd,0xf7,0x9c,0x88,0x46,0xdd,0x92,0x0d,0x00,0xd7,0xeb, - 0x79,0x70,0x2c,0x10,0x9a,0xad,0x7f,0xae,0xc0,0x72,0xf6,0x0f,0xd9,0xd5,0xa3,0xf2, - 0x63,0x81,0x5d,0x17,0x4f,0xf2,0x3d,0xb7,0xe5,0x78,0xfd,0x5d,0xfc,0x20,0x5f,0x51, - 0x10,0x07,0x21,0x56,0xf8,0xfe,0x05,0x21,0xf6,0x3e,0xb4,0x34,0x56,0x6f,0x08,0xb4, - 0x0f,0xbf,0xc3,0x13,0xd3,0xc7,0x6a,0x3d,0x01,0xb8,0x98,0x49,0x14,0x50,0xf6,0x84, - 0x2a,0xe8,0x9f,0xc8,0x4b,0xec,0x63,0x58,0x73,0xb0,0x6a,0xac,0x2a,0xc7,0xff,0x53, - 0xdc,0x45,0xf6,0x96,0xb0,0x05,0x72,0x35,0x67,0x5c,0xeb,0xa9,0x4a,0xfc,0x13,0x0f, - 0xfd,0x7d,0xe8,0x2d,0xbe,0xd6,0x78,0x54,0xf1,0xac,0x84,0xb7,0xc8,0xfd,0x3f,0x0a, - 0x9d,0x69,0x88,0xcb,0x97,0x44,0xd8,0xe5,0x82,0x93,0xdf,0x75,0xfe,0x0f,0xf2,0xc9, - 0x21,0x88,0x8d,0x07,0xd3,0x52,0x44,0x7c,0x7f,0x37,0x02,0x22,0x3e,0xda,0xb3,0x70, - 0x8f,0xf0,0xff,0x38,0xfa,0xa7,0x94,0x5f,0x9c,0xff,0x9c,0xe1,0xa3,0x7a,0xf0,0xa9, - 0xc0,0x46,0x38,0x89,0xb2,0xc7,0xaf,0x4a,0x77,0x49,0x87,0x78,0x4c,0xb8,0x7d,0xe6, - 0x38,0xff,0x67,0x08,0xb4,0xc9,0xe0,0xba,0x43,0x3e,0x78,0x2e,0x87,0x7a,0x5b,0x49, - 0xca,0xf2,0x51,0x1e,0x17,0x6e,0x46,0x97,0xfe,0x29,0xe6,0x37,0xe8,0x8b,0xf0,0x36, - 0x34,0x7f,0xb9,0x46,0xf7,0xc4,0xeb,0x7f,0x20,0xdf,0x2f,0x84,0xe4,0x06,0xb8,0x54, - 0x58,0x9b,0x6f,0x3a,0x5d,0xf9,0xfc,0xe7,0x82,0x54,0xb4,0x3e,0xb2,0x90,0x01,0x8b, - 0x72,0xab,0xa6,0x44,0x8a,0x54,0x63,0x0c,0x55,0xd2,0x3f,0x70,0xda,0xb4,0x6e,0xa1, - 0x91,0x9a,0x95,0x70,0x8b,0x5b,0xdb,0xbe,0xe8,0x11,0xe1,0xd6,0x18,0xa9,0xa8,0x7f, - 0xec,0xf8,0xa4,0xf2,0x97,0xa5,0x46,0xf6,0x8f,0x8a,0xb0,0xb6,0x9e,0x0b,0x70,0xe4, - 0xd0,0xba,0xb4,0xfc,0x27,0x15,0xf5,0x8f,0x7d,0xfe,0x33,0x0e,0x93,0x46,0x2a,0x36, - 0x8e,0x6d,0xcd,0x67,0xa7,0xd9,0x5f,0x9f,0x6f,0x68,0x97,0xaf,0x54,0xdc,0xff,0x05, - 0xa8,0x7f,0xee,0x6d,0xda,0x12,0x38,0x9e,0x2d,0x2d,0x04,0x9a,0x96,0x5e,0x20,0xab, - 0xf4,0x78,0xaf,0x74,0x9e,0x16,0xf5,0x40,0x29,0xde,0x41,0x2f,0xce,0x04,0x3e,0x8c, - 0xad,0x91,0x17,0x65,0x03,0xc2,0xdb,0xb0,0x5c,0x04,0x4a,0x33,0x50,0xff,0x24,0xd0, - 0x42,0x2e,0x2e,0x2d,0x04,0xfa,0xa1,0xaf,0x58,0x9f,0x91,0xe8,0x55,0x33,0xba,0xeb, - 0xea,0x9b,0xd2,0x55,0xf9,0x36,0x79,0x98,0x79,0xae,0x78,0xbe,0x51,0xf8,0xbe,0xbd, - 0x11,0xbe,0xa4,0x67,0x9c,0x78,0x67,0xa8,0x4f,0x6e,0x69,0x6b,0x93,0xa1,0xe3,0x7f, - 0x7b,0x1a,0x06,0x45,0x6f,0xc9,0x07,0xd7,0x0b,0xff,0x73,0xba,0xe6,0xaa,0xe7,0x03, - 0xd9,0x5a,0x0a,0x5e,0x1e,0x1f,0x16,0x45,0x4e,0x3d,0xe0,0x24,0x5e,0xb7,0xd4,0xce, - 0x84,0xa4,0xf1,0x17,0xb5,0xb9,0xf6,0xbf,0xef,0x83,0x1c,0xbc,0x6a,0xc4,0xc4,0x36, - 0xf6,0xab,0xf0,0x2a,0xfc,0x2e,0x0b,0xf6,0x4a,0x8d,0xb3,0x36,0x82,0x39,0xfe,0x9f, - 0x33,0xd8,0xfe,0x67,0xa1,0xc1,0xf0,0xff,0x5c,0xfa,0x03,0x04,0x9f,0x65,0x7f,0x76, - 0xc5,0xfc,0x9e,0xb8,0xb7,0x4c,0x61,0xba,0xfc,0x3f,0xf4,0xb4,0xb9,0x5a,0xbb,0xfa, - 0x84,0x64,0xbe,0xe8,0xf6,0xa5,0x27,0x1a,0x1a,0xe1,0x3b,0xf0,0xb2,0xb9,0xd0,0x5d, - 0x9d,0xb5,0xff,0xfd,0x12,0x9c,0xa6,0xef,0xe7,0xdf,0xe8,0x5f,0x93,0xf7,0x7c,0x0d, - 0x6e,0x19,0x1b,0xf7,0xd4,0xd4,0x7a,0xa6,0xb5,0x77,0xe5,0x72,0x21,0x54,0x7e,0xfe, - 0xe1,0x24,0x11,0xde,0xb6,0x2a,0x71,0xde,0x63,0x3d,0xd4,0x18,0x0d,0x1a,0xf6,0xf2, - 0x5a,0x68,0x72,0x7d,0x88,0x2c,0x8f,0x0f,0xfb,0x03,0xe1,0xff,0xd1,0x92,0x71,0xf9, - 0x75,0xa8,0xcf,0x6c,0x2d,0xd4,0x2e,0x83,0x3f,0x66,0x0f,0x70,0x79,0x4a,0x8a,0xcf, - 0xde,0xff,0x25,0xe7,0x42,0xf0,0x1c,0x17,0xa7,0x1d,0xd6,0x1f,0x8b,0xbc,0x42,0x1a, - 0x8d,0xad,0x71,0xa9,0x1a,0xf9,0xaa,0xd1,0x90,0x55,0x87,0x9f,0x9d,0xf3,0x9f,0x09, - 0xfe,0xc1,0x93,0x2c,0x66,0xc8,0x37,0x03,0x2a,0x9c,0xcd,0xae,0xe0,0x47,0xfb,0xa5, - 0x88,0x74,0x98,0xad,0xd2,0xe5,0xbe,0x52,0xbc,0xb0,0x5a,0xe7,0xfc,0x67,0x79,0x78, - 0x39,0xbc,0xc3,0xc7,0xa6,0x42,0xbd,0xd2,0x57,0xe8,0xff,0xf2,0x57,0xf5,0x9a,0x0d, - 0x41,0xe1,0xff,0x59,0x5f,0x08,0xfd,0x24,0x58,0xfa,0x34,0xe6,0x9c,0xff,0x1c,0x57, - 0x5f,0x92,0x7f,0x2a,0xa2,0x9d,0x2a,0x55,0x05,0xb8,0x45,0x1f,0x04,0xdb,0xcc,0xb5, - 0x88,0x61,0x58,0xda,0x11,0xe6,0x3a,0xff,0x99,0x7e,0x53,0xfa,0x8f,0xb1,0xfb,0x7e, - 0x82,0x85,0x58,0xde,0x9e,0xaa,0xb7,0x52,0x1b,0xe1,0x3d,0xcb,0x6c,0x89,0xef,0x17, - 0xad,0xe5,0xf1,0x61,0xff,0x46,0x39,0xc5,0x0f,0x2a,0x05,0x63,0x79,0xb3,0xa4,0xb2, - 0x57,0x60,0x35,0xf7,0x6c,0xad,0x15,0x8e,0xbe,0xd5,0x2c,0x28,0x4e,0xf8,0xb1,0x85, - 0x9c,0xa3,0x3f,0x0b,0xf0,0x86,0x92,0x89,0xc5,0x2e,0x06,0xcd,0xfe,0xa3,0xac,0xee, - 0x0c,0x3e,0xb6,0xb2,0x4e,0x7a,0x01,0x7f,0x18,0x9c,0xca,0xd6,0xc1,0x49,0x65,0x76, - 0x7c,0x34,0x29,0x03,0x9a,0x11,0x88,0x64,0x25,0xf6,0x75,0xde,0x04,0xc1,0x13,0x52, - 0x88,0x66,0xda,0x9b,0x78,0xf0,0x74,0xb6,0xd4,0x9e,0xce,0xfe,0x2f,0x19,0xf9,0xe7, - 0x92,0xb1,0x56,0xab,0x69,0x0c,0xbe,0x44,0x3f,0x92,0xd1,0x7a,0x16,0x82,0x71,0xe9, - 0x5d,0xd1,0x02,0xa7,0x82,0x4d,0xd2,0xbf,0x5b,0x4b,0x5b,0xdd,0xe7,0x3f,0xbf,0x0b, - 0xff,0x6d,0xb4,0x24,0x1e,0x31,0xd9,0x89,0x09,0x76,0x6a,0x98,0x92,0x3e,0x66,0x1b, - 0x85,0xff,0xe7,0x67,0xf0,0x53,0xe9,0x69,0x34,0x6d,0xee,0xf3,0x9f,0xe1,0x8c,0xf2, - 0x89,0xdc,0x9a,0xe8,0x36,0x3c,0xeb,0xe0,0x17,0x38,0x30,0x8f,0x8e,0x0d,0x3d,0x05, - 0xdf,0xf6,0x1f,0xc0,0x89,0x2d,0xb4,0xd8,0x33,0xdc,0x55,0xdc,0x75,0xfe,0xf3,0xe7, - 0xf9,0xeb,0x6c,0x8d,0x22,0xe7,0xea,0x35,0x2b,0xfe,0xe0,0x58,0xd2,0x9f,0x3f,0x3a, - 0xb5,0xe6,0x9d,0xad,0x63,0x25,0xfb,0x55,0xe5,0x8e,0x0f,0x1b,0xb7,0x8e,0xa1,0x28, - 0xd4,0x36,0xc1,0x83,0xa6,0xe3,0x48,0x7a,0x1c,0xfc,0x59,0xe1,0xc1,0xc8,0x16,0x5d, - 0x19,0x6e,0xfd,0xa3,0xc8,0x74,0x4c,0x2c,0x73,0x1d,0xad,0x97,0xe9,0xcb,0x22,0x2c, - 0x5d,0xb6,0x76,0x85,0x94,0x51,0xc4,0x42,0xa9,0xc0,0x31,0x62,0xb7,0x4f,0xd6,0xd1, - 0x3f,0xc3,0xfb,0xcc,0x4e,0xde,0xcd,0x83,0x8d,0xca,0x87,0x69,0x73,0x74,0x7c,0x0e, - 0xde,0x6c,0x5b,0x73,0xa5,0x66,0xac,0xa1,0x24,0x1d,0x1d,0xff,0x0f,0x8f,0x4e,0xa2, - 0xe2,0x6b,0x95,0x3e,0x7b,0x0e,0x45,0xcb,0x2f,0xbc,0xad,0xf2,0xdd,0x27,0x50,0xf6, - 0x20,0x23,0x5d,0xaa,0x19,0x70,0xce,0xb7,0xa9,0xe4,0xff,0xd9,0xf1,0x89,0xf0,0x4f, - 0x4e,0x55,0x7f,0xb8,0xe3,0xe9,0xc0,0xb7,0xed,0xf3,0xc3,0x67,0xeb,0x1f,0x2e,0xf6, - 0x7f,0x65,0xac,0x65,0x3f,0x54,0xec,0x97,0x3f,0x5a,0x0c,0x0b,0xbb,0xd5,0x59,0xff, - 0x53,0x7b,0xd3,0xed,0xff,0x89,0xbc,0xe2,0x9b,0xb1,0x0c,0x3e,0x32,0x64,0x3b,0x82, - 0x8a,0x47,0x43,0xff,0xdc,0xed,0xff,0xa1,0xff,0x24,0xfd,0xde,0xb8,0xf0,0xf6,0x38, - 0xdb,0xbe,0x8e,0xc2,0x22,0xc3,0x53,0xd1,0xff,0x03,0x11,0xab,0x11,0xf0,0xa5,0x8b, - 0xd1,0xb1,0xd6,0xa8,0x1e,0x4b,0x3d,0x6e,0x07,0x62,0xa8,0x72,0xf4,0x61,0x89,0x6f, - 0x7f,0x04,0x76,0x7c,0xd8,0x9b,0x44,0xa8,0xc1,0xbb,0x8d,0x4d,0xce,0xb1,0x3f,0xa9, - 0xe2,0xfa,0x9f,0x86,0xb2,0xef,0x5f,0xf2,0xc7,0x52,0x69,0xdb,0xd7,0x2c,0x21,0x3a, - 0xcb,0xff,0x43,0x9d,0xef,0xa1,0x8a,0x7d,0x9e,0xf3,0x65,0xbb,0xda,0x7b,0x2b,0xec, - 0xff,0xaa,0xb8,0xfe,0x87,0xcc,0x4c,0x71,0xf4,0xcf,0x9e,0x19,0xfe,0x1f,0x1b,0x14, - 0x56,0x97,0x1d,0x84,0xf8,0x51,0xf9,0xf7,0x2f,0xa5,0xa5,0xe8,0xed,0xd9,0x30,0x21, - 0x96,0xfd,0xd0,0xff,0xc9,0xb5,0x4c,0xd5,0x34,0x2f,0xbe,0x4c,0xe6,0x59,0xff,0x63, - 0xb6,0xc6,0xd3,0xe3,0xd8,0x1a,0xb3,0x1c,0x65,0x95,0xfd,0x3f,0x6f,0x13,0x3b,0xfe, - 0xc5,0xdb,0x66,0xfb,0x5b,0x0b,0xd1,0xe9,0x3c,0xfe,0x1f,0x72,0xd8,0x62,0xcb,0x6b, - 0x70,0x78,0xe6,0xfa,0x9f,0xd2,0xfe,0x2f,0xb7,0xff,0x47,0x3a,0x9c,0xb3,0x80,0xe7, - 0x6b,0xfc,0x9e,0xb2,0x16,0x98,0x72,0xfb,0x7f,0x9c,0xf6,0xf4,0x14,0x1d,0x41,0x43, - 0xd6,0xb2,0xba,0x85,0xfc,0x3f,0x97,0x4c,0x40,0x04,0x78,0x70,0x81,0xf8,0x17,0x62, - 0x19,0x2a,0xb5,0xac,0x4f,0x0a,0x81,0x19,0xf6,0x62,0x71,0x05,0xfd,0x33,0x5c,0xc9, - 0xff,0x63,0x03,0x22,0xc0,0xf2,0x79,0xd7,0xff,0x94,0x1f,0x7b,0x28,0x0e,0x22,0x9e, - 0x43,0xff,0x98,0x6e,0x1f,0x3b,0x3a,0xc6,0xb4,0x5c,0xdc,0xaf,0x44,0x7e,0x65,0xff, - 0xcf,0x19,0xb9,0x68,0x64,0xa5,0xa9,0xf2,0x85,0x28,0x45,0xff,0x03,0x59,0xc8,0xff, - 0x23,0xcc,0xba,0x54,0xbe,0xc2,0xc7,0xd9,0xff,0x35,0x12,0x2d,0xed,0x7e,0xfa,0xa0, - 0xf6,0x5f,0xe1,0x15,0x13,0xcc,0xda,0x0f,0xf5,0x5f,0x33,0xcf,0x3f,0xb4,0xd4,0xce, - 0x30,0x94,0xcb,0x9e,0x0a,0xe7,0x3f,0x97,0xf9,0x7f,0x32,0xb0,0xf0,0xfe,0x77,0xaf, - 0xa5,0x3f,0xfd,0xd6,0xb1,0x93,0xd6,0x7a,0x72,0x75,0x1e,0xff,0x0f,0x75,0xf9,0x73, - 0xde,0x9c,0xb1,0xed,0xab,0x92,0xff,0xa7,0xb4,0x1f,0x10,0xdf,0xfe,0x17,0x4d,0x37, - 0xe0,0x8e,0x69,0xfa,0xfd,0x99,0xfb,0xbf,0x16,0xf2,0xff,0xd0,0x39,0xf7,0xbf,0x97, - 0xfc,0x3f,0x38,0xd5,0x78,0x99,0x5a,0x6e,0x9f,0xc8,0xeb,0x74,0x4e,0xff,0xcf,0xc1, - 0xca,0xeb,0x0f,0xe7,0x5a,0xff,0x1c,0x2b,0xf3,0xff,0x78,0xe6,0x3a,0xff,0xd0,0xed, - 0xff,0xa9,0xb4,0xff,0x6b,0xa6,0xff,0xc7,0x39,0xff,0xb9,0xf2,0xfa,0x1f,0xd8,0x38, - 0x5e,0xe6,0xff,0x29,0x9d,0xff,0x3c,0xc3,0xff,0xf3,0xf0,0xd4,0x33,0x67,0x4c,0xf0, - 0x50,0xf9,0xfa,0xd5,0x19,0xf1,0x2f,0xac,0xda,0xb6,0xbf,0x46,0x56,0x8b,0x8d,0xf0, - 0xd7,0xf0,0x31,0xcb,0xeb,0xef,0xf8,0x7f,0x8e,0x17,0xfd,0x3f,0x83,0xf6,0xfa,0x9f, - 0xa7,0x06,0xcc,0x30,0xb2,0xf7,0xcc,0xb1,0xfe,0x67,0x86,0xff,0x67,0xcd,0x1c,0xe7, - 0x09,0x54,0xf4,0xff,0x10,0x7b,0xa1,0x05,0x5a,0x1c,0x34,0x34,0x77,0x8f,0xfd,0x4e, - 0x05,0xff,0x4f,0x7e,0x9e,0xf5,0x3f,0xa9,0x0a,0xfe,0x9f,0x8c,0x6b,0xfd,0x8f,0x7a, - 0xc3,0x3e,0x08,0x51,0x99,0xb9,0xfe,0xc7,0xb1,0xd7,0xdf,0xb1,0xfd,0x3f,0x5b,0x8b, - 0xa7,0xb5,0xc8,0x63,0xf5,0x95,0xfc,0x39,0x25,0xff,0x0f,0xcc,0x58,0xff,0x53,0xb6, - 0x5f,0x49,0x99,0xd7,0xff,0x43,0xc5,0x79,0x77,0x5d,0x89,0xed,0xd8,0x2c,0x6c,0xae, - 0xf5,0x3f,0x5c,0x7e,0x5c,0x2e,0x7e,0x7f,0xa1,0x42,0x18,0xaf,0x7e,0xb9,0x01,0x0d, - 0x7d,0xaa,0x7c,0xfd,0xf3,0x1c,0xfe,0x9f,0x1b,0x62,0x99,0xd0,0xfb,0x0d,0xb6,0x23, - 0xc8,0x79,0xde,0x86,0xf2,0xf8,0xb0,0x75,0xa3,0x20,0x27,0xa5,0x3a,0xe3,0x60,0xcb, - 0x28,0x8b,0xef,0x90,0x42,0xc9,0x1c,0x8c,0x9e,0x8f,0xdf,0x17,0x98,0x2b,0x1e,0x5f, - 0x9c,0x48,0xb4,0x4d,0x56,0xc0,0xab,0x92,0x2c,0x6c,0x5b,0x28,0x1e,0x9f,0x9c,0xab, - 0x8d,0x91,0xe1,0xe4,0x67,0x94,0xc0,0xa1,0xfa,0x18,0x1b,0xde,0x7b,0xaf,0x32,0x9c, - 0x93,0x9a,0xe5,0x61,0x56,0x8f,0x22,0x53,0x8a,0x81,0x00,0xe5,0xe5,0x2b,0x04,0xb4, - 0x24,0xd4,0x19,0x9b,0x12,0xc4,0x03,0x4f,0xc8,0x66,0xb1,0xe7,0xe7,0x89,0x87,0xa8, - 0x68,0x32,0x85,0x80,0x4c,0x86,0x94,0xc2,0x65,0x11,0x1d,0xcf,0x18,0x4a,0x98,0xcb, - 0x01,0x42,0xac,0x62,0x3c,0x44,0xa2,0x71,0x34,0x02,0x40,0x25,0xbc,0xd9,0xa5,0x49, - 0x72,0x68,0x81,0x78,0x7c,0x99,0x90,0xe6,0x8f,0x4b,0x47,0xe5,0x2c,0x5f,0xa7,0x79, - 0x65,0xf2,0x25,0x8a,0x99,0xc0,0xcc,0xcd,0x2b,0xc6,0x43,0xf4,0x58,0x37,0x69,0x3a, - 0x05,0x5c,0x4c,0x9c,0x42,0xe0,0xb1,0x7a,0x57,0x88,0x41,0x85,0xab,0xf6,0xb0,0x3a, - 0xda,0xd5,0xf4,0x84,0xa4,0x02,0xbe,0x08,0x1a,0x4f,0x06,0x94,0x73,0x0b,0xc4,0x43, - 0xa4,0xc4,0x07,0x8c,0x45,0xc2,0x5e,0x8d,0x7c,0x09,0x92,0x4c,0xe1,0x0b,0xc4,0x8b, - 0xd4,0x62,0x5b,0x64,0x51,0xc8,0x21,0x25,0xd6,0x2e,0xa7,0xa4,0x88,0x91,0xc3,0x6c, - 0x73,0xc6,0x43,0x54,0xa8,0x46,0x8e,0xc1,0x13,0x24,0x72,0xc5,0x1b,0x27,0x14,0x4b, - 0x8b,0xb0,0xaa,0x04,0x16,0xfb,0x84,0x13,0x2a,0x51,0xfc,0x21,0xe7,0x3a,0xbc,0x2e, - 0x06,0x4d,0x6d,0x56,0x69,0x97,0xe5,0x1d,0x08,0x0e,0x27,0xe6,0x89,0x87,0xb8,0xd6, - 0xab,0xf0,0x2a,0x6c,0x9f,0xba,0xfd,0xd8,0xb4,0x1e,0x2d,0xdd,0x25,0x4b,0x74,0xde, - 0xf6,0x3f,0xd8,0xa8,0xc9,0xb2,0x27,0xab,0x24,0x79,0x63,0x4c,0x96,0x07,0x92,0x94, - 0xe7,0x70,0x78,0xcf,0x1d,0x0f,0xd1,0x23,0x8b,0xb4,0x23,0x2a,0x92,0x0b,0x5c,0x86, - 0xc5,0x1c,0xb8,0x27,0x51,0x5e,0x62,0x59,0x3c,0x44,0xc5,0xfc,0xcf,0x91,0x5a,0x14, - 0x50,0x98,0x96,0xe7,0xe6,0xeb,0x9d,0xeb,0x6a,0x69,0x49,0x14,0x78,0x01,0xd0,0x1e, - 0x2b,0x37,0x0b,0xf8,0xfe,0xf1,0xb7,0x8a,0x31,0x2b,0x97,0x3b,0x1e,0xa2,0x67,0xd2, - 0x33,0x02,0x2d,0xcb,0xde,0x50,0xa5,0xec,0x78,0x1b,0x5f,0xf6,0xcf,0x7c,0xc5,0x7c, - 0xe5,0x83,0x59,0x15,0x88,0xec,0x8c,0x44,0x11,0x49,0x10,0xc1,0x7f,0x0b,0x5f,0xf7, - 0x11,0x2a,0xb5,0x9b,0x40,0xca,0xb4,0x67,0xd9,0xbc,0x79,0x5d,0xd1,0x00,0xcf,0xfe, - 0xff,0xc6,0x1f,0x3c,0x7b,0xc3,0x06,0xd7,0xef,0x5c,0xff,0x54,0xe5,0xb7,0x9e,0xb5, - 0xc1,0x81,0x4f,0x55,0x7e,0xeb,0x8d,0xb9,0x1e,0xa4,0x72,0xfe,0x03,0xbf,0xff,0xcb, - 0xc5,0x87,0x3d,0xdf,0x18,0x3b,0xa2,0x25,0x03,0x11,0xe9,0x5b,0x14,0xf9,0x50,0x6c, - 0x21,0x9b,0x3f,0x3e,0xa9,0x57,0x21,0x13,0x90,0x02,0x15,0xaa,0x14,0x24,0x2e,0x06, - 0x2a,0x9b,0x3f,0x3e,0xe9,0xa1,0x35,0xcd,0x17,0x87,0x93,0x0d,0x11,0xf9,0xf0,0x9a, - 0x66,0xf9,0x14,0x93,0x22,0x7c,0x81,0xf8,0xb0,0x5a,0xc6,0x8f,0xe5,0x9b,0xc3,0x7c, - 0x42,0x0c,0x4c,0x3e,0x6f,0x7c,0xd8,0xe4,0xb9,0x84,0x16,0x08,0x09,0x9a,0x42,0xf3, - 0xcc,0x65,0xac,0x52,0x85,0xf1,0xe2,0x8a,0x4f,0xca,0x3d,0x48,0x8c,0x1a,0x8e,0x1e, - 0x2c,0x30,0xc7,0x90,0x18,0x21,0x59,0x71,0x3c,0x16,0x0b,0x61,0x99,0x75,0x63,0x01, - 0xd9,0x33,0x04,0x05,0xae,0xe1,0x00,0x23,0x73,0xf1,0x61,0xe9,0x22,0x1a,0xde,0xc2, - 0x9b,0x59,0x4b,0x2d,0xb0,0xca,0x03,0xcd,0x69,0xff,0xc3,0xda,0xa8,0x2c,0xb7,0x05, - 0x90,0x2e,0x12,0xa3,0x55,0xf1,0xf4,0x9c,0x7c,0x68,0x37,0x82,0x56,0xd5,0x42,0x42, - 0xb0,0x5d,0x8e,0x48,0x08,0xfc,0xb0,0x17,0x5f,0xc4,0xfc,0xed,0x3f,0xb4,0xa1,0x39, - 0x14,0xd7,0x3d,0x0a,0x3f,0xdc,0x18,0x03,0xd8,0xe6,0x89,0x54,0xe4,0x43,0x87,0xf4, - 0xaa,0x42,0xe4,0x32,0xdd,0xce,0xd4,0xb5,0x55,0x75,0xe4,0x22,0xec,0x67,0xea,0xfc, - 0xf1,0x61,0x95,0x83,0x6a,0xac,0x03,0x92,0x01,0x55,0xca,0x69,0x31,0x22,0xb3,0x64, - 0x65,0x3e,0x74,0x91,0x9e,0xc6,0x17,0x35,0x12,0xd6,0xcd,0x99,0xc6,0xa5,0x85,0xe3, - 0xc3,0x2a,0x19,0x25,0xd1,0x1d,0x97,0x52,0xd4,0xe0,0x09,0xcd,0x1f,0x42,0x50,0x99, - 0x0f,0x8b,0xb0,0x9e,0x28,0x80,0x3d,0x92,0x87,0xfe,0x12,0x89,0x11,0x73,0x31,0xa7, - 0xd2,0x15,0xe3,0xc3,0x2a,0x26,0x1f,0x72,0x86,0xc4,0x88,0xaf,0x4a,0xa9,0xfc,0xbe, - 0x5c,0xf1,0x61,0x13,0x45,0x3e,0xbc,0xc9,0x67,0x12,0x63,0xc5,0xf8,0xb0,0xd2,0x8f, - 0xc9,0x24,0x6f,0x51,0xd7,0x3f,0x93,0x4d,0xfd,0x29,0xe1,0x1b,0x7b,0x1f,0x1e,0xa9, - 0x90,0xc9,0x9d,0x1f,0xe9,0x90,0x13,0x42,0xbc,0x66,0x2f,0x22,0x64,0xfe,0xdc,0xd6, - 0x75,0x1f,0x25,0x44,0xb2,0x01,0xed,0x62,0x95,0xb2,0x54,0xa0,0xb5,0x03,0x9f,0x8a, - 0xdf,0x1e,0x28,0x81,0xb3,0x07,0x3e,0xe1,0x0b,0xe7,0x77,0xc0,0x8d,0x1b,0x37,0x3e, - 0x45,0xf9,0x2e,0x70,0xfd,0x97,0xe2,0xe7,0x8d,0xbf,0x4e,0x3e,0x3f,0x48,0x3c,0x03, - 0xec,0x9a,0xf2,0x00,0x6c,0x1b,0xf7,0x0d,0xb0,0x53,0xca,0x93,0x91,0xea,0x09,0x18, - 0x6c,0xeb,0x43,0xe0,0x9f,0xa8,0x1a,0x64,0x7d,0xe9,0xa5,0xb4,0xda,0x68,0x2e,0xe5, - 0xef,0x68,0xf7,0x0e,0x92,0x3e,0xb6,0x5b,0x61,0x39,0x1b,0x44,0x72,0x64,0x00,0x41, - 0x4a,0x89,0x9e,0x27,0x56,0x4a,0xd4,0x68,0x4e,0x97,0xca,0x17,0x7a,0xac,0x4b,0xab, - 0x95,0x69,0xb6,0x1c,0x2c,0x55,0x11,0xc4,0x78,0x97,0x8e,0x29,0x5c,0x2b,0x95,0xcf, - 0x81,0xe8,0x38,0xb2,0x97,0xc0,0x55,0xee,0xd5,0xa1,0x17,0x96,0x28,0xde,0x1c,0xa6, - 0xf4,0x4a,0xbb,0xc0,0x9b,0xf3,0xea,0x99,0x5e,0x0d,0x81,0x2b,0xff,0x44,0xef,0x8a, - 0xfb,0xc9,0xe7,0xf8,0x8e,0x36,0x3a,0x0c,0xfb,0x49,0x5f,0x7e,0xa9,0x16,0xbd,0xe8, - 0x45,0xc0,0x97,0xc6,0xa3,0x97,0x4c,0xb0,0x5b,0x73,0xd7,0x67,0x82,0x31,0x4d,0x91, - 0xa9,0x44,0xf0,0x2f,0x89,0x3f,0xe4,0x93,0x51,0xe4,0xee,0x11,0x00,0x48,0xce,0x4a, - 0x01,0xc2,0x9d,0xe7,0x9d,0x00,0xba,0x97,0xa8,0xbc,0x53,0x83,0x67,0x70,0x84,0x89, - 0xd3,0x78,0x95,0x61,0x1a,0xcb,0x20,0x58,0xa7,0xe4,0x50,0x4a,0x21,0x8b,0x6a,0x8a, - 0x3b,0xff,0x16,0xef,0xf6,0x4c,0x4f,0x61,0x67,0xdc,0x1b,0x08,0x27,0x33,0xe9,0xb1, - 0x9e,0x78,0x34,0xe0,0x65,0x99,0x74,0x21,0x12,0x8f,0x4a,0x84,0xf1,0xb4,0x16,0x69, - 0x89,0x82,0x53,0x9f,0x5c,0x1d,0xa9,0x62,0x3b,0x8d,0x68,0x0f,0xad,0x23,0xbb,0x61, - 0x27,0x0f,0x0f,0x78,0xfb,0xc8,0x0e,0x88,0x18,0xd1,0x04,0x02,0x0f,0xf4,0x18,0xd1, - 0x0d,0xb4,0xe4,0xfe,0xc1,0xf6,0x89,0x43,0x17,0xd4,0x02,0xe5,0x8a,0xd0,0x6e,0x0a, - 0x23,0xd0,0x06,0x96,0xd1,0x50,0xda,0xa8,0x60,0x0d,0x4e,0x15,0x68,0x73,0xb5,0xcf, - 0x3e,0x49,0x66,0xc8,0xc8,0x39,0x10,0x8c,0x9f,0x85,0x18,0x97,0x05,0x87,0x64,0x85, - 0xc9,0xd0,0x7c,0x36,0x68,0x73,0xb5,0x4f,0x9a,0xf4,0x93,0xdf,0x86,0x5d,0x8c,0xe6, - 0x4d,0xb0,0x84,0x45,0xf3,0x55,0x3a,0x99,0x84,0x5d,0x10,0xcd,0xa3,0x22,0x9d,0x84, - 0x3f,0x84,0xa8,0xfb,0x79,0x59,0x50,0x87,0x49,0xb8,0x1f,0x5f,0x8a,0xc7,0x02,0xd5, - 0xdc,0xb3,0x17,0x5f,0xdc,0x93,0x08,0xaa,0xf6,0x92,0x5e,0xbe,0x04,0x81,0xab,0xff, - 0x24,0x69,0x02,0x15,0x77,0x4a,0x96,0xb3,0x54,0xc9,0x50,0x04,0xca,0x39,0x91,0x12, - 0xeb,0x44,0x20,0x59,0xb7,0x14,0xd7,0xfb,0x02,0xb1,0x9e,0x30,0x04,0xa6,0x71,0xb3, - 0x81,0x61,0x02,0x49,0x7c,0x6c,0x2c,0xa6,0xb8,0xda,0x47,0x22,0x09,0xde,0xad,0x2d, - 0x16,0xdd,0xcc,0x06,0xe7,0x48,0x62,0xdc,0x04,0x6f,0x91,0x84,0xd1,0x9d,0xd8,0x21, - 0x53,0x57,0xfe,0x89,0x64,0xb1,0x53,0x65,0x2d,0x20,0x47,0x11,0x8c,0xf7,0x6a,0x4b, - 0xe4,0xe8,0x90,0x57,0x1b,0xef,0x4d,0x60,0x0a,0x77,0xb5,0x4f,0xd2,0x6c,0x39,0xa9, - 0xd8,0x84,0x36,0x08,0x69,0xc9,0x22,0x40,0x0b,0xeb,0x7a,0x5e,0xef,0x76,0xaa,0x67, - 0x54,0xad,0xb3,0x0b,0x8e,0x23,0x58,0xa6,0x75,0xca,0xe1,0x2c,0xed,0xc7,0xc7,0xec, - 0xec,0x0a,0x1f,0x47,0x8b,0x8f,0xcf,0xdb,0x15,0xe6,0xcd,0x25,0x93,0x71,0x5e,0xf7, - 0xf6,0x92,0x5d,0xd8,0x11,0x40,0x80,0x25,0x08,0xa2,0x08,0xa8,0xcf,0x04,0xa4,0x97, - 0x74,0x42,0x98,0x47,0x99,0x53,0x9f,0x8c,0x8f,0x6c,0xe3,0x3d,0x7a,0x74,0x84,0x1e, - 0x22,0x6d,0x3c,0xad,0x47,0x54,0xaf,0x6f,0x16,0x00,0xad,0x54,0x7e,0xae,0xd6,0xb4, - 0x30,0x52,0x17,0xad,0xc5,0x21,0xd0,0x66,0x8d,0x05,0x8a,0x26,0x49,0xb1,0x52,0x4c, - 0xe0,0xfa,0x3c,0x3b,0xd1,0x29,0x85,0x79,0x4e,0x8f,0xa9,0x6a,0xa7,0x67,0x1b,0xbf, - 0xaa,0x27,0xd4,0x6a,0x01,0xce,0xeb,0xeb,0x11,0x54,0x89,0x14,0x04,0xae,0xfa,0x4c, - 0xf8,0xbc,0x83,0x99,0x3e,0x7d,0xb7,0x52,0x77,0x01,0x04,0x58,0xaa,0x92,0x0b,0x98, - 0x72,0x99,0x6d,0x52,0xa3,0x02,0x5c,0xd3,0x9f,0x54,0xa3,0x6e,0x3e,0xe9,0x24,0x83, - 0xfc,0x9a,0xfe,0x80,0x5a,0x7d,0xc1,0x33,0xc8,0x27,0xf7,0x2c,0xb5,0x40,0x9f,0x95, - 0xd2,0x8c,0x60,0xb7,0x5a,0x6d,0x84,0x5d,0xf9,0x69,0xb3,0x28,0xbf,0x77,0xb3,0x28, - 0xad,0x5b,0x5f,0xac,0x46,0x3b,0xbd,0xb1,0x83,0x21,0xcc,0x16,0xbd,0x00,0xcd,0x99, - 0x90,0x9e,0x52,0x77,0x1a,0x61,0xa7,0xff,0x48,0x64,0xc0,0x4d,0x3b,0x3d,0x16,0xe8, - 0xb3,0x52,0x00,0xc1,0x52,0xe4,0x1f,0x57,0x6f,0xf3,0x91,0x3d,0xbc,0x57,0x5f,0xa2, - 0x62,0x7b,0x5a,0xc0,0x8b,0x20,0x63,0x81,0x70,0xcc,0x02,0xae,0xfc,0x1d,0x6c,0x7d, - 0x82,0x74,0xc3,0x0e,0xa0,0xdc,0x3b,0x40,0xea,0x60,0x13,0x44,0x0d,0x13,0xec,0x46, - 0x40,0x12,0xa4,0xcf,0x04,0x4e,0x7d,0x3a,0x52,0x5c,0x2b,0xc8,0x71,0x29,0x80,0xbd, - 0x45,0xe7,0xaa,0x66,0xf2,0x4f,0x11,0x50,0xcd,0x02,0xdc,0xf5,0xbc,0x5b,0x72,0xfa, - 0x28,0xf6,0x1f,0xcc,0x8f,0xbd,0x45,0xc6,0x6e,0xa6,0xb8,0x80,0x6e,0x01,0x77,0x7e, - 0xe6,0x4d,0xb7,0xf5,0xd4,0x76,0x20,0xf1,0x52,0xa4,0x1d,0x7c,0xde,0xa8,0xe4,0x65, - 0x7c,0x9b,0x00,0x9e,0x68,0x9a,0x9b,0x29,0xe0,0x6a,0x9f,0x20,0x49,0x5f,0xec,0x49, - 0x44,0x65,0x9a,0x22,0x69,0xa3,0x47,0x8b,0x86,0xbc,0x26,0x48,0x20,0x48,0x5a,0x40, - 0xf6,0x32,0xe7,0x79,0x91,0x75,0x74,0x9c,0x43,0x52,0xc2,0x84,0x7e,0x14,0x23,0x18, - 0x4c,0x80,0xd2,0x12,0x2d,0xb6,0x05,0xda,0x5c,0xcd,0xd9,0x96,0x92,0x24,0xce,0x0b, - 0x5a,0xd7,0x88,0x24,0x04,0x24,0xe6,0x96,0x05,0xc8,0xc4,0x71,0xd2,0x27,0xf9,0x44, - 0x0a,0x02,0x57,0x7d,0x3a,0x00,0xd9,0xa6,0x17,0x76,0x79,0x22,0xc8,0xff,0x02,0xa0, - 0x0c,0x26,0xc8,0x3f,0x14,0xf9,0x87,0xfb,0x75,0x9b,0x7f,0x9c,0xe7,0x3d,0xc8,0x84, - 0x75,0x00,0x9f,0xe7,0xcf,0x31,0x9b,0x77,0x12,0x04,0xdb,0x78,0x74,0xe8,0xa3,0x26, - 0x11,0x69,0xd0,0x07,0x4b,0xe1,0x37,0xdd,0xef,0x57,0xcc,0xed,0x90,0x34,0x28,0x6a, - 0x98,0x04,0x09,0x21,0xc3,0xa6,0x0d,0x9a,0xf0,0xaa,0x52,0x4a,0xe8,0x19,0x8d,0xa8, - 0xd0,0x59,0x3e,0xe3,0x13,0x83,0x01,0xf3,0x33,0x14,0x77,0xcd,0x3c,0xc4,0x52,0x69, - 0xb8,0x0a,0xeb,0x50,0x77,0x62,0xca,0x55,0x68,0x04,0xbf,0x20,0x22,0x77,0x7e,0x1f, - 0x69,0x66,0xdd,0xe9,0xc5,0x27,0x4e,0x7c,0x8b,0x34,0xb7,0x75,0xb3,0xc5,0x11,0x2a, - 0xc0,0x23,0x69,0x04,0xe7,0x49,0xac,0xad,0x3b,0xbd,0x43,0x89,0xb8,0xf3,0xaf,0xf2, - 0xee,0x1b,0x7f,0x2c,0xb1,0x6b,0xd8,0x3b,0xea,0xfd,0xbc,0xf1,0xd8,0xc0,0xae,0x63, - 0xd1,0xbf,0xc2,0x94,0xed,0x9a,0x00,0xc4,0xbc,0x75,0x2c,0x5a,0x5e,0xff,0x7a,0x90, - 0xb9,0x8f,0x15,0xc5,0x60,0x1a,0x4e,0x98,0xd5,0xc0,0xfa,0x9c,0xa0,0x76,0x7d,0xca, - 0xf2,0xf7,0xeb,0x61,0x95,0x26,0x09,0x0c,0x53,0x94,0xcc,0x46,0xa7,0x16,0x46,0x10, - 0x56,0x73,0xa9,0x58,0x98,0xb7,0x0b,0xd0,0x89,0xc0,0x9d,0xbf,0x23,0x1d,0xee,0xa1, - 0x3b,0x09,0xc5,0x8e,0xa4,0x20,0xf0,0x6e,0x63,0x1d,0x69,0xe8,0xf1,0x6e,0x83,0x68, - 0xfb,0x8f,0x45,0x4a,0x94,0xb8,0xfb,0x03,0xc8,0x31,0x61,0x60,0x14,0x2d,0x27,0x9b, - 0x7b,0x2e,0x22,0xc2,0x87,0x92,0x8c,0x5b,0x20,0xb6,0x5d,0x4d,0x1f,0x8a,0x68,0x07, - 0xdd,0xc5,0x07,0xbc,0x52,0x86,0x8d,0xb2,0x38,0x0d,0x10,0x89,0xb3,0x82,0x62,0x82, - 0x9c,0x05,0xc0,0x4e,0x71,0xe7,0x0f,0xf9,0x3c,0x84,0x1b,0x7b,0x90,0xe9,0xd1,0x2c, - 0x5e,0x45,0xb3,0x58,0xdd,0xed,0x11,0x60,0x3d,0x02,0xdf,0x62,0x0b,0xb8,0xeb,0xe3, - 0xf7,0xee,0x6f,0xab,0xcb,0xef,0xd6,0xc2,0x17,0x7d,0x68,0xfd,0x87,0x37,0x21,0xf0, - 0xee,0x87,0x6b,0x42,0x06,0x5c,0x5c,0xb1,0x9f,0x5c,0xe3,0x4f,0xd6,0x47,0xdd,0xed, - 0xff,0x1b,0x5b,0x92,0xdf,0xcb,0xbf,0x7a,0x7a,0xb5,0x3f,0x28,0xc0,0x37,0x4e,0xaf, - 0xde,0x1c,0xdc,0xbe,0xe5,0xca,0xf1,0x57,0x1b,0xff,0xce,0x1f,0x4c,0x6e,0xb9,0x2a, - 0xc0,0x3d,0xee,0xfa,0x3c,0x74,0xe0,0x91,0x3b,0xef,0x9c,0xfd,0xe0,0xbd,0x5b,0x26, - 0x78,0xed,0x83,0x1b,0xb7,0x1e,0xfa,0xe4,0xd1,0xeb,0xcf,0xdd,0x99,0xbe,0x7d,0xeb, - 0xa1,0xa7,0x1f,0xbd,0x23,0xc0,0x6d,0xf8,0x15,0xae,0x8d,0xcf,0xfb,0x57,0x26,0x37, - 0xe7,0x8f,0xf7,0xb7,0xde,0xaa,0xf9,0x6a,0xea,0x4e,0xfe,0xa3,0x3f,0xda,0xf8,0x17, - 0x9b,0x0f,0x7c,0x77,0x73,0xfe,0xe4,0xed,0xd6,0x3b,0x9b,0x57,0x7d,0x77,0xf3,0x07, - 0x27,0xa7,0xdd,0xf9,0x5b,0x9f,0x7e,0xe4,0xfa,0x73,0xaf,0x4d,0xbf,0x77,0xab,0xd5, - 0xae,0xc6,0xed,0x56,0xb3,0x62,0xd3,0x37,0x30,0xff,0x23,0xd7,0xcd,0x1a,0xba,0xf3, - 0x37,0x2c,0xef,0xba,0x7e,0xfc,0x81,0xe9,0x63,0x7b,0x1e,0x12,0x3f,0xfc,0x3a,0xfe, - 0x10,0xc1,0x0f,0x17,0xbf,0x96,0x7b,0xef,0x56,0x83,0x6a,0x82,0x9f,0x7d,0xb1,0xac, - 0x42,0xf5,0x42,0x16,0xae,0x52,0x8f,0x18,0x02,0xc0,0x2a,0xea,0x1f,0x07,0x33,0x05, - 0x81,0x34,0x60,0x08,0x40,0xdc,0xed,0x49,0x6d,0x59,0x08,0xe7,0x6d,0x10,0x15,0xa0, - 0xa7,0x08,0x2c,0x7d,0xe8,0xca,0x6f,0xeb,0x43,0x15,0xb2,0x15,0x84,0x62,0xcc,0x02, - 0xbc,0xac,0x42,0x96,0x48,0xcb,0xf0,0x92,0x5a,0xa3,0xa6,0x7e,0x53,0xc9,0x21,0x91, - 0xc2,0x7c,0x50,0xd6,0x9f,0xe5,0xf6,0xfd,0x24,0x94,0x4d,0x79,0xf8,0xe5,0xfe,0xb5, - 0xa4,0x2e,0x27,0xfa,0x03,0xdd,0x9f,0xa9,0xe3,0x08,0xde,0xa4,0xfb,0x89,0x09,0xca, - 0xea,0x0f,0xba,0xad,0x0f,0x51,0x75,0xa9,0x8a,0x28,0xbf,0xa8,0x0f,0xcd,0xbf,0xa8, - 0x99,0xc0,0xb9,0x42,0xb4,0x5e,0xe8,0xc3,0x76,0x38,0x86,0x42,0x51,0xe6,0xa8,0x06, - 0xf3,0x74,0x95,0x00,0x03,0xca,0x08,0x5d,0x49,0xfc,0x5c,0x78,0xf0,0x5c,0xf9,0x3f, - 0x43,0xb7,0x64,0x96,0x14,0x3a,0x46,0xc2,0xf7,0xd2,0xc7,0x32,0xb5,0x85,0xf6,0x17, - 0xc3,0xf5,0xb0,0xc5,0x02,0x6b,0xa8,0x09,0x46,0x5c,0x53,0x1f,0xd9,0xa8,0x86,0xc5, - 0xa8,0x06,0xbd,0x27,0x4c,0xa5,0x13,0xb9,0x02,0x96,0xb5,0xc1,0x14,0x17,0x60,0xce, - 0x0f,0x70,0xaa,0xaa,0xa0,0xb5,0xa7,0x03,0xc8,0x57,0xa6,0xe7,0x0b,0x88,0x6a,0x79, - 0x17,0xe4,0xa2,0x9b,0x61,0x1f,0x29,0xb9,0xcf,0xb1,0x7c,0x31,0x5d,0x45,0x2a,0xa1, - 0x62,0x82,0x2f,0x7c,0xad,0x82,0x53,0xa8,0x8c,0x29,0x6c,0x58,0xa9,0xa7,0x72,0xc6, - 0x9c,0xa9,0xba,0xf3,0x53,0xdd,0x22,0x49,0xc1,0xf8,0x2a,0x32,0x7e,0x98,0xfb,0xac, - 0x94,0x30,0xb7,0x6f,0x2d,0xe3,0xa5,0xfc,0x0a,0x61,0x92,0x0e,0x23,0xb0,0x52,0x43, - 0xc5,0x6c,0x02,0xf0,0x0f,0x43,0xbf,0x00,0xe2,0x1b,0x54,0x3f,0x3c,0x8f,0xb7,0xd0, - 0x02,0x16,0x2f,0x56,0xd4,0x87,0x5d,0x68,0xef,0x6c,0x35,0x88,0xfa,0xf0,0x88,0x00, - 0xf9,0x73,0x8d,0x56,0x4a,0xde,0xb1,0xa7,0xe2,0xc9,0x67,0xe9,0x43,0x36,0x0b,0x38, - 0xe5,0x23,0x3d,0x26,0x2c,0x91,0x96,0x2d,0x82,0x7f,0xa1,0x36,0x38,0x67,0xa5,0x84, - 0x5c,0xfc,0xcf,0x3a,0x98,0xa5,0xdf,0x44,0x37,0x43,0x00,0xa8,0xdf,0x86,0xc4,0x63, - 0x6a,0xd6,0xf3,0x8a,0x5b,0x34,0xcc,0x9d,0xfa,0x90,0x4a,0xfa,0x30,0x31,0x23,0xc5, - 0x29,0x3f,0x4d,0x92,0x56,0x21,0x78,0xd7,0x06,0x61,0xf1,0xe0,0x36,0xb0,0x52,0x66, - 0xd4,0x27,0x4d,0x22,0x68,0x26,0x95,0x22,0x08,0xe3,0x4b,0xb5,0x81,0x9d,0x02,0xc9, - 0x52,0x7d,0xba,0xb0,0xdf,0xb6,0xf1,0x88,0xee,0x15,0xa3,0x63,0x90,0x2b,0x3a,0x55, - 0x89,0x48,0x29,0x07,0x4e,0xf7,0xe9,0x02,0xd1,0xf3,0xcd,0x4a,0x8a,0xee,0x50,0x9a, - 0x2b,0x95,0x03,0x70,0xd5,0x67,0x17,0xaa,0x41,0xd4,0x87,0x68,0xa9,0x51,0x28,0xfe, - 0x9b,0x29,0x0b,0x3d,0xb6,0x2c,0x2c,0x01,0xe6,0xd8,0x77,0xd2,0x49,0x07,0x33,0x75, - 0xfa,0x26,0x25,0x7c,0xc1,0x02,0x6a,0xf8,0x82,0xef,0x0b,0x04,0x41,0x3a,0x7c,0x95, - 0x0e,0x92,0x3a,0xb6,0xa9,0x77,0x99,0xeb,0x79,0x49,0x67,0x74,0x90,0x9f,0xd2,0xab, - 0x50,0x0d,0xa2,0x1e,0xab,0xdb,0xb3,0x4a,0xf5,0x5f,0x40,0xc5,0x38,0xa9,0x0b,0x20, - 0x0d,0x66,0x4e,0x21,0x70,0x8d,0xdf,0x74,0x47,0xa7,0xa7,0xd9,0x94,0x9d,0x70,0x81, - 0x58,0xea,0x31,0x7a,0x81,0x7e,0x01,0x85,0xe2,0xee,0xde,0xe8,0xf7,0x2c,0x69,0xda, - 0xab,0x9c,0x73,0xf5,0x9f,0x5a,0xa2,0x0b,0x92,0xe9,0xf2,0x1e,0x47,0xda,0xd9,0x2c, - 0xd8,0x46,0xcc,0x20,0x98,0x9b,0x88,0xbc,0xee,0xfe,0xb3,0x12,0xf6,0x70,0x55,0xf7, - 0x8d,0x28,0x5f,0x45,0x70,0x97,0x2e,0x68,0x87,0x9a,0x29,0xa2,0x85,0x6d,0xc0,0x9d, - 0x06,0xea,0xd0,0xe1,0x29,0xb2,0x08,0x52,0x59,0x98,0xca,0x6d,0x20,0xcb,0x21,0xc5, - 0xc3,0x53,0xf4,0x29,0x04,0x9b,0x4c,0x00,0x26,0x70,0xf5,0x67,0xb2,0x1d,0x4c,0x7d, - 0x88,0xf3,0x05,0xae,0xf1,0x65,0x09,0x09,0x65,0x21,0xef,0x17,0xb2,0xb0,0x8b,0x1c, - 0xb7,0x84,0x62,0x97,0xab,0x7c,0x86,0x03,0x50,0x1b,0x35,0xfb,0xcf,0x97,0x72,0xa8, - 0x06,0x0b,0xd8,0x5b,0xb2,0x39,0x47,0x28,0x72,0x4b,0x1f,0xba,0xde,0x17,0x2a,0x81, - 0xb6,0x08,0xea,0x43,0x02,0x34,0x9d,0x51,0x12,0x1d,0x32,0x6a,0x29,0x76,0x50,0xd1, - 0xda,0x11,0x34,0xb2,0x8c,0x05,0x9c,0xfa,0x30,0x1c,0x2f,0x17,0x23,0x09,0xaf,0x0c, - 0x01,0x11,0xbd,0xbc,0x80,0x92,0x29,0xa5,0xa5,0x0d,0x4c,0x41,0x00,0x36,0x60,0xae, - 0xfa,0xc8,0x54,0x41,0x7d,0xd8,0x2e,0xc8,0xa6,0x1e,0xa7,0xa2,0x04,0xa7,0xc8,0x69, - 0x5b,0x1f,0xca,0xac,0x28,0x14,0x89,0xab,0x3e,0x5a,0x2d,0xea,0x43,0x5d,0x1e,0x91, - 0x56,0xe2,0x10,0xae,0x8f,0x99,0xfa,0x70,0x18,0x65,0xa1,0x7f,0x58,0xaa,0x87,0xbc, - 0xd0,0x87,0xc3,0xae,0xfa,0x10,0x96,0x33,0x49,0x86,0x84,0xf9,0x21,0x8d,0x8c,0x80, - 0x18,0x98,0x3e,0x5d,0x29,0xf2,0x8f,0xa2,0xfa,0x04,0xff,0xb8,0xfa,0x0f,0xe3,0xfd, - 0xb0,0x0c,0x56,0xb6,0x91,0x7c,0x56,0x87,0xe7,0x3d,0xc8,0x3f,0x79,0x18,0x88,0x9b, - 0x44,0x94,0x5f,0xab,0x0b,0x8e,0x06,0x97,0xfd,0x62,0x1d,0x3a,0xdb,0x00,0xe2,0x7d, - 0x19,0x05,0x7c,0x5f,0x8b,0xc0,0xc3,0x95,0x29,0xba,0xcf,0x8f,0x29,0x99,0xfc,0x94, - 0xb6,0xc1,0xbf,0x48,0x4a,0x65,0xb7,0x39,0xe3,0x3d,0x8d,0x8f,0xf2,0x5b,0xe9,0x45, - 0x69,0xcf,0x57,0xe0,0x05,0x9e,0xf8,0xbf,0x76,0xce,0xdf,0x25,0x81,0x30,0x8c,0xe3, - 0xef,0x75,0xa7,0x18,0x28,0x78,0x60,0x60,0x04,0x91,0x85,0xd0,0x78,0x82,0x4e,0x0d, - 0xbe,0xe6,0x8f,0x2c,0xb0,0x24,0x9d,0x9a,0x5a,0x13,0x02,0xc7,0xa6,0xb0,0xe8,0x0f, - 0xb0,0x6c,0xa8,0xcd,0xc1,0xb5,0xb1,0xdd,0x8a,0xa0,0x36,0x87,0x68,0x0d,0xa1,0xa5, - 0x3d,0x88,0x06,0xb3,0xe7,0x3d,0x5f,0xf5,0xd5,0x40,0xd0,0xa1,0x20,0xbe,0x9f,0xc5, - 0x2f,0xc7,0xeb,0xf9,0xaa,0xf7,0x3e,0xf7,0x79,0xee,0x50,0xee,0xf6,0xea,0x06,0xbb, - 0xa3,0xda,0x29,0x83,0xdc,0xa2,0x7e,0x5f,0x06,0x8b,0xd4,0x3d,0x45,0x3d,0x5b,0x3e, - 0x67,0x21,0xee,0xe1,0x3a,0x2d,0x58,0x23,0x94,0x76,0x67,0x29,0xdc,0x2f,0x84,0xb8, - 0x08,0xde,0x5b,0x65,0x3e,0x71,0x63,0x37,0xe6,0xb7,0x52,0x2e,0x8d,0xca,0xce,0x8d, - 0xdf,0xda,0x76,0x9b,0x15,0x3b,0xa4,0x94,0xa0,0xd6,0x1f,0x2e,0xfc,0xb0,0x6e,0xdf, - 0x9c,0x91,0x17,0x0b,0x7f,0x06,0xf5,0xf3,0x49,0x27,0x84,0x1f,0xa6,0x68,0x69,0x0b, - 0x1b,0x34,0x56,0x03,0xe6,0x85,0x21,0xb5,0xb0,0x17,0x4a,0xbd,0xfb,0x9b,0x54,0x7f, - 0x12,0x79,0x73,0xc6,0x99,0xcc,0xb1,0x7c,0x22,0x6b,0xfa,0x1c,0x49,0xcd,0xe4,0x9c, - 0xca,0x8e,0x21,0xea,0x8f,0x8f,0xb6,0x50,0xd0,0xb8,0xb2,0xbe,0x5c,0xdd,0xce,0x58, - 0x14,0x15,0xef,0xb1,0xc3,0x3e,0x36,0x99,0x38,0x36,0xb5,0x6e,0xe3,0x70,0xa4,0x5e, - 0xc1,0x15,0x7e,0xc8,0xaa,0x6c,0x99,0x75,0xfc,0x90,0x0d,0x8a,0xe2,0xb0,0x1f,0xf2, - 0x64,0x46,0xcb,0xc5,0x4e,0x1a,0x81,0xb0,0x3f,0x33,0x95,0xe3,0x4f,0x0d,0x2d,0xec, - 0xc9,0xe8,0x22,0x44,0x28,0x68,0x32,0x28,0xf3,0xa1,0xf7,0x2b,0xfc,0x70,0x6d,0x71, - 0xf6,0x31,0x28,0xcf,0xfe,0x0f,0xce,0xa2,0x0c,0xd2,0x07,0x94,0xfa,0x43,0xe7,0xeb, - 0x42,0xea,0xf9,0xf4,0xba,0xb6,0x7f,0x39,0x57,0xd8,0x10,0x7e,0x78,0xb5,0xd7,0xf1, - 0xc3,0x5a,0xdf,0x0f,0xa7,0x95,0xe1,0x2c,0xda,0xf7,0xc3,0x2d,0xe1,0x87,0xed,0x56, - 0xc7,0x0f,0xdf,0xfb,0x7e,0x38,0xe0,0x63,0xe3,0x12,0x14,0x5a,0xf8,0x56,0x6e,0xb7, - 0xa2,0x9f,0x52,0x14,0xc9,0x18,0x47,0xf8,0xa1,0xfd,0xea,0x1f,0xaf,0x34,0xfe,0xab, - 0x2b,0x8a,0x87,0xa3,0xfc,0x70,0xa5,0xeb,0x87,0x4b,0xf3,0x9b,0x2f,0x67,0x21,0x31, - 0xfe,0x60,0x68,0x7c,0x73,0xf2,0xd9,0x5b,0xd4,0x62,0xd1,0xfa,0xa6,0xc7,0xb8,0x7b, - 0xf2,0xbd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x3b,0x76,0xef,0x60,0xa0,0x77, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0xc6,0xee,0x1d,0x9c,0xe8,0x1d,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0xa3,0xb1,0x7b,0x07,0x97,0xdd,0x3b,0xfc,0xf5,0x54,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0xbf,0x88,0xf8,0x23,0x24,0xc6,0xd6,0x2b,0x16,0x2b, - 0x89,0xdf,0x30,0xe9,0x16,0xe3,0x63,0xdf,0x4f,0x90,0xcf,0x75,0x58,0xac,0xaa,0xf5, - 0xf7,0xd9,0xdc,0x19,0x1e,0xf7,0x0d,0xe8,0x9e,0x83,0xa0,0xf1,0x33,0x01,0x00, + 0x1f,0x8b,0x08,0x08,0xe2,0x44,0xc5,0x42,0x00,0x03,0x77,0x75,0x68,0x34,0x30,0x35, + 0x5f,0x31,0x2e,0x62,0x69,0x74,0x00,0xec,0xbd,0x0d,0x74,0x14,0xd7,0x95,0x2e,0xba, + 0xeb,0x54,0x49,0x94,0xba,0x5b,0xea,0x42,0x48,0x1e,0xd9,0x60,0x5c,0x6a,0x09,0xd2, + 0x28,0x8d,0x68,0x24,0x47,0x60,0x21,0x4b,0x45,0x8b,0x78,0x14,0x20,0x41,0xe3,0x78, + 0x12,0xee,0x7d,0x5e,0x99,0xb6,0x43,0x66,0x78,0x33,0xc4,0x97,0xc4,0xb9,0x77,0x88, + 0x27,0xd7,0x3e,0x6a,0x09,0x23,0x2c,0x6c,0xda,0x36,0x89,0x71,0xe2,0xc9,0x34,0x98, + 0x24,0xd8,0x61,0x32,0x0d,0xc2,0x46,0x80,0x63,0x97,0xb0,0xe2,0x34,0x58,0xc6,0x8a, + 0xe3,0xc9,0x60,0xcc,0xe0,0x26,0x51,0x6c,0xd9,0x96,0xb1,0x8c,0x19,0x5b,0x20,0x40, + 0xef,0xec,0x53,0x5d,0xd5,0x55,0xfd,0x23,0x27,0x77,0xd6,0xbc,0x35,0x6f,0xbd,0x61, + 0xd6,0xba,0x77,0xa7,0xba,0x52,0xa9,0x73,0x74,0x6a,0xef,0xef,0x7c,0xfb,0xdb,0xfb, + 0x40,0x91,0x77,0xcc,0xf8,0x3f,0x00,0xe1,0x36,0x28,0xfe,0xdb,0xff,0xb9,0xf6,0xfa, + 0xe0,0x67,0xfe,0x62,0x61,0xed,0x1d,0x5f,0x5d,0x03,0xb7,0x83,0xbb,0xee,0xce,0xcf, + 0x04,0xbf,0xf6,0xad,0x6f,0x2c,0xbc,0xfe,0x7a,0xf8,0x2a,0xfb,0x4f,0xc1,0xe0,0x67, + 0x16,0x04,0x17,0x2d,0x08,0x2e,0x84,0x35,0x50,0xb4,0xf0,0x33,0x8d,0x75,0x8b,0x1b, + 0x83,0xf5,0xf0,0x35,0x10,0xea,0x77,0x4d,0xb2,0x7f,0x4f,0x3e,0xfa,0xe7,0x7f,0x19, + 0x04,0x2a,0x00,0xc0,0xb4,0xa0,0x10,0xc6,0xff,0xdf,0x1d,0x14,0x54,0x01,0x68,0xcb, + 0xfc,0x20,0xe8,0xf8,0x9f,0x21,0xf5,0x7b,0x51,0x10,0x54,0xfb,0x7f,0x16,0x82,0xa0, + 0x41,0x3b,0x68,0x5b,0x84,0x52,0xf8,0x43,0xfe,0x75,0xd1,0x94,0x21,0xfd,0x61,0xf7, + 0x4b,0xe6,0xfd,0x93,0xc7,0x68,0xde,0x9b,0xd2,0xff,0x5a,0xce,0xc5,0x52,0x56,0x01, + 0x09,0x7e,0xf2,0xed,0x82,0x46,0xcd,0xa7,0x5e,0x3c,0xf9,0x07,0x3d,0xff,0x7f,0x99, + 0xcf,0xbf,0xf2,0x47,0xde,0x0f,0xca,0x1f,0x70,0x3b,0x1b,0xaf,0x69,0x5c,0x54,0x40, + 0x06,0x02,0x40,0xc1,0x0f,0x2e,0x20,0x14,0x62,0xb9,0x8c,0x96,0x65,0xe6,0xfd,0xfa, + 0xc6,0x2b,0x30,0xd1,0xd9,0x92,0x74,0x8f,0x88,0xdf,0xaa,0x98,0xa4,0x0d,0x27,0x8a, + 0xc7,0xc4,0x3a,0x66,0xb4,0x0c,0x7b,0xc7,0xc5,0x31,0x78,0x83,0xd6,0x27,0xd1,0x10, + 0xc2,0xe6,0xfd,0x15,0x3f,0x86,0xc3,0xb4,0x36,0xe9,0xde,0x4d,0xe6,0x42,0x4f,0x75, + 0x65,0x7f,0xcf,0x37,0x9e,0xf7,0xe1,0x95,0x84,0xb7,0x8f,0xbc,0x09,0x3d,0xd4,0x97, + 0x74,0xf7,0x91,0xa4,0x64,0xce,0x62,0x42,0xea,0x92,0x7b,0x21,0xa0,0xbb,0x63,0x85, + 0xc3,0xd0,0x2b,0x07,0x06,0xdd,0x41,0x02,0x78,0x25,0xc1,0x8c,0x63,0xd2,0xc3,0x92, + 0xaa,0x33,0xe3,0x88,0xa0,0x9a,0xcf,0x2f,0x18,0x86,0xc3,0x50,0xdb,0xcf,0x9e,0x1f, + 0x9b,0xde,0x09,0x35,0xfd,0x2b,0xe2,0x35,0x7e,0x38,0x4c,0x6a,0x75,0x77,0x1c,0x9f, + 0x0f,0x3e,0x34,0xc6,0xa4,0xf5,0xa9,0xfb,0x97,0x96,0x8f,0xc2,0x04,0x34,0xeb,0xde, + 0x1a,0xf1,0x26,0x8a,0x46,0x71,0x7c,0x86,0x9f,0x5d,0x99,0xad,0x5f,0x17,0x17,0xcf, + 0xc2,0xeb,0x50,0xa7,0x7b,0xe3,0xe2,0xd0,0x32,0xf3,0xfe,0xb8,0xb0,0x1f,0x26,0xa1, + 0x45,0xf7,0x26,0x3b,0xbe,0xc6,0x8c,0x45,0xfa,0xaa,0x31,0x71,0xbf,0x3a,0x49,0x5a, + 0xf4,0x92,0xb1,0x69,0x83,0xec,0xca,0x73,0xba,0x77,0x4c,0x1c,0x01,0x73,0xbc,0x43, + 0xca,0x2e,0xe3,0xf9,0x31,0x71,0x97,0x3e,0x01,0x8d,0x7a,0x71,0x50,0x9c,0x27,0x4d, + 0x48,0xcd,0xfd,0x5e,0x7c,0xfe,0xbb,0xa4,0x19,0x9f,0x3f,0x26,0x99,0xef,0x9f,0x28, + 0xa8,0xc6,0xf7,0xd7,0xdd,0xbb,0xe9,0xa7,0xd8,0xdb,0x56,0xe9,0xf2,0x18,0x99,0x4f, + 0x71,0x44,0x33,0xe3,0x64,0x14,0x3a,0x81,0x0f,0xe4,0x1c,0x5b,0xfd,0xa9,0xf1,0x4a, + 0x2b,0x81,0xcf,0x8f,0x9f,0xfc,0x52,0x7a,0x5c,0xf0,0xb3,0xd9,0x28,0xfc,0x53,0xe3, + 0x4a,0x90,0xe8,0xf0,0xb8,0x61,0x8c,0xb3,0x6f,0xc5,0xf8,0x37,0xa6,0x7c,0x49,0x3b, + 0x10,0x9b,0x9f,0x74,0x7f,0xdb,0x75,0x15,0x6c,0xa2,0x95,0x23,0xae,0x6f,0xcf,0x7e, + 0x05,0x0e,0xc4,0xbe,0x3e,0xe2,0xde,0x40,0xde,0x60,0x57,0xd8,0x4f,0x1b,0xc8,0x09, + 0xeb,0xf9,0x6d,0xf2,0x32,0xf8,0x30,0xde,0xa4,0x7b,0x55,0xb1,0x8b,0x0d,0x64,0x71, + 0xd2,0x1b,0x14,0xff,0xf4,0xc4,0x87,0xd1,0xa6,0x11,0x77,0x50,0x1c,0x84,0xdf,0x01, + 0xfb,0x29,0x28,0xbe,0x42,0xcc,0xf5,0xa0,0x15,0xec,0x57,0x26,0xcb,0xd8,0xfc,0x28, + 0xe2,0x7e,0x78,0x1f,0x1a,0x87,0x8a,0xe3,0xa2,0xdf,0x98,0xb1,0xb1,0xaa,0xd4,0x54, + 0x8f,0x89,0x43,0xc4,0x9c,0x1f,0x59,0xda,0x03,0x2f,0xe2,0x45,0x75,0xda,0xb7,0x60, + 0x82,0x36,0xbe,0xea,0x79,0xfa,0xc5,0xf9,0x2a,0xbb,0x2d,0xe9,0x89,0xb3,0x69,0xe4, + 0xf7,0xc7,0xc5,0x63,0x60,0xcd,0x4f,0xc5,0x36,0xf8,0x17,0x98,0xaf,0xbb,0xc3,0x64, + 0x16,0x3c,0x07,0x6a,0xa2,0xf8,0x9b,0xe2,0x2d,0xf4,0x80,0x34,0x5f,0x97,0xd7,0x93, + 0x53,0x70,0x00,0x7f,0x5a,0x4f,0xce,0x59,0xf3,0xa9,0xc2,0xd3,0x7c,0x50,0x3d,0x23, + 0x91,0xef,0x49,0x07,0x22,0xf3,0x46,0xe4,0x1b,0xc8,0x57,0xb4,0x03,0xec,0x4a,0xd1, + 0x06,0x72,0x1a,0x0e,0x18,0xe3,0xd5,0xad,0xe7,0x8f,0x48,0x5d,0xf0,0x30,0x9f,0xcf, + 0x23,0xf7,0xb2,0x69,0x54,0xf5,0xa2,0x60,0xe8,0x0b,0x6a,0xaf,0x18,0xd0,0xe5,0x20, + 0x39,0x4e,0x53,0x13,0xfb,0x8a,0xf5,0xfc,0x64,0xf9,0x08,0x1c,0x83,0x66,0xea,0x1d, + 0x15,0x0f,0xeb,0x17,0xa1,0x91,0x7a,0x62,0x55,0x7f,0x43,0x2f,0xb2,0x2b,0x81,0x98, + 0x38,0xce,0x0d,0xf6,0xa7,0x1f,0x97,0xcc,0xf1,0xb6,0x09,0x31,0x18,0x87,0x66,0xf0, + 0x52,0xb7,0xca,0x8d,0x05,0xb4,0x2a,0x09,0xe3,0x04,0xaf,0x88,0x67,0x52,0x3f,0x89, + 0xaf,0x80,0xb9,0xfe,0x65,0xb6,0x7e,0x8e,0x42,0xb3,0xe6,0xfd,0xbe,0xb8,0x0b,0x5e, + 0x83,0x26,0xcd,0x13,0x15,0xab,0xe1,0xa0,0xc0,0xae,0x44,0xc5,0xbf,0xa4,0x17,0x80, + 0x1b,0x47,0xac,0xef,0x85,0x4a,0xcb,0xc8,0x66,0xa8,0xd5,0xdc,0x65,0x44,0x62,0xf7, + 0xd7,0x6a,0xc5,0x51,0x12,0xf0,0x1c,0xc4,0x2b,0xd1,0xd2,0xdf,0x53,0xc3,0x20,0x49, + 0xcb,0x2d,0x2c,0x16,0xaa,0xa5,0xcd,0x42,0xad,0xb6,0x22,0x5a,0xba,0x4b,0x79,0x94, + 0xfd,0xea,0x57,0x08,0x7b,0xbe,0x71,0xdb,0xb0,0x69,0xbc,0x60,0xad,0x07,0x7f,0x59, + 0x35,0x74,0xc0,0x3a,0x76,0xf1,0xa6,0xea,0xd8,0x83,0x10,0x58,0x5e,0x54,0x7a,0x4c, + 0x82,0xbd,0x10,0xd0,0xdc,0x0a,0x19,0x88,0xa5,0x8c,0x23,0x82,0xb9,0x1e,0x36,0x14, + 0x87,0xa1,0x1b,0x07,0x15,0x13,0x63,0xf4,0x04,0x34,0xcb,0x9e,0xc8,0x0c,0x1c,0x78, + 0x13,0x0e,0x33,0x4c,0x53,0xe3,0x3d,0x2d,0x9a,0xeb,0x73,0x7b,0xc1,0xab,0xc0,0x07, + 0x35,0x24,0x9e,0x87,0x0b,0xfe,0xe6,0xe5,0x25,0x0f,0x75,0x0e,0xe3,0x95,0xe5,0x6c, + 0x98,0xe7,0x21,0x35,0xde,0x37,0x89,0xf9,0x3d,0x56,0x94,0x0f,0x1b,0x17,0xdb,0xc5, + 0x6a,0x7a,0x14,0xee,0x0a,0x05,0xb6,0x89,0xec,0x8a,0xd4,0x8c,0x13,0x75,0x5e,0xbd, + 0x6c,0xdc,0xff,0x02,0x98,0xf7,0x2f,0x56,0x92,0xd0,0x07,0xb5,0xcc,0xd1,0xb8,0x6f, + 0x63,0x2f,0xe6,0x03,0x79,0x13,0xe1,0x57,0x64,0x17,0x35,0x0c,0x70,0x53,0x72,0xdc, + 0x9a,0xff,0x36,0xe8,0x82,0xbd,0x42,0x40,0x9b,0xa9,0x7c,0x69,0x0e,0xec,0x90,0xfd, + 0x21,0xb9,0x94,0x0c,0xe0,0x78,0x43,0xb2,0x82,0x86,0x10,0x58,0xca,0xc6,0xfb,0x8a, + 0x60,0x3e,0x7f,0x7b,0xd9,0x2e,0x36,0x69,0x25,0x6c,0x7e,0x0a,0xbf,0x46,0x3a,0x40, + 0xd5,0xe4,0x68,0x68,0x98,0x4d,0x7b,0x40,0x73,0x45,0x99,0xff,0x31,0xe6,0x33,0xf4, + 0xa6,0xb5,0x1e,0x62,0x05,0x7f,0x69,0xbc,0xbf,0x22,0x4e,0xd3,0xde,0x96,0x6a,0xf0, + 0xb5,0xd9,0xfb,0x0b,0xcd,0x4b,0x67,0xb1,0x61,0xaa,0x38,0x10,0xf6,0xfe,0x23,0x96, + 0xbf,0x4a,0x4c,0xdf,0x65,0xfc,0xd1,0x1f,0xab,0x3a,0x2b,0xa7,0x66,0x63,0x18,0x32, + 0x8d,0x8b,0x96,0xff,0x91,0x15,0x73,0xbd,0x89,0x61,0x7d,0x04,0x6a,0x05,0x0f,0x15, + 0x55,0x3e,0xed,0x1e,0x63,0xbd,0x35,0xe2,0x4f,0xc7,0xac,0xf5,0xec,0x2f,0xf0,0xc3, + 0x21,0x61,0x2e,0x75,0x0f,0xbb,0xe6,0x49,0x87,0xa0,0x96,0xca,0xb1,0xba,0x79,0xd4, + 0x30,0x98,0x1b,0x39,0x04,0x3e,0xea,0x8e,0x91,0x63,0xe9,0xf5,0x60,0xfa,0x9f,0xea, + 0xc8,0x4a,0x19,0xbd,0x4d,0x5b,0x90,0x94,0xf0,0x2b,0xf8,0xbd,0x30,0x03,0x3d,0x12, + 0xbb,0xdf,0x5c,0x6f,0x54,0xb9,0x95,0x7d,0xa4,0x73,0xd8,0xf7,0xeb,0xba,0x05,0x0e, + 0xa8,0x81,0x81,0x8a,0x6f,0xbb,0xca,0xf0,0xb3,0x4d,0xb0,0xef,0xf7,0x5f,0xe1,0x39, + 0x5a,0x89,0xdf,0xef,0x88,0x75,0x7f,0x77,0xf7,0x57,0x94,0x8f,0xe9,0x8d,0x49,0xef, + 0x06,0xf1,0x2b,0xf0,0x57,0x4f,0xdc,0xf8,0xbb,0x59,0x17,0xc5,0xd9,0xf0,0x71,0x47, + 0xcb,0xc5,0xc0,0x06,0xf1,0x34,0x4c,0xd2,0x1b,0xf0,0xa7,0x77,0xe6,0x9a,0xf7,0xcb, + 0x05,0x7b,0xb8,0xf7,0x66,0x83,0xda,0x15,0x9b,0x50,0x9b,0x13,0xde,0xfd,0xc2,0x30, + 0xba,0x91,0xa3,0xcc,0x8d,0x24,0x4d,0x7f,0x72,0xe4,0x5e,0x73,0x7e,0x40,0x7a,0x96, + 0xb9,0x1d,0x16,0xbf,0xd6,0x8a,0x77,0x2c,0x7b,0xa3,0x7b,0xd1,0xb0,0xe7,0xb2,0xd8, + 0x22,0xbc,0x1b,0xad,0x39,0xe3,0x19,0x17,0x9f,0xd6,0x58,0x20,0xc3,0xf8,0xa5,0xc7, + 0xcc,0xf9,0xdf,0x5d,0xf1,0x18,0x7a,0x0f,0xdd,0xbd,0x8e,0x94,0xc2,0x5b,0xb0,0xe0, + 0x8c,0xff,0x2e,0x42,0x76,0xfd,0x3a,0x56,0x9b,0x2c,0x5e,0x4f,0x4e,0x2b,0xdc,0x9f, + 0xac,0x27,0xef,0x58,0x7f,0x5f,0xa0,0x8f,0xb1,0xd1,0x7d,0x5d,0x77,0xaf,0x89,0xdc, + 0x1a,0xdb,0x04,0xf3,0x07,0x8a,0xea,0x6e,0x6e,0xea,0x3e,0xe0,0xe3,0xfe,0xea,0x9f, + 0x29,0xfe,0x34,0x73,0xbd,0xcd,0xff,0xa8,0xd2,0x03,0xc6,0x7c,0x02,0x21,0xf2,0xe3, + 0x85,0x01,0xbd,0x28,0x7e,0x4d,0x2b,0xf7,0x48,0x45,0x41,0x9f,0x6e,0x3a,0xf6,0x84, + 0xf5,0xbd,0xef,0x2e,0x3f,0xab,0xf2,0x41,0x05,0xc4,0xe5,0xf0,0x32,0x8b,0x47,0x47, + 0xc7,0x5a,0xfd,0x45,0x13,0xe4,0xef,0x74,0xe6,0x3f,0x7f,0x4a,0x53,0xe3,0x7d,0xc7, + 0x5a,0x3f,0x54,0xd8,0x93,0x8a,0x47,0xad,0x23,0xd5,0x68,0xd4,0xc6,0xc5,0xdd,0x1d, + 0xef,0xe2,0x8c,0xc5,0xc5,0x51,0x01,0xaf,0xfc,0x29,0x4e,0x94,0xf9,0xfe,0x95,0xca, + 0x33,0xa9,0x78,0x27,0x6e,0x90,0x5e,0x26,0x4b,0x58,0x98,0x9b,0xd1,0xd8,0x75,0x0f, + 0x59,0xa4,0x17,0x8f,0xb1,0xf5,0x80,0x81,0x8f,0xf9,0x73,0x7d,0x99,0xf9,0xfe,0x3b, + 0xa4,0x75,0xa9,0xf8,0x45,0xe6,0xd1,0x1e,0x1e,0x76,0x5b,0xd7,0x4a,0x87,0x85,0x5a, + 0x7d,0x45,0x9c,0xbc,0x4b,0x0f,0x1b,0xf1,0x2b,0xa9,0x59,0xeb,0xa1,0x20,0x20,0xe3, + 0x45,0xd7,0x6e,0xb2,0x66,0xd9,0x0f,0xa0,0x04,0x7f,0x9d,0x23,0xa4,0x6e,0x7b,0x07, + 0xcc,0xfb,0xad,0xf5,0x26,0x97,0x79,0xa0,0x57,0x65,0x93,0xa0,0x46,0x54,0xb5,0x53, + 0x08,0x0c,0xad,0x08,0x7e,0x69,0xa9,0x6a,0xe0,0x01,0x18,0x84,0x5e,0x29,0x60,0xe0, + 0x01,0x73,0xfa,0xa1,0x78,0x1d,0x4c,0x28,0xb5,0x7a,0x49,0x4c,0x5c,0x03,0xec,0xfd, + 0x4f,0xcc,0x3e,0x37,0xa3,0x5a,0x99,0xf0,0x2d,0x1a,0xbc,0x3f,0x3e,0x6d,0x64,0x0b, + 0xae,0x90,0xad,0x71,0x51,0xb7,0xfc,0x4f,0xec,0x17,0x97,0x60,0x52,0xbb,0x0e,0xe3, + 0xf5,0x10,0x1b,0x78,0xf3,0x09,0xef,0xfe,0x56,0x1d,0x26,0xd7,0xb6,0x0c,0x62,0x58, + 0xd7,0x26,0x94,0xe6,0x01,0x34,0x0a,0xcd,0xf9,0xd4,0xcb,0xaf,0x00,0x5f,0x24,0x71, + 0xb1,0x59,0x7a,0xb9,0xa3,0x59,0xf4,0xee,0x23,0x01,0x78,0xff,0x86,0x4f,0x9d,0x2c, + 0x4e,0x88,0xef,0xb4,0xbd,0xae,0xd5,0x25,0x03,0x08,0x84,0xac,0xf9,0x57,0xce,0xca, + 0x1c,0xff,0x44,0x4b,0xd7,0x31,0x27,0x54,0x1b,0x77,0x7f,0x44,0xaa,0x63,0x5b,0x97, + 0x7d,0x7a,0x48,0xde,0xcd,0x96,0xfd,0x56,0xcd,0x17,0x92,0x71,0xbc,0x96,0xff,0x2f, + 0x18,0x94,0x53,0x1f,0xd1,0x4a,0x5c,0x06,0xe0,0x5e,0xb8,0x73,0xa5,0xf4,0x38,0x51, + 0x13,0x45,0x40,0xf4,0xee,0x47,0xc3,0xbe,0x84,0x8c,0xe3,0xb5,0xde,0xa7,0x60,0x8f, + 0x31,0x7b,0x51,0xb2,0x0e,0x7e,0x00,0xb5,0xc9,0xd6,0xb8,0xab,0x9a,0xc1,0x86,0x1a, + 0x5d,0xde,0x49,0x75,0xc4,0x3f,0x9a,0x8c,0xf8,0xc7,0x5a,0x9f,0x5d,0xe6,0x7a,0x70, + 0x07,0xc8,0xeb,0xd0,0xbc,0x77,0x55,0xbc,0x2a,0xcc,0x60,0x49,0x9d,0xfe,0xf9,0xa8, + 0xf8,0x36,0xfc,0x1a,0xe2,0xb8,0x90,0x74,0xcb,0x3f,0x9c,0x81,0xd4,0x7a,0x88,0x89, + 0x4d,0x2c,0xbe,0xb7,0xd0,0x7f,0x08,0x8a,0xe3,0xf0,0x77,0xd0,0xd8,0xef,0x4d,0x3e, + 0x3f,0x8e,0x3f,0xb5,0x7b,0xc7,0x3a,0xc7,0xcd,0x3f,0x17,0xe8,0xb0,0x07,0xde,0x35, + 0xf0,0xcf,0x3a,0x0c,0xf4,0x23,0x0c,0x06,0xc4,0xe0,0xfd,0x82,0x6b,0xf4,0xe2,0x6d, + 0x33,0xde,0x91,0x8e,0x76,0x1f,0xc2,0xe7,0xdb,0xf0,0x8f,0x14,0x30,0xfe,0xe8,0x31, + 0x36,0xd6,0x1e,0xa8,0x1d,0x73,0x8f,0x11,0x3f,0x6c,0x85,0x4f,0xf7,0xbb,0x62,0x64, + 0x84,0xa4,0xde,0xff,0x9c,0xf5,0xe7,0x4d,0x96,0xaf,0x34,0x40,0x4e,0xbc,0x70,0x1d, + 0x1b,0x66,0x20,0xca,0x26,0x6a,0x37,0x41,0xe0,0x57,0x24,0x91,0x04,0xbb,0xb2,0x1b, + 0x1d,0x51,0x1a,0xff,0x84,0x85,0xd9,0x46,0xd0,0x5f,0x5d,0xf7,0x15,0x0e,0x0c,0x66, + 0xfe,0x1d,0x21,0xdd,0x9b,0xa2,0x0c,0x08,0xad,0x8e,0x5c,0x3c,0xb2,0x29,0x56,0x19, + 0x96,0x9d,0xf8,0xc7,0xa3,0xfd,0x0e,0xf1,0x4f,0x93,0x78,0x07,0x79,0x1e,0x9a,0x76, + 0x6f,0xbd,0x41,0xec,0xa1,0xbf,0x8b,0x2d,0x3e,0x53,0x0c,0xe2,0x11,0x7a,0x34,0xd6, + 0x98,0x0c,0x30,0xfc,0x63,0xbd,0x8f,0x76,0x6d,0x6a,0x7e,0x7e,0x25,0x72,0x63,0x60, + 0xda,0x98,0x98,0xd4,0x26,0xb4,0xe6,0x23,0x2c,0xa2,0x0d,0x69,0x93,0xed,0xd7,0x69, + 0xde,0x0f,0xc4,0xa1,0x42,0x73,0xfe,0x77,0x17,0x8c,0x9a,0x4e,0x69,0x1d,0x37,0x3c, + 0x1f,0xe2,0x42,0x55,0x0b,0x13,0x9e,0x5e,0xc4,0x9f,0x5a,0x1d,0xce,0xcf,0x3b,0x90, + 0xf6,0xff,0x8f,0xa5,0x40,0x4e,0xe9,0x29,0xe6,0x7f,0x98,0x1b,0xb9,0x13,0x66,0x41, + 0x67,0xb8,0x72,0x70,0xf9,0x9d,0x0c,0xff,0xfc,0x13,0x7c,0x1a,0x1d,0xcb,0x39,0xeb, + 0xef,0xab,0xc3,0x0f,0x4d,0x90,0x83,0x68,0x27,0x30,0xc6,0x60,0xcf,0x4d,0xbe,0x4d, + 0x3b,0x7f,0x3f,0xd2,0xb6,0x21,0x34,0x09,0xdf,0xa5,0x95,0x49,0x36,0xde,0x31,0xcb, + 0xff,0xb4,0x95,0x0d,0x1a,0x4e,0xa6,0x8f,0x0c,0xc2,0xe3,0x02,0xbb,0x3f,0x4e,0x8a, + 0x69,0x8f,0xb4,0x46,0x77,0x2d,0x26,0x2f,0xb1,0xa9,0xae,0x4d,0xfa,0x11,0xff,0x98, + 0xeb,0x73,0xa4,0x7c,0x37,0x70,0x90,0x73,0x56,0x5c,0x2b,0x5d,0x14,0xee,0xe9,0xba, + 0x36,0x26,0x7e,0x9b,0x21,0xa2,0x06,0xea,0xd9,0x25,0x5e,0x5c,0x7a,0x12,0xf6,0xed, + 0xf6,0xc4,0xc4,0x8b,0x69,0xfc,0x03,0xc9,0x54,0x3c,0xea,0x4c,0xc2,0x08,0xdc,0x0d, + 0x25,0x74,0x06,0x5e,0x59,0x0c,0xde,0x0e,0x76,0x65,0x4c,0x6b,0x84,0xeb,0xec,0xf8, + 0xa7,0x5b,0x31,0x83,0xda,0xb4,0x6a,0x66,0x34,0xad,0x9d,0x16,0x6d,0x45,0x20,0xd4, + 0xa8,0x79,0xbe,0xcf,0x80,0xd0,0xdb,0xcc,0x58,0xb9,0xcd,0x81,0x7f,0xd6,0x98,0xa0, + 0xa5,0x5a,0x61,0x46,0xfb,0x7d,0x68,0x6c,0x86,0x06,0x4d,0x5e,0x7c,0x4d,0xb5,0x70, + 0x10,0xd7,0xcf,0x76,0x1b,0xfe,0xa9,0x90,0xaa,0xe1,0x09,0x7e,0xbf,0xc4,0x61,0xcf, + 0x90,0x1c,0x25,0x5d,0xd2,0xa3,0xc2,0xed,0x2c,0x70,0x97,0x06,0xd8,0x95,0x1a,0x66, + 0x30,0xfc,0x63,0xfe,0x93,0x21,0x85,0x76,0x4a,0x23,0xdc,0x58,0xee,0x2a,0x8d,0x74, + 0xc5,0x3a,0xe6,0x55,0x2f,0xf7,0x47,0x49,0x21,0xec,0x0d,0xb0,0x88,0x6f,0xc7,0x3f, + 0x7d,0x72,0x98,0x0d,0x93,0x8d,0x37,0xe2,0xe2,0x78,0x4f,0x2e,0x26,0x33,0x18,0x10, + 0x9a,0x1b,0x94,0x65,0x3a,0x43,0x95,0xde,0x51,0x0f,0x41,0x80,0x8a,0xc7,0x89,0x85, + 0x7f,0xae,0x4d,0x8d,0xf7,0x95,0x5f,0x0f,0xc7,0x2e,0x90,0x16,0x6d,0xeb,0x43,0x1d, + 0xdf,0x8a,0x5d,0xf0,0xd7,0x2e,0x9f,0x16,0x15,0x5f,0x8d,0x5d,0xf6,0xb7,0x2c,0xf7, + 0x3e,0xd4,0xf9,0xe6,0x34,0x0b,0x6f,0x70,0xfc,0xd3,0xa2,0x79,0x1f,0x16,0x7f,0xcf, + 0xa6,0xa5,0xa5,0xad,0xf8,0x41,0x71,0x58,0x3b,0xaa,0x34,0x2f,0x2f,0x66,0xf8,0x87, + 0xdc,0x0f,0x75,0xcb,0x3c,0x43,0xe2,0x4d,0x69,0xfc,0x53,0x91,0x94,0x0d,0x90,0x13, + 0x4a,0x52,0x66,0x6c,0x2b,0xde,0xc8,0xbc,0x71,0xf7,0x2d,0x75,0x50,0xc4,0xf0,0x8f, + 0x9a,0x90,0x19,0x22,0x8a,0x1c,0x29,0x91,0xd2,0xfe,0x87,0x81,0x1c,0xc2,0xc6,0x3b, + 0x83,0x0c,0xd0,0xbd,0x6c,0x36,0x8a,0x4a,0x43,0x03,0xd0,0x51,0xe5,0x0f,0x7d,0x4e, + 0x29,0x1d,0xee,0xe8,0x50,0xd8,0x78,0x4b,0x49,0xc8,0xf2,0x3f,0x15,0x05,0xbb,0x84, + 0x34,0x7a,0x94,0x6a,0xb5,0xa2,0x28,0xb0,0xfb,0x19,0x10,0x62,0x0b,0x69,0x18,0x36, + 0x57,0xef,0xc4,0xf9,0x29,0x4c,0xe3,0x1f,0x69,0x97,0x85,0x5e,0x14,0x86,0x76,0x96, + 0xfe,0x7d,0x74,0xfa,0x30,0x39,0x0a,0x8d,0x4b,0xd9,0xfb,0x0f,0x08,0x1d,0xb0,0x4f, + 0x0b,0x44,0xc5,0xb5,0x5d,0xe6,0xf3,0x9f,0x54,0x76,0x39,0xd1,0xce,0xec,0x68,0x2b, + 0x1a,0x8d,0x5a,0x49,0xb4,0xf3,0xcd,0x65,0x17,0x28,0x5f,0x2a,0xef,0x44,0xcd,0xe7, + 0xfb,0x19,0xfe,0x19,0x49,0xe1,0x1f,0x92,0x98,0xd6,0xac,0x14,0x30,0xfc,0x23,0x27, + 0xa0,0x41,0x08,0x51,0x31,0x29,0x21,0xa2,0x61,0x40,0xe8,0x58,0x97,0xb9,0xfe,0x55, + 0xc9,0x0f,0xef,0x48,0xb5,0x08,0x72,0xfc,0xca,0x7d,0x30,0x3f,0xca,0xdc,0x8e,0x1f, + 0xee,0x63,0xb0,0x07,0xf1,0x8f,0xf0,0x80,0xd6,0x40,0xe5,0x51,0xe6,0x58,0x4c,0xff, + 0xe0,0xdf,0x98,0xf2,0x3f,0xc1,0xc2,0x95,0xe8,0x7f,0x7e,0x23,0x07,0x4b,0x3d,0xcc, + 0xa8,0xd6,0x5d,0xc1,0x52,0xf6,0x05,0xc9,0xcc,0xf1,0x2e,0x61,0xf8,0xc7,0xfc,0xfb, + 0x56,0x0a,0xb3,0xe0,0x27,0xf8,0xfd,0xde,0x45,0x66,0x03,0xc3,0x03,0x7a,0xc5,0x37, + 0xd8,0x46,0x66,0x93,0x7a,0x5b,0x42,0x6e,0x67,0xdf,0xef,0x4f,0x60,0x4e,0x42,0x66, + 0x2f,0xaa,0x59,0xcf,0x97,0x67,0xc3,0x5b,0x88,0x7f,0x16,0x8b,0xf7,0xc0,0x2f,0x99, + 0x51,0x5c,0xf7,0x50,0x73,0xe8,0x65,0xfd,0xfa,0xe1,0xc2,0x0d,0x9d,0x2c,0xf4,0x74, + 0x2c,0x19,0x0b,0xac,0x16,0x8e,0x59,0xfb,0x2f,0xf9,0xea,0x3d,0xa6,0x3f,0x41,0xc7, + 0x72,0xbd,0xbe,0x60,0xbf,0x38,0x4a,0x27,0xd6,0xde,0xc3,0x02,0x19,0xbb,0xc2,0x3c, + 0x70,0x92,0x4d,0xc5,0x11,0x6b,0xff,0xa5,0x15,0xb0,0xfd,0x7b,0xf4,0xc6,0xa4,0x67, + 0xbc,0x33,0x15,0xc8,0xc6,0xc5,0x66,0x75,0x32,0xde,0xf2,0x5b,0xcf,0x78,0xeb,0x15, + 0xf8,0x0b,0xba,0x28,0xe9,0x49,0xb0,0x50,0x68,0xe1,0x1f,0xe6,0x7f,0x7a,0x63,0x1c, + 0xbd,0x0c,0x0a,0x6f,0xc1,0x8d,0xc7,0x7a,0xc6,0x84,0x1f,0xb2,0x2b,0x8d,0xa3,0xc5, + 0x4b,0x23,0xa7,0x60,0x93,0xc0,0xfc,0x4f,0x3b,0x0b,0xdc,0xe6,0xf3,0xb7,0x33,0xef, + 0x84,0xfe,0xaa,0x68,0x7d,0x84,0xef,0xce,0xfa,0x19,0x3a,0x9a,0x55,0x79,0x40,0x98, + 0xaf,0x0b,0x6c,0xbf,0xa6,0x3d,0x52,0xf1,0xa3,0x23,0x6c,0xbc,0x49,0xcb,0xff,0x87, + 0x15,0xc3,0xff,0x14,0x61,0x34,0xaf,0x82,0x80,0xca,0xfc,0xf9,0xf1,0xb2,0xde,0x02, + 0xbf,0x5e,0x14,0x60,0xfb,0xdf,0x1e,0xa8,0x49,0x32,0xff,0x7f,0xc2,0x5a,0x9f,0x35, + 0xe5,0xc6,0x78,0xe7,0x8f,0xcd,0xb8,0xc4,0x8c,0xbb,0xc3,0x2c,0x3a,0x37,0x31,0x58, + 0xb2,0x40,0xff,0xfc,0x13,0x33,0x46,0xe1,0x24,0x39,0x90,0xdc,0xc3,0xf6,0x8f,0xd6, + 0x7a,0x8b,0xc2,0x28,0x8b,0x56,0xcd,0x7a,0x49,0x5c,0x18,0x85,0x77,0x85,0xbb,0xfe, + 0x1b,0xdb,0xbd,0xee,0xa9,0x98,0x40,0x8f,0x8d,0x1b,0x87,0x11,0x23,0x54,0xa5,0xfd, + 0x43,0x47,0xf4,0x52,0x6a,0xf7,0x2a,0x72,0x63,0xe9,0xd6,0xb1,0x69,0x4d,0xd2,0x24, + 0xdc,0xa3,0x7b,0x8f,0x88,0xe3,0x91,0x63,0x50,0xaf,0xb3,0xef,0x8b,0x2e,0x33,0xdf, + 0xa7,0x1f,0x10,0xff,0x34,0xeb,0x3d,0x71,0x71,0x0f,0x06,0xb2,0xf5,0x0c,0xbd,0x18, + 0x11,0xad,0x68,0x5b,0xe9,0xef,0xe8,0x89,0x64,0x83,0x2e,0x53,0x12,0x4c,0xe3,0x1f, + 0x33,0xde,0xc5,0x09,0xbf,0xff,0xf6,0x1f,0xc4,0x43,0x01,0x58,0xc2,0xe2,0x35,0x8b, + 0x80,0xa3,0x70,0x1f,0xf5,0xe1,0xfd,0xb1,0x34,0xfe,0x91,0x18,0xfe,0x09,0x73,0x90, + 0xb3,0x85,0x4d,0x94,0x47,0x73,0x2f,0xf4,0x6d,0x51,0x7b,0x83,0xeb,0xf4,0xab,0x81, + 0xfc,0x82,0x0d,0xaf,0x5a,0x67,0xdf,0x17,0xb1,0xfc,0x0f,0x2d,0x62,0x61,0x25,0xcc, + 0x06,0xf5,0x94,0xf8,0x8f,0x08,0x8c,0x35,0xf7,0xd8,0x35,0x4d,0x43,0x93,0x72,0xcb, + 0x2b,0x6c,0x19,0x1c,0x25,0xc7,0x96,0xd6,0x0d,0xb1,0x8d,0x2a,0x15,0x2c,0xfc,0x53, + 0x8c,0xf8,0x67,0x89,0xee,0x3d,0x27,0x3e,0x13,0xbb,0x07,0x98,0xb7,0x39,0x57,0xb5, + 0x8e,0x4e,0xcc,0x6d,0x3e,0x56,0xac,0x8b,0x63,0x94,0xf9,0x9f,0x63,0x88,0x7f,0xca, + 0xd2,0x78,0x83,0xad,0x1f,0xb2,0x24,0x59,0xbc,0x9a,0xe1,0xcf,0xf7,0xcb,0x16,0x0d, + 0x14,0x9f,0xeb,0x3c,0x07,0x13,0xa5,0xb5,0x7a,0xf1,0xb8,0x78,0x05,0xde,0x37,0x56, + 0x54,0x1a,0xff,0xe8,0xca,0x59,0xf8,0x9b,0x21,0x5f,0xd2,0xbd,0x9d,0x3c,0x09,0x5b, + 0x6f,0xaf,0x1a,0x72,0x5d,0x0a,0xbd,0x09,0xcf,0x85,0x17,0xbc,0x22,0xf7,0x91,0xb3, + 0x06,0x35,0xe4,0xe0,0x7f,0x0a,0x06,0x8d,0x4d,0x84,0xc2,0x96,0xec,0xe3,0x5a,0xf5, + 0x6b,0xee,0x60,0x29,0x83,0xc1,0x4b,0x03,0xaf,0x15,0x05,0x59,0x84,0x7a,0x58,0x08, + 0xf4,0xb3,0x2b,0x47,0xac,0xf8,0xa5,0x97,0xef,0x51,0x0e,0x23,0xc9,0xb3,0x9d,0xec, + 0x80,0x4f,0x33,0x63,0x79,0x9c,0x9c,0x81,0xc3,0x42,0x89,0xde,0x86,0xfc,0xc9,0x61, + 0xa9,0xd6,0xc9,0xff,0x68,0xe5,0xeb,0xa4,0x09,0xe9,0x9a,0xfe,0xe2,0x6e,0x71,0x05, + 0x03,0x2a,0x0d,0x7a,0xb1,0x41,0x3b,0xcc,0x46,0x63,0xb4,0x82,0x43,0x97,0xb8,0x90, + 0xe6,0x7f,0x62,0xc2,0x33,0xca,0x5b,0x6c,0x3d,0xb8,0x87,0xc4,0x09,0x78,0x9d,0x19, + 0x05,0x63,0xe2,0x65,0xb6,0x1e,0x38,0xad,0x71,0x49,0x30,0x96,0xca,0x34,0x3b,0xff, + 0x13,0x30,0xbe,0xc7,0x4e,0x71,0x2d,0xbc,0x25,0xdd,0x80,0xd1,0xfc,0x0c,0x9b,0xb1, + 0x1b,0xd9,0x0a,0x6c,0xb5,0x42,0xbf,0x9d,0xff,0x09,0xc8,0xcf,0xe1,0x7a,0x08,0x72, + 0xd8,0x53,0xa5,0xef,0x1e,0x63,0xb3,0xf1,0x1c,0x2c,0xd0,0x65,0xfe,0xfe,0xc0,0x81, + 0x74,0x9a,0xff,0x19,0x29,0x30,0xf6,0x5f,0x45,0x65,0xa4,0x4d,0x41,0xfe,0xa7,0x88, + 0xcd,0x06,0xed,0x95,0xfc,0xfd,0x2e,0x9c,0x9f,0xde,0x2c,0xfe,0xc7,0xc4,0x3f,0x27, + 0x49,0x63,0xe4,0x53,0xb4,0x68,0xd8,0xbf,0x81,0xfc,0x26,0xb8,0x28,0x3e,0x3f,0x09, + 0x0c,0x21,0x74,0xb0,0x9f,0x46,0x32,0xf8,0x1f,0x8f,0xc1,0xff,0x54,0x88,0x5f,0xa0, + 0xbf,0x83,0xc6,0x11,0xcf,0x0d,0xe2,0x71,0xe5,0xce,0x78,0x53,0xb2,0x24,0x28,0x1e, + 0x87,0x3b,0x69,0x53,0xd2,0xc9,0xff,0x30,0xfc,0xf3,0x77,0x70,0x9d,0xbe,0x75,0x68, + 0xfa,0x25,0xed,0x0d,0x68,0x78,0xd5,0xfb,0x41,0xeb,0xa5,0x30,0x67,0x84,0x3e,0x10, + 0xad,0x4f,0xc9,0x89,0x7f,0xf8,0xec,0x81,0x28,0xc3,0xa4,0x6f,0xc9,0xab,0xb3,0xf6, + 0x77,0xbe,0x1b,0x7b,0x37,0xd8,0x32,0x1a,0xe0,0x1e,0x8c,0x64,0xf2,0x3f,0xcc,0xff, + 0xbc,0x85,0xfb,0xaf,0xf5,0xe2,0x6a,0xd8,0xa4,0x54,0x26,0xe4,0x6f,0x92,0x53,0xb4, + 0x53,0xa9,0x1a,0xcc,0xcd,0xff,0x50,0x86,0x7f,0x7e,0x82,0xe3,0x6d,0x0b,0x5d,0xa3, + 0xf6,0x46,0xfd,0x23,0xf2,0xb7,0x4b,0xaf,0x74,0x1d,0xd8,0x31,0x6f,0x24,0x37,0xff, + 0x83,0xf8,0x87,0xfb,0xf3,0xfa,0xd0,0x72,0xe6,0x6d,0x54,0xdc,0xcf,0x0e,0x6a,0x0f, + 0x33,0x43,0xe6,0xf3,0x29,0x65,0xf0,0x3f,0x23,0xe5,0x2c,0x5e,0x20,0xfe,0x49,0x8a, + 0xd7,0x30,0x20,0xd4,0xd8,0xe1,0x89,0xb5,0xbe,0xc3,0x8c,0x43,0x94,0xc1,0x9e,0x11, + 0x16,0x5d,0x32,0xf9,0x1f,0x48,0x9a,0xf1,0xe8,0xb7,0xe6,0xc6,0x1c,0xaf,0x70,0xd8, + 0x93,0xcc,0xc5,0xff,0x60,0x74,0xab,0xd5,0xbc,0x8f,0x32,0xb4,0xf3,0x1a,0x83,0x31, + 0x2c,0x2c,0xae,0x81,0x6f,0x40,0x1d,0x0b,0x73,0xc2,0xb0,0x94,0x83,0xff,0x59,0x23, + 0xf1,0xf8,0x5b,0xca,0x60,0xff,0x66,0x44,0x3b,0x51,0xb6,0x6c,0x10,0xf6,0xd8,0xf9, + 0x1c,0x1b,0xfe,0x29,0xb0,0xd8,0x9e,0xb9,0xd2,0xa3,0x20,0xb1,0x78,0x4d,0xd6,0xb0, + 0x08,0x7e,0x3b,0x32,0x42,0xc3,0xc6,0xa3,0xa2,0xbe,0x17,0x6c,0xfe,0x87,0xc1,0x1e, + 0x3f,0x27,0x79,0xaa,0xa1,0xc3,0x1f,0x5b,0x2e,0x97,0xbe,0x30,0x20,0xef,0xf5,0xab, + 0xcb,0x91,0xff,0x91,0x0c,0xfe,0x07,0xd2,0xf8,0x67,0x71,0x71,0x18,0xc6,0x55,0x3e, + 0x28,0x15,0x4e,0xf8,0x1a,0xe4,0xe2,0x88,0x88,0x57,0xf6,0xc9,0x38,0xf0,0xe9,0xd9, + 0xfc,0x8f,0x81,0x7f,0x96,0x1a,0xfc,0x4f,0x80,0xd3,0x3e,0x03,0x70,0x61,0xde,0xb3, + 0xcb,0xb7,0x46,0xab,0x2c,0x7e,0xe3,0x4d,0x6b,0xff,0xc5,0xf9,0x1f,0x0c,0xfa,0xed, + 0xee,0xeb,0xe1,0xb5,0x70,0x73,0x5b,0xc9,0x43,0xe2,0x70,0xc5,0x05,0x7f,0xe3,0x72, + 0x8f,0x8d,0x0f,0xc9,0xe6,0x7f,0xdc,0xb4,0x54,0x85,0x6e,0xa8,0x9d,0x25,0x33,0xfc, + 0x03,0xf1,0x70,0x43,0x85,0x83,0xff,0xb1,0xe6,0xb3,0x0d,0xf1,0x8f,0xe6,0x67,0x83, + 0xba,0xa9,0x1a,0x1e,0xd4,0x90,0xf6,0x29,0x65,0x57,0x64,0x7f,0xa8,0x5b,0x31,0x88, + 0x20,0xcd,0xc1,0xff,0x54,0x08,0xbb,0x8c,0xf9,0x7c,0xb0,0x10,0xe7,0x3f,0xa0,0x31, + 0x58,0x38,0x2c,0x1f,0x04,0x69,0xa9,0x0b,0xe7,0xff,0x86,0x6c,0xfe,0xc7,0x40,0x2f, + 0xc8,0xff,0x04,0x5f,0x03,0x4e,0x5b,0xbd,0xd5,0x7d,0x01,0x4c,0x22,0xc8,0x80,0xbe, + 0x69,0xfe,0x67,0x84,0x3d,0xff,0x42,0x01,0xbb,0xb8,0x7d,0xc6,0x9b,0x9a,0x39,0x1b, + 0x94,0x3f,0x21,0x27,0xff,0xe3,0x87,0x58,0x8a,0xe4,0xe9,0xbc,0x8d,0x2f,0xbc,0x12, + 0x2a,0x56,0xc1,0x38,0x69,0x40,0xd8,0x63,0xad,0xb7,0x0c,0xfe,0x07,0x18,0xfe,0x19, + 0x26,0x7e,0xf5,0x24,0x33,0x3c,0x0c,0xff,0xd0,0x43,0x50,0x43,0x8b,0xd9,0xfe,0x4b, + 0xe6,0x3f,0x39,0xf8,0x9f,0xf2,0x95,0xdc,0x3f,0xaf,0x08,0x16,0x7e,0x81,0x18,0x40, + 0x68,0x6e,0x09,0x73,0x53,0x81,0xd4,0xf7,0x62,0xf8,0x9f,0x34,0xff,0x13,0x13,0x0c, + 0x3c,0xe0,0x1e,0xbb,0xe9,0x3b,0xc2,0x23,0xc1,0xc0,0x20,0xdb,0x7d,0x94,0xc1,0x01, + 0x75,0x5e,0xa2,0xc8,0xf6,0xfd,0xa6,0xf9,0x9f,0xdd,0x32,0xfa,0xab,0x1b,0xce,0x78, + 0xd7,0x8a,0x5f,0x81,0x9f,0xc4,0x6e,0xfc,0x2d,0x03,0x42,0xb3,0xe1,0xe3,0xa1,0xa6, + 0x8b,0x1e,0xe4,0x7f,0x52,0xd4,0xd0,0x3b,0x3e,0x8b,0xff,0x29,0x36,0xf1,0xcf,0x17, + 0xb7,0xc0,0xc4,0x9a,0xe6,0x84,0x37,0xde,0xf6,0x7b,0x98,0x50,0x1b,0x12,0x29,0x44, + 0x64,0xf0,0x3f,0x16,0xfe,0x01,0x16,0xbf,0x26,0xa3,0x3c,0x48,0x9d,0x86,0xf7,0x07, + 0x96,0xa0,0xf1,0xae,0x3c,0x11,0xad,0x43,0xfe,0xc7,0x42,0x44,0x36,0xfe,0x07,0xf7, + 0x5f,0xbb,0xe6,0x0f,0xb8,0x17,0x92,0x59,0x74,0x13,0xf8,0x47,0x7e,0x10,0x24,0x2f, + 0xd0,0x03,0xb1,0xca,0xa4,0x6b,0x7d,0x6a,0xbc,0x6c,0x20,0x69,0xfc,0x03,0x90,0xda, + 0xaf,0x8d,0x91,0x6d,0x0c,0xdd,0xcd,0x4b,0xb0,0xd1,0x9d,0xa0,0x07,0xa0,0xb2,0xdf, + 0xee,0xaf,0x6c,0xfc,0x0f,0xdf,0x7f,0xad,0xd3,0xdd,0x0b,0xa9,0xc4,0x60,0xa4,0x5f, + 0x17,0x83,0x2c,0xac,0xff,0x00,0x76,0xea,0x96,0x3f,0x2f,0x72,0xf2,0x3f,0x7b,0x4c, + 0x27,0xb9,0x85,0xed,0xc7,0x59,0xe0,0x8e,0xb7,0xbe,0xc7,0x3c,0x6a,0x3d,0x06,0x1a, + 0x6b,0xbc,0x36,0xfe,0x07,0xac,0x8b,0x38,0x51,0x4d,0x68,0x8c,0xd8,0x11,0x23,0x66, + 0x40,0x6c,0xfc,0x8f,0xa0,0x18,0x4e,0x7b,0xeb,0x98,0xd8,0x0c,0x2f,0x33,0xc3,0xb3, + 0x5e,0x68,0x52,0xef,0x01,0xb6,0x2d,0x1d,0x4b,0xfb,0xf3,0x34,0xff,0x43,0xa5,0x75, + 0x9c,0xcf,0x71,0x57,0x90,0x9f,0xe1,0xfe,0x9d,0x3d,0x8d,0xec,0x06,0x8c,0xc8,0xc5, + 0x3c,0x7e,0x91,0x6c,0xfe,0x87,0xa1,0x1d,0x76,0xf1,0x69,0xb6,0x0f,0xea,0x91,0xe6, + 0xea,0xae,0x38,0x89,0x69,0x78,0xbf,0x15,0xef,0x9c,0xfc,0x0f,0xe2,0x1f,0xbe,0xa8, + 0x7c,0x5b,0x34,0xb6,0xde,0x5e,0x5a,0xb1,0xb0,0x30,0xc2,0xf0,0x80,0x7a,0xe2,0x73, + 0xe8,0xa8,0x7b,0xb5,0x1c,0xfc,0xcf,0x61,0x95,0x8d,0x6e,0xaf,0x18,0x60,0x78,0x7b, + 0xd1,0x2b,0x25,0xfb,0xeb,0x77,0x68,0x1f,0x6b,0xf5,0x43,0xc6,0xfc,0x68,0xcd,0xaf, + 0xb2,0x81,0xeb,0xd3,0x2c,0xfc,0x73,0x2d,0x83,0x91,0x15,0x2d,0xec,0x82,0x78,0x29, + 0xf2,0x06,0xc2,0x80,0xb1,0x2f,0x8e,0x0d,0x4c,0x36,0xb4,0xbc,0x86,0xf1,0x9d,0xb2, + 0xf1,0x26,0x9c,0xfc,0x0f,0xae,0x9f,0x8d,0x2d,0xc9,0xcf,0x8f,0x7f,0xf5,0x32,0xbc, + 0xa1,0x2e,0x19,0x2e,0x3e,0x27,0x7e,0x9d,0x8e,0xab,0x0d,0xfa,0xfd,0x63,0xe2,0x37, + 0xb5,0x97,0x68,0x7d,0xac,0xf8,0x03,0x31,0x68,0xe7,0x7f,0x4c,0x90,0x33,0x4a,0xb7, + 0x46,0x7d,0x09,0xf7,0x9d,0x91,0xa6,0xd5,0xae,0x0d,0x55,0x27,0xe5,0x8f,0x23,0xa0, + 0xec,0x90,0xfc,0xd4,0xf5,0x10,0x89,0xd9,0xf6,0x5f,0xd6,0x1f,0x7d,0x0b,0x3c,0xcc, + 0x3f,0xb4,0xd2,0x95,0x74,0xbb,0x20,0x0d,0xf4,0x04,0xc9,0x4a,0x29,0x32,0x4f,0xbd, + 0x4f,0x56,0x19,0xde,0x4b,0xf3,0x51,0x7b,0xcc,0x49,0x1b,0x84,0x9f,0x42,0x4d,0xff, + 0xe7,0xe2,0xc4,0x03,0xf7,0x69,0x2a,0x4e,0x6c,0x40,0x78,0x92,0x7d,0xc8,0xcc,0xd1, + 0xc5,0x2d,0xff,0xa3,0x95,0x5b,0x7f,0xf4,0x3d,0xf0,0xba,0xd0,0xa8,0x7f,0x3e,0xfe, + 0xd5,0x75,0xf2,0x85,0x68,0x03,0x5b,0x0f,0x55,0x61,0x38,0x2a,0xd4,0x51,0xcf,0x6e, + 0x51,0xb1,0xd6,0x4f,0x52,0x78,0x26,0x8d,0x87,0x5f,0x87,0x45,0xfd,0xee,0xb1,0xaa, + 0x4b,0x70,0x59,0x6a,0xc1,0x27,0x8c,0xc1,0x65,0x68,0xa1,0xde,0x01,0x71,0xdc,0x5a, + 0x3f,0xba,0xb2,0x47,0x30,0x57,0x97,0xf2,0x31,0xc3,0x57,0xd7,0x05,0xc5,0x40,0x51, + 0x42,0xab,0x4b,0x14,0xaf,0xef,0x1c,0xad,0x38,0x06,0xec,0xf9,0x7d,0x4e,0xfc,0x63, + 0xbe,0xff,0x25,0x68,0x61,0xcb,0x60,0xeb,0x98,0xab,0x99,0x76,0xc1,0xa7,0xf5,0xe5, + 0x63,0x64,0xc1,0xf6,0x93,0xc9,0x86,0x6d,0xc5,0xdb,0x6c,0xf8,0x27,0x99,0xc2,0x3f, + 0x9c,0x1f,0xe3,0x13,0xb5,0x98,0x4d,0x14,0x05,0xff,0xd0,0xf6,0x20,0x79,0x9c,0x3e, + 0x9a,0xac,0xa1,0x72,0x34,0x92,0xc1,0xff,0x60,0xfe,0x6b,0x83,0x8f,0x47,0xff,0x61, + 0x17,0xdb,0x88,0xd1,0xc2,0xd8,0xa7,0x87,0xc9,0x06,0xf2,0x90,0x5c,0x4e,0xe7,0xc4, + 0x84,0x4c,0xfc,0xd3,0x4b,0xbf,0x83,0x49,0xae,0x95,0xf0,0x21,0xc1,0xb4,0x57,0xe4, + 0x67,0x0f,0x15,0xc5,0x18,0x10,0x0a,0x8a,0x83,0xf4,0x66,0x25,0x48,0x3d,0x90,0x81, + 0x7f,0xf8,0x6e,0x62,0x8c,0xed,0x2f,0x26,0x49,0xbd,0xbe,0xf5,0x5c,0xe7,0xff,0x66, + 0x13,0xd5,0x3c,0x54,0xf2,0x6f,0x9d,0xdf,0x81,0x2b,0x5d,0x2d,0x08,0x15,0x6c,0xf8, + 0xa7,0x7c,0x34,0xfd,0xf5,0x4d,0x6a,0xec,0x0f,0x51,0xc7,0x80,0xfa,0xf3,0x75,0x3e, + 0x3d,0x70,0x9e,0x45,0xcc,0x83,0x84,0xe1,0x07,0x9a,0xc5,0xff,0xdc,0xc0,0x9c,0x06, + 0x9c,0xa2,0x07,0xd6,0x22,0xff,0x13,0xf2,0x44,0x7f,0x22,0xcf,0x3b,0xc1,0x80,0x90, + 0x02,0x4f,0xc1,0x7c,0xea,0x0e,0xe7,0xe1,0x7f,0x78,0xda,0x6b,0x33,0x1b,0xb8,0xf6, + 0x0f,0xb1,0xea,0x64,0xdb,0x5d,0xbe,0xd9,0xf0,0x74,0x64,0x7e,0xcc,0xbd,0x9a,0x8c, + 0x59,0x9f,0x4b,0x9b,0x34,0x28,0xa5,0xf8,0xc6,0x51,0x21,0x45,0xe3,0x6f,0x81,0x9f, + 0xd2,0x80,0xde,0x1d,0x24,0x1e,0x65,0x1f,0xfb,0x4a,0xd9,0x0c,0xd8,0xf8,0x9f,0x82, + 0x14,0xff,0x83,0x68,0x07,0x8d,0x6b,0xd1,0x38,0x89,0xfc,0x4f,0xcc,0xed,0x67,0x57, + 0x16,0x50,0xef,0x70,0x16,0xff,0xd3,0x68,0xc0,0x1e,0x8c,0x3e,0xd7,0xd1,0x6b,0x6e, + 0x83,0xf1,0xab,0xd9,0x15,0x69,0x46,0x12,0x2e,0x65,0xe1,0x1f,0xb0,0x65,0x37,0xfa, + 0x11,0xf6,0x54,0xb4,0x76,0xc1,0x8b,0xb1,0x46,0x0d,0x1e,0x14,0xd7,0xc8,0x3c,0x62, + 0x6e,0xcf,0xc9,0xff,0xf8,0x86,0x09,0xc7,0x3f,0x0f,0x92,0x39,0x91,0xcd,0xba,0x4f, + 0x6b,0xfb,0x1e,0x99,0x03,0x07,0xb5,0x5a,0xcd,0xef,0xe0,0x7f,0xca,0x39,0xff,0xb3, + 0x94,0xa3,0xa3,0xcd,0xa0,0x6a,0xae,0xa8,0x6f,0x17,0xd9,0xcc,0x22,0x3e,0x03,0x4e, + 0x5f,0x83,0x9f,0x87,0xd6,0x69,0xab,0x1f,0x24,0x19,0xf8,0xc7,0x08,0xfa,0xc3,0xb1, + 0x0e,0xbf,0xaa,0xc9,0x75,0x11,0x89,0x19,0xc9,0xe5,0x35,0xa5,0x91,0x32,0x36,0xff, + 0x1e,0x4d,0x2e,0x8d,0x38,0xf1,0x4f,0x0a,0xef,0x25,0xbb,0x12,0x6a,0x1c,0xbc,0x11, + 0x31,0xc6,0x8c,0x46,0x59,0x26,0x62,0x18,0x4e,0xc1,0x6c,0xf0,0x44,0xc4,0xe3,0xa2, + 0xf9,0x3e,0xdb,0x8b,0xd3,0xe3,0x8d,0x5d,0x80,0xd9,0xcb,0xbd,0x0f,0x3d,0xcc,0x0c, + 0x7f,0xf3,0xf2,0x62,0xc3,0xb8,0x67,0xb9,0xfb,0x95,0xe7,0xdf,0x9c,0x66,0xce,0x67, + 0x45,0x41,0xfa,0xfe,0xe8,0x05,0xb5,0x59,0x2b,0xfe,0x15,0x59,0xa3,0xbe,0x56,0xd6, + 0x10,0x2a,0x79,0x58,0xac,0xd6,0x8e,0x2a,0x75,0x0c,0x48,0x74,0xde,0x94,0x03,0xff, + 0x90,0x24,0xed,0x6b,0xaf,0x2d,0x72,0x6f,0x22,0x82,0x42,0xdb,0x77,0x56,0xb4,0x6d, + 0x2a,0x8d,0x95,0xde,0xa7,0xee,0x94,0xe5,0x01,0x92,0xc1,0xff,0x60,0xbe,0x4f,0x21, + 0xbf,0x50,0xd9,0xc0,0x5b,0x8b,0x14,0x72,0x4b,0xec,0xbb,0xea,0x9c,0x90,0xab,0x9d, + 0x94,0xd1,0x8d,0x50,0x15,0x92,0xdb,0xa9,0x8d,0xff,0x29,0xdf,0x65,0xcf,0x1e,0xce, + 0x5d,0xea,0x56,0x4a,0xaf,0x87,0x8d,0xe4,0xab,0x9a,0xdc,0x4e,0x1e,0x81,0x8d,0x4a, + 0xd5,0xd2,0xb6,0xa1,0x88,0x8d,0xff,0x29,0xcf,0xc8,0x5e,0x71,0x7c,0xfb,0x9a,0xda, + 0xa0,0x7d,0x21,0x5a,0x35,0xa7,0xe2,0xe8,0xb2,0xa0,0x16,0xd8,0x26,0xae,0xb5,0xfc, + 0xcf,0x6e,0x21,0x83,0xff,0xd9,0xca,0xf1,0x21,0x34,0x85,0xcc,0x2b,0xa1,0x05,0xd1, + 0xce,0x74,0xfc,0xf5,0xa7,0xf3,0x5f,0x49,0x48,0x30,0x63,0x56,0xb7,0xa8,0x76,0x8c, + 0x40,0x03,0x02,0xa1,0x1d,0x90,0x08,0x35,0x83,0x67,0x99,0xe8,0xca,0xc6,0x3f,0x0c, + 0xed,0xc0,0x7d,0xa4,0x96,0xba,0x76,0x21,0xff,0x23,0x71,0xfe,0xc7,0x0f,0x27,0x85, + 0x5a,0x06,0x84,0x5c,0xae,0x34,0xfe,0x31,0xf7,0x5f,0x18,0x9d,0x3b,0xf1,0x7b,0x59, + 0x5c,0x58,0x0c,0x8f,0x53,0xff,0x18,0xfb,0x82,0x1e,0xc0,0x2b,0x63,0xfe,0x26,0xe2, + 0xb2,0xfc,0x8f,0x85,0x7f,0xd6,0x93,0xe3,0xf4,0x11,0x98,0x3f,0xea,0x0a,0xb2,0x65, + 0xb3,0x49,0x9e,0x37,0x24,0x87,0xc9,0xb5,0xf0,0x88,0xf4,0xf5,0x48,0xd1,0xfa,0x88, + 0xdf,0x7a,0x3e,0xe2,0x1f,0x04,0x39,0xc5,0x0c,0xed,0x44,0x7e,0xc9,0xd0,0x88,0xbc, + 0x56,0x9c,0x4d,0x7e,0x4c,0x97,0x24,0x6b,0xc7,0xc5,0x43,0x0c,0x7a,0xb4,0x24,0x3d, + 0x27,0xc4,0x9a,0x34,0xff,0x73,0xad,0x81,0x7f,0xdc,0x71,0xf1,0xbd,0x18,0xdb,0xbd, + 0x9e,0xf4,0xc6,0xdc,0xc3,0x70,0x17,0xec,0xb3,0xe2,0x3b,0xc5,0xfd,0x42,0xa9,0x39, + 0x3f,0x88,0x7f,0x9e,0x43,0x90,0xd3,0x27,0x5e,0x51,0x5f,0x46,0xe3,0xa0,0xf8,0xd7, + 0xd2,0x4b,0x91,0x7a,0x75,0xeb,0xf8,0xb4,0x17,0xe0,0x45,0x1a,0x4c,0xae,0x1c,0x11, + 0x75,0x27,0xff,0xc3,0xf6,0x5f,0x25,0x77,0x95,0x5e,0xa1,0xff,0x82,0x8e,0x77,0x43, + 0x61,0xe9,0xab,0x1b,0x63,0x95,0xeb,0xae,0xb9,0x8d,0xed,0xa7,0x36,0xed,0xae,0x1c, + 0x95,0x6f,0x0f,0xd9,0xf2,0x5f,0x26,0xfe,0xc1,0x6d,0x1a,0xf2,0x5d,0xee,0x3a,0xe6, + 0xa8,0x23,0x7e,0x55,0x66,0x78,0x69,0x0c,0x1e,0x08,0x56,0xe9,0xf2,0x5a,0x9a,0x89, + 0x7f,0x02,0xc6,0xee,0xf5,0x61,0xa1,0x56,0xe7,0x1b,0x8d,0x08,0xdd,0xb9,0x94,0xc5, + 0xaf,0x41,0x09,0xf5,0x1b,0xb2,0x3f,0x13,0xff,0x00,0x57,0x53,0x5c,0x82,0x17,0xd1, + 0xf1,0x06,0xc5,0x75,0xd2,0x8b,0x50,0xd7,0xef,0x8d,0xce,0x18,0x85,0xa3,0x5a,0x9d, + 0x16,0xe8,0x13,0xd3,0xef,0x63,0xc3,0x3f,0xa3,0xf0,0xa1,0xd0,0xdc,0xbf,0x8a,0x19, + 0x84,0xc1,0x00,0xcc,0x18,0x8e,0x4a,0x13,0xb8,0x54,0x10,0xff,0x98,0xcf,0x37,0xf1, + 0x4f,0x8a,0xff,0xa9,0xd7,0x4b,0xce,0x88,0xcf,0x46,0xde,0x82,0xfa,0x64,0xc9,0x07, + 0xe2,0x62,0x18,0xac,0xa8,0x6f,0xf7,0xb4,0xdb,0xf8,0x9f,0x0e,0x33,0xff,0x65,0xa0, + 0x97,0xab,0xf4,0xb6,0xdd,0x24,0x00,0x3d,0xaa,0x6f,0x58,0xc6,0x40,0xcc,0xde,0x1f, + 0xd8,0x46,0x40,0x75,0xe0,0x1f,0xdb,0xfd,0x84,0x85,0x69,0xd7,0x6e,0xe6,0x91,0x7c, + 0x14,0x89,0x6b,0x66,0xd4,0xe8,0xae,0x58,0x26,0xff,0x73,0x3d,0xc6,0xbb,0xc8,0x20, + 0xdb,0xe6,0x57,0x33,0xb7,0x7c,0x9f,0x0c,0x1d,0x3e,0xf5,0x57,0x32,0xb8,0x02,0x6a, + 0x27,0xec,0x4e,0xb8,0x54,0x1b,0xff,0xc3,0xf3,0x5f,0xc6,0x78,0x2f,0xc5,0x26,0xa0, + 0x7e,0xa0,0x64,0x9f,0xfb,0x1f,0xf5,0x77,0xcb,0xea,0xb6,0x97,0xc4,0x45,0x95,0x32, + 0x47,0xa4,0xb3,0x8d,0x2a,0x4d,0xe7,0xbf,0xae,0x66,0xf8,0x27,0xcc,0xc7,0x8b,0x1b, + 0x73,0x44,0x3b,0xc2,0x65,0x98,0x08,0x3e,0x7b,0x82,0xcf,0xc0,0xc7,0xda,0xa2,0x21, + 0x16,0xbf,0x9c,0xf9,0xaf,0xb7,0x0c,0x91,0xcf,0xb3,0x30,0x19,0xac,0x4f,0x78,0x12, + 0xe2,0x28,0x4d,0xd0,0xd9,0xbf,0xf7,0xda,0xf0,0xb3,0x2d,0xff,0x55,0xc1,0xf0,0x8f, + 0x8a,0x22,0x9f,0xdb,0x6b,0xe1,0xb9,0x3b,0x3f,0x7d,0x4a,0xee,0x0e,0xfd,0xab,0xde, + 0x43,0x6b,0x13,0xee,0x9c,0xfc,0x0f,0xe2,0x9f,0xc7,0xe5,0xea,0x14,0xdf,0xa5,0xaa, + 0x47,0x64,0x28,0x1d,0xac,0x8e,0x11,0x1e,0xf1,0xad,0xfd,0x85,0x23,0xff,0xc5,0x40, + 0xe6,0x5c,0x9d,0xd3,0x6e,0xbd,0x92,0x5f,0xf7,0x77,0x91,0xd1,0xb2,0x9f,0xa6,0x67, + 0x38,0xc5,0xff,0x58,0xeb,0x53,0xda,0x03,0xbf,0x63,0xb0,0xc4,0x1b,0x24,0xb8,0x90, + 0x7c,0x3a,0xdb,0x76,0x8d,0x62,0x62,0x42,0xb7,0xef,0x17,0x6c,0xf9,0x2f,0x9e,0x0f, + 0x3d,0xcc,0xd7,0x83,0xcc,0x03,0xfd,0x30,0x9b,0x96,0x37,0x8e,0x19,0x2b,0x44,0x4a, + 0x2d,0x95,0x71,0xcd,0xbc,0x9f,0xe1,0x1f,0x40,0xd9,0xcf,0xd6,0x7d,0xfc,0x69,0x75, + 0xfa,0xca,0x6d,0x30,0xea,0x49,0x68,0xb3,0xfb,0xed,0xcf,0xcf,0xc8,0x7f,0xc9,0x35, + 0xba,0x7b,0x3f,0x7b,0xff,0xe7,0xa4,0x2a,0xdd,0x1f,0x0b,0x5d,0xe2,0x40,0xda,0xfe, + 0xfe,0xb6,0xfc,0x97,0x89,0x7f,0xae,0x27,0x83,0x4a,0x3d,0xa8,0xfa,0x72,0x95,0xdd, + 0x46,0xc1,0x39,0x3f,0x19,0xf8,0x27,0xca,0xf1,0x00,0x6e,0xac,0x76,0x8c,0xba,0x37, + 0x84,0x4e,0x6b,0x5d,0xdd,0x5c,0xff,0x63,0xf1,0x21,0x19,0xfc,0x4f,0x8c,0xe3,0x9f, + 0xc1,0xe8,0x87,0x50,0x97,0x2c,0xa9,0xfc,0xea,0x71,0xfd,0xf9,0x78,0xd3,0x08,0x5e, + 0x81,0x0f,0xb3,0xf4,0x3f,0x88,0x7f,0x84,0x25,0xba,0xfb,0x1b,0xb8,0x7e,0xe4,0x96, + 0x13,0x2b,0x3f,0x10,0x2f,0x1b,0xdf,0xd7,0x58,0x3e,0xfe,0x67,0x82,0xd6,0xf1,0xcf, + 0x96,0x2d,0xbc,0xba,0xa1,0x4d,0xdb,0xd4,0xf7,0x18,0xca,0x61,0x33,0x66,0xdf,0xbf, + 0x38,0xf0,0xcf,0x73,0x80,0x22,0x81,0xd2,0x59,0xd0,0xeb,0xaf,0x4c,0xc8,0xff,0xd3, + 0x37,0x48,0xbb,0x54,0xee,0x51,0x6d,0xfc,0x8f,0xf9,0x7c,0x9d,0x05,0xd8,0x9f,0xd0, + 0xca,0xe4,0x8a,0x0d,0xa5,0x3f,0x14,0x0e,0xd0,0xca,0x61,0xd7,0xea,0x9d,0xa7,0xdb, + 0x37,0x75,0x59,0x19,0x31,0x34,0x42,0x8e,0xfc,0x17,0xc3,0x3f,0x31,0xe4,0xf3,0x91, + 0x5f,0x55,0xfb,0xdb,0x1a,0xd0,0xb1,0x0b,0x1e,0xc7,0x7c,0xda,0xf3,0x5f,0x23,0xf0, + 0x0e,0x03,0xb1,0x5e,0xd5,0x8b,0x40,0xa8,0xae,0x63,0xf6,0x2e,0x11,0x15,0x41,0xd7, + 0x98,0x88,0xe8,0x6e,0x34,0xec,0xf8,0x87,0xc5,0x23,0x0d,0xe3,0x51,0x01,0xe6,0x83, + 0x2e,0x41,0x49,0x97,0xa8,0xbb,0xc6,0x6f,0x6a,0x4e,0x23,0xa2,0x2c,0xfe,0xe7,0x6d, + 0x16,0xe6,0xa6,0x7d,0x9f,0x85,0xc5,0x0f,0x18,0xfe,0x59,0xf9,0xd8,0x8c,0x35,0xd2, + 0x51,0x32,0xdb,0xce,0x0f,0x38,0xf1,0x8f,0xcc,0xe3,0xef,0xf6,0xdb,0xab,0x39,0xed, + 0xe3,0xaa,0x63,0x6e,0xe4,0xa7,0x61,0x2e,0x04,0xca,0xc5,0xff,0x48,0x16,0xff,0xb3, + 0x86,0xdf,0xef,0x8f,0xfa,0xd6,0x40,0x0f,0x0d,0x20,0xfe,0xb1,0xe9,0x7f,0xcc,0x7f, + 0x36,0xfc,0x23,0x61,0xb6,0x6b,0xb9,0x1c,0x2d,0x94,0x62,0x3b,0xd8,0x95,0x22,0x1b, + 0x1f,0x72,0xc4,0xba,0x7f,0xb1,0x1c,0x86,0x8b,0x5c,0xdd,0x54,0x15,0x96,0xfa,0xd4, + 0xb8,0xbc,0x92,0x8a,0x61,0x9a,0x30,0xf4,0x27,0x6c,0xbc,0x85,0x7c,0xbc,0xc7,0x89, + 0x85,0x7f,0xae,0xdd,0x85,0xb2,0x1f,0x6d,0x55,0x74,0xc6,0x30,0xd7,0xff,0x18,0x40, + 0x48,0x32,0x8c,0x1c,0xfc,0xcf,0xf4,0x61,0xe1,0xb2,0xa1,0x17,0xaa,0x86,0x0b,0x0b, + 0x67,0x33,0xfc,0x26,0xfc,0x5e,0xba,0x20,0x34,0x6a,0x79,0xf8,0x9f,0x0a,0xc4,0x3f, + 0x8d,0x0c,0xff,0xb8,0xc3,0xb0,0x38,0x58,0x5b,0x2a,0x53,0x72,0x46,0xef,0x43,0xb7, + 0x9c,0x93,0xff,0xe1,0xf8,0x07,0xf9,0xae,0x20,0x59,0x06,0x7b,0xd5,0x75,0x2b,0x67, + 0x2a,0xa5,0x03,0xd1,0x83,0x10,0x58,0x2e,0xdb,0xc7,0x6b,0xcf,0x7f,0xb1,0x8f,0xb4, + 0x86,0xcf,0x27,0xe6,0x1f,0xb5,0x22,0x06,0x44,0xe1,0xa0,0xef,0x0b,0x9a,0x2b,0x3d, + 0x9f,0xa5,0x2f,0x38,0xf2,0x5f,0x07,0x0d,0xfd,0x0f,0x7b,0x7f,0xd2,0xbc,0xf4,0x1f, + 0xf0,0xb5,0x3f,0xf8,0x5a,0xf3,0x52,0xfe,0xfe,0x37,0x40,0x86,0xfe,0xe7,0x49,0x65, + 0x97,0x4d,0xf6,0x43,0xac,0xfc,0x57,0x9d,0x83,0xff,0x79,0x87,0x9a,0xcf,0x37,0xf0, + 0x4f,0x9d,0xc1,0xbf,0xa1,0xd1,0xd6,0xd1,0x99,0x54,0x4e,0x68,0xcd,0x4e,0xfe,0xc7, + 0x91,0xff,0x3a,0x8b,0x22,0x9f,0xdf,0x87,0xfc,0xd2,0x21,0xa1,0x81,0xca,0x7b,0xc8, + 0x88,0x7c,0x1f,0xd4,0x76,0x20,0xff,0xe3,0x49,0x41,0xa3,0x84,0x62,0xfa,0x07,0xcc, + 0x7f,0xed,0x88,0xa9,0xfa,0x4c,0x70,0xe1,0xc6,0x7c,0x2e,0x03,0x42,0x85,0x2c,0x70, + 0x33,0x37,0xe5,0xe0,0x7f,0x54,0x7b,0xfe,0xeb,0x29,0x9d,0x7d,0xbf,0xed,0x84,0x01, + 0x21,0x5a,0x8d,0xb4,0xcf,0x69,0x0e,0x0c,0x8a,0xd6,0x17,0x5a,0xdf,0xaf,0x33,0xff, + 0x75,0x89,0xee,0x4d,0x7a,0xdb,0xc4,0xd9,0x0c,0x78,0x7c,0xe6,0xdc,0xe7,0x37,0x54, + 0x4d,0x4a,0xff,0x8c,0xb0,0xc7,0xc6,0xff,0x38,0xf3,0x5f,0x3c,0x89,0xa3,0xa0,0xf7, + 0x58,0xd3,0x3c,0xe4,0xda,0xdf,0x39,0xaa,0x5e,0x5c,0xdb,0xfc,0xcf,0x0e,0xfe,0xc7, + 0xf2,0x3f,0x5a,0xc1,0x15,0xed,0x23,0x8c,0x5f,0x4f,0x88,0x77,0x6b,0x93,0x83,0x75, + 0xc3,0x9e,0x27,0xd8,0xf8,0x5f,0xa6,0xf5,0x63,0xd3,0xc6,0xc5,0xb3,0x30,0x11,0x6d, + 0x4e,0x7a,0x2f,0x64,0xe4,0xbf,0xf6,0xa1,0x48,0xe9,0xff,0x16,0x4f,0xd3,0xe7,0x40, + 0x4d,0xba,0xfe,0x9a,0x9c,0xd6,0xb7,0xd2,0x79,0x23,0xec,0xb5,0x4f,0x1b,0x5b,0x4b, + 0x3b,0xff,0x43,0xe1,0x31,0xa9,0x01,0xfd,0x55,0x88,0xa0,0xf0,0x49,0xd5,0xe5,0x10, + 0x39,0xa5,0xfc,0xa3,0xa7,0x12,0x89,0xa0,0x53,0x0a,0x8e,0x77,0xc5,0xfa,0x50,0xd2, + 0xf2,0x3f,0x61,0x86,0x7f,0xf6,0xb1,0xdb,0xdc,0xc0,0x60,0xd2,0x61,0x08,0xeb,0xae, + 0x22,0x36,0x9f,0x3b,0xfb,0xd7,0x72,0xff,0xa3,0xa4,0xe6,0x33,0x9d,0xff,0xf2,0x33, + 0xfc,0x13,0x67,0x61,0xcb,0x0b,0xcc,0x7f,0x72,0xda,0x67,0x1b,0x73,0xb3,0x4f,0x3e, + 0x5c,0xe5,0x88,0x5f,0xc7,0x1c,0xf8,0xe7,0x22,0x5e,0xec,0x9a,0x81,0xbf,0x5e,0xd1, + 0x57,0x6d,0x7b,0x78,0x94,0xbc,0x66,0xe7,0x7f,0xae,0xcb,0xc4,0x3f,0x97,0xb4,0x7a, + 0xdd,0x3b,0x88,0x7a,0x06,0xb2,0xb0,0xdf,0x93,0x14,0x07,0xe5,0x53,0xb0,0x28,0xed, + 0xcf,0x57,0x21,0xff,0x63,0xe5,0xbf,0x18,0xfe,0x39,0x84,0xf9,0x97,0x2d,0xbe,0x00, + 0xa7,0x7d,0xe4,0x1f,0x95,0x8e,0x42,0x77,0xdb,0x1d,0xce,0xf8,0xeb,0xc8,0x7f,0x7d, + 0x1f,0xef,0xa7,0x91,0x3d,0xc6,0xfd,0xdb,0xd8,0x6d,0xdf,0x2f,0xab,0x71,0xdc,0x6f, + 0xe3,0x7f,0xc0,0x03,0xfb,0xc2,0x6c,0x7e,0x08,0xf1,0x50,0xe6,0x9f,0x07,0xe5,0x52, + 0x32,0xa8,0x76,0xc8,0x5c,0x0f,0xcc,0x10,0x91,0x6a,0xe0,0x81,0x02,0x73,0x3d,0x80, + 0xbc,0xae,0xe8,0xe4,0xda,0x3a,0x44,0x77,0x7b,0xba,0x26,0xa1,0xf7,0xd8,0x96,0x48, + 0xe7,0xa5,0xb6,0x13,0xed,0xf5,0x27,0x71,0xbc,0x74,0xc2,0x6f,0xc4,0x77,0x07,0xff, + 0x73,0x51,0x65,0x41,0x6a,0xa9,0x38,0xaa,0x4d,0x92,0x96,0xc4,0x02,0x9d,0x0d,0x73, + 0x5c,0x68,0xc6,0xb4,0xd7,0x25,0x0d,0x15,0x1d,0xc8,0xff,0x48,0x69,0xbc,0x71,0x05, + 0x26,0xba,0x38,0xc8,0x39,0x2b,0xbd,0x51,0x59,0x3f,0xc8,0x56,0xcb,0x1b,0x65,0xbf, + 0xeb,0xa8,0xfb,0x45,0xe0,0x23,0xb1,0x09,0x5e,0x4e,0xe1,0x9f,0x34,0x3e,0xb1,0xf1, + 0x3f,0xf0,0x3f,0xa2,0x9f,0x7e,0xc9,0xbd,0x8f,0x8c,0xd2,0x9e,0x6a,0x5f,0x87,0xeb, + 0x63,0xd2,0x14,0xe3,0x40,0x25,0x3b,0xff,0x95,0x8a,0xe6,0x0f,0x83,0x3f,0xd1,0x1a, + 0xf4,0xb1,0xfd,0xb8,0xac,0x76,0xcb,0x75,0xc4,0xd3,0xf5,0xb8,0x89,0x7f,0xcc,0xbf, + 0xaf,0x8d,0xff,0x19,0x55,0x7e,0x8a,0x69,0xc4,0x78,0x68,0x54,0xe9,0x81,0x18,0xca, + 0x84,0x02,0xf0,0x53,0xc8,0xc8,0x7f,0xe9,0xe5,0xa3,0x8a,0x85,0x87,0x5f,0x97,0x1a, + 0x91,0xf6,0x19,0x85,0x33,0xd1,0x73,0x9a,0x27,0x2e,0x06,0x0c,0xe9,0x0e,0xea,0x9f, + 0xd3,0xfb,0x97,0x67,0xe4,0xe7,0xd2,0x78,0x78,0x01,0xfe,0xf5,0x2f,0xc1,0x65,0xda, + 0xa2,0xda,0xe3,0xbb,0x3d,0xff,0xb5,0x47,0xb6,0xf8,0xc6,0x5f,0x33,0x58,0xb5,0x05, + 0x8d,0xa3,0x72,0x03,0x61,0xcf,0xf7,0x68,0x2f,0x42,0xf3,0x60,0x49,0x3c,0x07,0xff, + 0x53,0x14,0x67,0x0b,0x75,0x2b,0x4f,0x7b,0xb1,0xff,0x67,0xb3,0xea,0x6b,0xab,0x18, + 0xeb,0xfc,0xdf,0xf2,0x8b,0xe8,0x58,0xe2,0xb9,0xf9,0x9f,0x2d,0x5c,0x26,0x27,0x23, + 0x90,0xeb,0x80,0xea,0x76,0xb9,0x29,0xf2,0x80,0x8f,0x5d,0x19,0x72,0xd9,0xf1,0xcf, + 0x78,0x2a,0xff,0x85,0xd9,0x1f,0xfa,0x08,0x9d,0x3f,0x22,0x6f,0x28,0x7c,0x96,0x6e, + 0x8d,0xdc,0xe6,0x97,0x11,0x0f,0x6c,0x8a,0xcd,0x1f,0x81,0x0c,0xfc,0x23,0x7d,0x48, + 0xbf,0xd3,0xef,0x5d,0x22,0xfe,0x8c,0xbd,0xff,0x1d,0x49,0xf9,0xb0,0xf8,0x00,0x7d, + 0x9e,0x36,0x04,0xda,0xe3,0x78,0x85,0xf9,0x87,0x12,0x07,0xfe,0xf9,0x7b,0x83,0xff, + 0xb9,0x1f,0x67,0xe3,0x7d,0xf9,0xee,0x17,0xd8,0x6c,0x7c,0x27,0x34,0xa9,0xb4,0x2c, + 0x65,0xc6,0xdd,0x39,0xf0,0x8f,0x60,0xdb,0x8f,0x30,0x98,0xc4,0x69,0x6a,0xf1,0x45, + 0xa9,0x4e,0x5f,0xb5,0xbf,0x73,0xbe,0xce,0xa5,0xd1,0x7d,0x6e,0x57,0x3a,0xff,0xf5, + 0xa0,0xa9,0xff,0x41,0xb4,0xe3,0x9f,0x3f,0xc0,0x69,0xf3,0x8d,0xd0,0x41,0x19,0x02, + 0x9c,0xed,0xdb,0x64,0xfc,0xb4,0xcf,0x91,0xff,0x32,0x40,0x0e,0xe7,0xbb,0x02,0x23, + 0xae,0x0d,0xe4,0x0a,0x7c,0x37,0x52,0x19,0x9b,0x79,0x17,0xf9,0x21,0x45,0x05,0xd4, + 0x8a,0x0d,0x21,0xc8,0xd6,0xff,0xb0,0xf5,0x26,0xf7,0x9a,0x34,0xfe,0xa3,0x82,0x3a, + 0xe0,0x0e,0xba,0xb6,0x30,0x20,0xca,0x7f,0x7a,0xc8,0xaa,0x17,0x48,0x96,0x67,0xf0, + 0x3f,0x5e,0x83,0xff,0xe9,0xdd,0xc1,0x8c,0xdd,0x86,0x34,0x3a,0x26,0x2e,0x96,0xac, + 0xf9,0x84,0xa4,0x60,0xea,0x51,0x53,0xd1,0x67,0xc6,0x19,0x69,0xc4,0x7e,0x65,0x6b, + 0x76,0xfe,0x8b,0x27,0x41,0x0c,0x83,0x85,0x45,0x54,0x44,0xf7,0x69,0x7b,0x50,0x08, + 0x7d,0x54,0xd9,0xa7,0x95,0x64,0xe0,0x1f,0x9e,0x2f,0x4b,0xf1,0x0f,0x77,0x20,0xec, + 0xa9,0x76,0x15,0xa1,0xfe,0x27,0x3a,0x63,0x0d,0x6c,0xa6,0x3c,0x23,0xe6,0xcc,0x7f, + 0x3d,0x9a,0xc6,0x3f,0x01,0x54,0xa7,0x74,0xa9,0x9b,0x29,0x97,0xa9,0x48,0xb0,0x59, + 0x08,0x63,0xe0,0x76,0xf2,0x3f,0x3b,0x52,0x6a,0x67,0x04,0x06,0xcb,0x8b,0xf0,0xb6, + 0x0e,0x5a,0xbd,0x42,0x2e,0x3d,0xb2,0x2c,0xd6,0x09,0x19,0xfa,0x1f,0xe4,0x7f,0xb6, + 0xf3,0xd1,0xb1,0xff,0xd1,0x71,0xb5,0x56,0x66,0x61,0x37,0x06,0xba,0xd8,0x28,0xcb, + 0x11,0x11,0x22,0x6d,0x2c,0x22,0x97,0x60,0xfe,0xcb,0x7c,0x9f,0x13,0xd7,0xda,0xf9, + 0x1f,0x84,0x3d,0x0f,0x75,0xbe,0x1a,0xbb,0x5c,0xb3,0x88,0x19,0x8f,0x23,0xff,0x33, + 0x7b,0xf9,0x34,0xa5,0x35,0x37,0xff,0x03,0x47,0x3d,0x35,0xa1,0x92,0x07,0x99,0xf1, + 0x22,0xdb,0xf6,0x7a,0xbe,0x27,0xee,0xa2,0x2f,0x91,0x16,0x84,0x46,0x2f,0x94,0x9a, + 0xdf,0xfb,0x06,0x8b,0xff,0x61,0xaf,0xd1,0x0d,0xbe,0x0a,0x86,0x7f,0xf4,0x0e,0x0a, + 0x3e,0xb9,0x7b,0x93,0x6b,0x21,0xed,0x66,0x6f,0xe8,0xd0,0x3f,0x1b,0xfc,0x8f,0x31, + 0xde,0x9d,0x1d,0xe0,0x0f,0xb9,0x4a,0xc9,0xab,0xfe,0x8d,0x52,0xe5,0xcd,0x72,0x3b, + 0x29,0x47,0xc7,0x1b,0x72,0xe6,0xbf,0xd2,0xfc,0x4f,0x17,0xe7,0xd3,0xe4,0x68,0x68, + 0x80,0xdc,0xaf,0x54,0x69,0xf2,0x10,0xb9,0x9e,0x5d,0xe1,0x54,0xdb,0x9b,0xb9,0xf9, + 0x9f,0xa3,0x04,0x65,0x3c,0x22,0x12,0x71,0xfb,0xda,0x02,0xd1,0x19,0xbb,0x08,0x4a, + 0xdf,0xa7,0xd9,0xf1,0xcf,0x88,0x50,0x9d,0xbe,0xff,0x1b,0x02,0x02,0x45,0x71,0x98, + 0xf0,0x8c,0xa1,0x22,0x0e,0x4c,0x37,0x7e,0xaa,0xba,0x98,0x83,0xff,0xf9,0x22,0xa2, + 0x9d,0x06,0xb8,0x9f,0xb6,0x8e,0xc1,0x29,0xa8,0x57,0x3c,0xba,0x38,0x56,0xc1,0x80, + 0x68,0x61,0xee,0xfc,0x17,0xf2,0x3f,0x87,0xb8,0xec,0xa7,0x74,0x84,0xeb,0x7f,0x3e, + 0xbf,0x33,0x34,0xa2,0x3d,0x00,0x0b,0xe2,0xee,0xa4,0x3d,0xff,0x95,0xf6,0x3f,0xf8, + 0xe1,0x54,0xf7,0x73,0x22,0xe8,0xb0,0x54,0xf3,0x4a,0x22,0xe8,0xdb,0xcc,0x19,0xa1, + 0x99,0x6a,0xae,0xfc,0x17,0xfb,0x6c,0xe9,0x22,0x98,0x93,0x68,0xfb,0x46,0xe9,0x10, + 0xec,0x12,0xe6,0x41,0x91,0x56,0xf8,0x2a,0x2a,0x82,0xc0,0x1d,0xb6,0xe7,0xbf,0xba, + 0x67,0x9b,0x20,0xe7,0x0d,0xb5,0x97,0x2e,0x4a,0x16,0x7f,0xbb,0xea,0x24,0x9c,0xa7, + 0x4b,0x10,0xff,0x5c,0x24,0xcb,0xf0,0xa7,0xb5,0xe2,0x3b,0xaa,0x95,0xff,0xba,0xd6, + 0xd2,0xff,0xbc,0x47,0xd9,0xc6,0xf3,0xc4,0xaa,0x7d,0xe2,0xb0,0xfc,0x3a,0x3c,0x8d, + 0xdf,0xd7,0xef,0x83,0xe3,0x86,0x14,0xff,0x48,0x97,0x39,0x3f,0xb0,0xf1,0x8a,0x92, + 0xda,0xa4,0xb3,0xdd,0x7a,0x67,0xfd,0x47,0x2c,0x7e,0x9d,0x85,0x17,0x69,0xdd,0x8f, + 0x3c,0x27,0x30,0xe3,0x83,0x8e,0x7d,0xad,0x08,0xd4,0x91,0xff,0x8a,0xb1,0xf7,0x0f, + 0xc2,0x29,0xed,0x2d,0x68,0x1a,0x91,0x83,0xa5,0xbf,0x7d,0xa5,0x6b,0xd7,0xbc,0xb5, + 0x25,0x49,0x17,0xf0,0xf1,0xb2,0xf7,0xaf,0x59,0x66,0x3d,0x1f,0xf9,0x9f,0xf4,0xee, + 0x4c,0xd5,0x5d,0xeb,0xaf,0x3a,0xf1,0x50,0x97,0xfa,0x75,0xca,0x11,0x60,0x97,0x31, + 0x5e,0xc8,0xe4,0x7f,0x52,0xf3,0x29,0x05,0xfa,0x2b,0x82,0xec,0x43,0xee,0x24,0x81, + 0x76,0x97,0x5a,0xaa,0x1a,0x1b,0x5b,0x95,0xc8,0x36,0xfe,0x27,0x60,0xf1,0x1b,0xcc, + 0xb8,0x53,0x3f,0x3e,0x26,0x0e,0x17,0xbe,0x48,0x9b,0xb5,0xad,0x31,0x51,0x25,0x09, + 0x43,0xcf,0x53,0x93,0x2b,0xff,0x35,0xca,0xa2,0xdb,0x5d,0x7a,0x09,0xe6,0xbf,0x46, + 0x94,0xd5,0x11,0xef,0x36,0x71,0x54,0xe1,0x5b,0xb3,0x58,0x8e,0xfc,0x57,0x6a,0xbf, + 0x7f,0x03,0x73,0xec,0x33,0x30,0xd1,0x57,0xa5,0xed,0x49,0xce,0x58,0x0f,0xef,0xd3, + 0x5e,0x94,0x46,0x3b,0xf2,0x5f,0xa9,0xf8,0x65,0xa0,0x97,0x7e,0x16,0xad,0x9a,0x94, + 0x4d,0xf0,0x78,0x57,0xc5,0x90,0xab,0x29,0xd4,0xa3,0xf9,0x80,0x2d,0xad,0x64,0x2e, + 0xfe,0xc7,0x08,0xdc,0x6c,0xfd,0xac,0xd1,0x7a,0xa4,0xe5,0xcc,0xd3,0x90,0x6a,0x39, + 0x16,0xf6,0xc1,0xcc,0x58,0x66,0xfe,0x2b,0x68,0xf0,0x8d,0x5a,0x3d,0x04,0x8e,0xb0, + 0xf9,0x91,0x0b,0xba,0x55,0x75,0x80,0x39,0x6a,0x59,0xa3,0x08,0x1d,0x55,0xdb,0xfe, + 0x0b,0x3c,0x29,0xfd,0xcf,0x5e,0xf1,0xe7,0x6c,0xe0,0x4b,0x4e,0x15,0x9f,0x17,0x6f, + 0xeb,0xd6,0x2b,0x16,0x5f,0x23,0x53,0x71,0x19,0xbc,0xab,0xd4,0x95,0xb1,0x89,0xd2, + 0x2d,0xff,0x13,0x2b,0x66,0xf1,0x4b,0x69,0xd1,0x8b,0xcf,0xf1,0x68,0xce,0xfe,0x8b, + 0xe7,0x22,0x97,0x7e,0x6b,0xcc,0xc0,0x8c,0x71,0x83,0x11,0x4a,0x8a,0x23,0xd3,0xec, + 0xf8,0xe7,0x32,0x5b,0x96,0xde,0x0a,0xf1,0x9b,0xca,0x79,0xda,0xb0,0xcb,0x73,0x4e, + 0x5c,0x47,0x51,0xf6,0x53,0xc2,0xf1,0x33,0x6d,0xce,0xe0,0x7f,0x18,0xfe,0x79,0x9b, + 0x72,0xfd,0x8f,0x0f,0x46,0x3a,0x7c,0xdd,0xf2,0x07,0xad,0x77,0xa3,0x10,0x5a,0xcf, + 0xcf,0xff,0x1c,0x24,0x9c,0xff,0xd1,0x98,0xe3,0x0a,0x74,0xbb,0x82,0x37,0x7b,0xda, + 0x19,0xec,0x79,0x7e,0x66,0x6e,0xfe,0x87,0xe1,0x9f,0x83,0x0a,0xd7,0xff,0xdc,0x06, + 0x7d,0xb4,0x66,0xa7,0x2b,0x4e,0xd6,0x65,0xf1,0x27,0x63,0x8e,0xfc,0xd7,0x87,0xc8, + 0xff,0x6c,0x17,0xc3,0x10,0x8f,0x35,0xc7,0x6b,0x4d,0xd8,0x53,0x62,0xc3,0xcf,0x43, + 0x8e,0xfc,0x17,0x1b,0x9d,0xce,0x9c,0xea,0x5e,0xb6,0x94,0x50,0x06,0x2f,0x9e,0x72, + 0x28,0xc4,0x38,0xff,0x63,0xcf,0x7f,0xc1,0x44,0x8c,0x3f,0xe4,0x71,0x38,0x01,0x88, + 0xaf,0x66,0x04,0x94,0x17,0xed,0x78,0x3b,0x53,0xff,0x23,0xf1,0x97,0x54,0x68,0x2d, + 0xf3,0xcf,0x44,0xef,0x1c,0x23,0x4d,0x24,0x9b,0xff,0x31,0xd7,0x03,0xe2,0x9f,0x07, + 0x31,0xe9,0x39,0x2b,0x42,0x69,0x14,0x5c,0xe0,0x46,0x9a,0x91,0xbb,0x9d,0xbc,0xfc, + 0xcf,0x53,0x5c,0xff,0x1c,0x2a,0x85,0x2d,0xb4,0x32,0xd9,0xb3,0xb8,0xb0,0x64,0xe9, + 0x26,0x43,0xf6,0x73,0x9a,0xe6,0xd4,0xff,0xfc,0xca,0xd0,0xff,0x44,0x60,0x08,0x16, + 0xaf,0xf5,0x06,0x5b,0x4b,0xb4,0xe7,0x29,0xe7,0x7f,0x8e,0xd3,0x0f,0x0d,0xc3,0xc9, + 0xff,0x5c,0x36,0xf4,0xcf,0x43,0xda,0x28,0x2c,0x19,0x58,0x35,0xe6,0xfe,0x39,0x4c, + 0x2a,0xcd,0x53,0xe8,0x7f,0x78,0xfe,0x51,0x11,0x7d,0x32,0x43,0x0b,0xaa,0xa7,0xb7, + 0xf5,0xbd,0xf6,0xd7,0xd9,0x95,0xad,0x71,0xf1,0x38,0x3c,0x4f,0x83,0xc9,0xdc,0xfa, + 0xe7,0xf6,0x4f,0x2b,0xca,0xbd,0xb0,0x40,0x93,0xef,0x64,0xc3,0x44,0xd8,0x23,0xae, + 0x87,0x53,0x64,0x13,0xdb,0x6a,0xf9,0x33,0xf5,0xcf,0x4f,0xd1,0xaf,0x27,0x8b,0x4e, + 0x90,0x5e,0xd4,0x7b,0x87,0x8b,0x18,0x10,0x42,0xe0,0xc7,0xf9,0x9f,0xe9,0x9b,0x72, + 0xeb,0x9f,0xd7,0xe1,0xfe,0x2b,0xa2,0x46,0x92,0x81,0xf0,0xe7,0x38,0xb1,0x6f,0xf2, + 0x8d,0x9d,0x86,0x10,0xe8,0x15,0xc9,0xfc,0x5e,0x4c,0xfd,0x73,0xf1,0xef,0xc5,0x83, + 0xf2,0xf1,0x58,0xcb,0x43,0xc5,0x0c,0xff,0x28,0x27,0x4d,0x20,0x74,0x8c,0x6d,0x16, + 0xb9,0xfe,0xd9,0x9a,0x4f,0xcc,0x7f,0x2d,0x6d,0x66,0xf1,0x57,0x50,0xd9,0x9f,0xa5, + 0x99,0x94,0x18,0xdb,0xf0,0xbb,0x53,0x08,0x21,0xa7,0xfe,0x47,0xc5,0xfa,0xaf,0x19, + 0xc3,0x6c,0xe3,0x3f,0x1b,0x89,0x02,0x09,0xde,0x16,0x1a,0x58,0x98,0x9b,0x91,0x9b, + 0xff,0x81,0x83,0x2a,0x8b,0xbf,0x4a,0x64,0x8e,0xc9,0x36,0xec,0x82,0xcd,0x19,0xf5, + 0x5c,0x39,0xf4,0x3f,0x71,0x62,0x05,0x6e,0x53,0x11,0x9d,0xab,0xfe,0xcb,0xe2,0x7f, + 0xa2,0x6c,0x99,0xa5,0x84,0xd0,0x5d,0xb1,0x0e,0x0b,0x11,0x65,0xd6,0x7f,0x71,0xfd, + 0x8f,0x31,0xa8,0x54,0x20,0x8e,0x88,0x2a,0xc5,0xfc,0x8b,0x9d,0xef,0x3a,0xee,0xd0, + 0xff,0x70,0x3e,0x67,0x4c,0x7c,0x15,0x17,0x12,0xcf,0x7f,0x49,0x17,0x84,0xe6,0xe5, + 0xab,0x0c,0x7e,0x63,0x36,0xe2,0x01,0x1b,0xff,0x23,0x0c,0xb3,0x6d,0x69,0x09,0x03, + 0x39,0xd3,0xf6,0xc3,0x99,0x02,0xa4,0x4d,0x3a,0x39,0x42,0x68,0xe7,0xf5,0x62,0x97, + 0x51,0x1a,0x1d,0xb5,0xe1,0x1f,0xcc,0x7f,0x2d,0x36,0xf0,0x8f,0xca,0x81,0x90,0xe7, + 0xde,0x08,0x37,0x10,0xf6,0xe4,0xa8,0xff,0x62,0xf8,0x47,0x5a,0x68,0x54,0x6f,0x75, + 0xc1,0x0e,0x21,0xb0,0x7c,0xa6,0x42,0x0a,0x14,0x36,0xcc,0x36,0x77,0x6e,0xfe,0x07, + 0xf1,0x4f,0x29,0xd7,0xff,0xec,0xd2,0x0e,0x6a,0x48,0xa3,0xb9,0x72,0xd4,0xd3,0x65, + 0xe1,0x9f,0x92,0x32,0xf2,0xe3,0xae,0xb7,0xa1,0x19,0xd3,0x58,0xd5,0xce,0x0c,0x97, + 0x83,0xff,0xb1,0xf2,0x5f,0xdb,0xc5,0xb9,0xdc,0xf8,0x27,0x25,0x35,0x2d,0xb6,0xfb, + 0xab,0x1c,0xf9,0x2f,0x13,0x6f,0x9f,0x81,0x11,0xad,0x8e,0x45,0xf4,0xf4,0xb4,0xe7, + 0xd1,0xff,0x3c,0x8b,0xf8,0xe7,0x1d,0xf6,0xac,0xfb,0xe0,0x2a,0x5a,0xc2,0x81,0x90, + 0x64,0x21,0xa2,0x4c,0xfd,0x0f,0xe2,0x1f,0x63,0xd3,0x3d,0x48,0x1f,0x07,0xb5,0xbf, + 0x35,0x18,0xb2,0x47,0x70,0x53,0xff,0x63,0xcf,0x7f,0x3d,0xc5,0xf1,0x4f,0xe1,0x2b, + 0x0c,0xe9,0xcf,0x19,0x70,0x7d,0x93,0x03,0x83,0xe2,0x01,0xb7,0x43,0xff,0x63,0x3e, + 0xdf,0xd0,0xff,0xdc,0x98,0x5c,0xb5,0xa1,0xf5,0xa4,0xf2,0x16,0x5d,0x38,0xe2,0xbd, + 0x1b,0x69,0x9f,0x8e,0x6b,0x47,0xbc,0x76,0xfd,0x8f,0xb9,0xdc,0x38,0xfe,0xb9,0x90, + 0x22,0xed,0xd1,0xb1,0x0c,0x79,0x9f,0xee,0x64,0x1e,0x46,0x6a,0x3e,0xe9,0xe0,0x7f, + 0xd2,0xfc,0x3f,0xd7,0x3f,0x73,0xd9,0x4f,0x23,0x4c,0xd2,0xba,0xf3,0x25,0xe3,0xad, + 0xcd,0x58,0xf6,0xe5,0xd4,0xff,0x38,0xf8,0x9f,0x33,0x49,0xf6,0x92,0xff,0xb3,0x90, + 0xaa,0x07,0xe0,0x33,0x23,0xf2,0x7a,0xf1,0x2b,0xd0,0x1b,0x5f,0x87,0xfa,0x1f,0xeb, + 0xfd,0x9d,0xf9,0xaf,0xa7,0xe5,0x79,0xba,0x6b,0x8c,0xac,0xd6,0x9e,0x83,0xaa,0x01, + 0x76,0xdb,0xad,0x14,0x6f,0xab,0x30,0xee,0x67,0x3f,0x65,0xea,0x7f,0xf6,0xa2,0xb7, + 0x69,0xf2,0xf5,0x43,0xaf,0x16,0x48,0xb6,0x05,0xc9,0x4a,0xa1,0x17,0x2b,0xa4,0x6c, + 0xf3,0xe9,0xcc,0x7f,0x7d,0xc8,0xc2,0x4a,0x49,0xac,0xf3,0x76,0x38,0xac,0x54,0x8d, + 0x95,0x8c,0x89,0xeb,0x14,0xdc,0x81,0xca,0x6c,0xbc,0x05,0x13,0x42,0x23,0x06,0x32, + 0x67,0xfe,0xeb,0x6d,0x64,0xe3,0xf7,0xcd,0x88,0x31,0x7c,0xd8,0x30,0xc8,0xbc,0xb7, + 0x7d,0x07,0x6a,0x14,0x82,0x39,0xf9,0x9f,0xcb,0x50,0xdf,0xcf,0xbe,0xc7,0x20,0xf3, + 0xde,0x4b,0xf4,0x82,0xb1,0xaa,0x26,0xb8,0x87,0x05,0x3e,0x4b,0xff,0x53,0x6c,0xe7, + 0x7f,0x30,0xff,0xf5,0x28,0x65,0xf1,0xb7,0x89,0x3c,0xae,0xbe,0xcb,0xf5,0x3f,0x21, + 0xac,0xf0,0x9a,0x9b,0xd2,0xff,0x64,0xd5,0x7f,0x09,0x0c,0xff,0x74,0xf9,0xb0,0x5e, + 0xcc,0xc7,0x65,0x63,0xae,0xb8,0x0b,0x11,0xd1,0x1d,0x53,0xe8,0x7f,0x1e,0x54,0x63, + 0x7a,0x4f,0x3c,0x44,0x71,0x36,0x8e,0xb0,0xd9,0x28,0xde,0xd8,0x5b,0x57,0xfd,0x4a, + 0x91,0x03,0x0f,0x58,0xd3,0x5f,0xbc,0x8e,0xe1,0x01,0x5e,0xc4,0xad,0xb6,0x1d,0x86, + 0x96,0x81,0x92,0xf5,0x62,0x20,0x36,0xe1,0xf9,0xcc,0xd1,0x59,0x0c,0x21,0xe3,0x8e, + 0x1b,0x2b,0x94,0x6d,0xf5,0x5f,0xd7,0x5e,0x82,0x7f,0xc5,0xfc,0x57,0x7b,0xe7,0x58, + 0xf7,0x5b,0xe4,0x7f,0x27,0x8a,0x51,0xc8,0xc1,0x0b,0x09,0xd9,0x78,0xf7,0x4c,0xa6, + 0xf4,0xcf,0x0e,0xfd,0xcf,0x84,0xb1,0x48,0xd8,0xee,0x9e,0x36,0x25,0xff,0x71,0x4c, + 0x6c,0x8a,0x4d,0xd2,0xeb,0x38,0xa2,0xd6,0x26,0x81,0x21,0xf6,0x4c,0xfc,0x73,0x38, + 0x52,0x9b,0xec,0xe9,0x13,0x7f,0xc6,0x06,0xde,0x98,0x94,0x2f,0x91,0x16,0xdc,0x96, + 0x26,0x57,0xf4,0x91,0x61,0x7a,0x50,0xf6,0x1d,0x71,0x65,0xe2,0x1f,0x1c,0x94,0xc8, + 0x47,0x27,0x32,0x3c,0xb9,0x10,0xf5,0x18,0xc0,0x11,0xd1,0xe0,0x74,0xf6,0xe9,0x25, + 0x8a,0x32,0xf1,0x8f,0x0d,0x4f,0xd6,0xe8,0x10,0x0f,0xed,0x61,0xfe,0xbf,0xa6,0xbb, + 0x07,0xfd,0xcf,0x42,0x94,0x76,0x64,0xe2,0x9f,0x54,0xfe,0x74,0x1d,0xd7,0x83,0x79, + 0x90,0x9f,0xf9,0x9d,0x81,0x58,0x86,0xe5,0xf1,0x30,0x4a,0x83,0xa6,0x0d,0xe5,0xd0, + 0xff,0x90,0x4b,0xbc,0xfa,0xef,0x67,0x63,0xe2,0x77,0xe0,0x3d,0xbd,0x3e,0xc9,0xa6, + 0xe5,0x3c,0x5c,0x61,0x0b,0xa3,0x04,0x81,0xa2,0xf9,0x7c,0x23,0xff,0x95,0x46,0x3b, + 0x03,0xec,0xf9,0x83,0xbc,0xac,0x7e,0x15,0x7b,0x3e,0xfa,0x1f,0x3d,0x9b,0xff,0x11, + 0x6c,0x68,0x87,0x45,0xe7,0x4b,0x70,0x90,0xd6,0x50,0xf7,0x77,0xd9,0xfb,0x1f,0xca, + 0xcd,0xff,0x54,0x5b,0xde,0x26,0xe9,0xba,0x01,0x8d,0xb6,0x6a,0x84,0xc1,0x48,0xa5, + 0x06,0x74,0x57,0x56,0xfe,0x2b,0x66,0x65,0x7f,0x16,0x20,0x1f,0x72,0x1a,0x0e,0x3d, + 0x34,0x6f,0x64,0xc5,0x06,0xf2,0x2a,0xec,0xef,0xe0,0x42,0xe8,0xcc,0xfc,0x17,0x4f, + 0x72,0x0d,0xc2,0x87,0xca,0x77,0x46,0x4a,0xea,0xaa,0x18,0xec,0xd9,0x1d,0x1c,0xf5, + 0x56,0x8b,0x83,0xda,0x39,0xf6,0xfe,0x85,0x99,0xf8,0x67,0x92,0xe1,0x67,0x6f,0x7c, + 0x1a,0xc7,0xcf,0x03,0x5f,0x67,0x13,0x1b,0x66,0xd3,0xd2,0xc5,0x10,0x23,0x1b,0xaf, + 0xd2,0x9c,0x1b,0xff,0xa4,0xe6,0xa7,0x49,0x2f,0xd9,0xff,0xfc,0x71,0xfa,0x3c,0xb0, + 0xf8,0x1e,0x53,0xdf,0xc4,0xd4,0x0f,0x4e,0x54,0xae,0xfa,0xaf,0x94,0xb7,0x41,0x19, + 0xa1,0x7a,0x2f,0xf9,0x9a,0xb6,0x62,0x3d,0xe1,0xfb,0xc7,0xcc,0xfc,0x17,0xf2,0x3f, + 0x73,0x70,0xbc,0x5f,0xe1,0x44,0x90,0xeb,0xdb,0x85,0xa7,0xe9,0x26,0x3a,0x2f,0xec, + 0x5e,0x4b,0x3e,0x82,0x8d,0x0c,0x1a,0xb9,0x73,0xd6,0x7f,0xb1,0xf9,0x94,0xd0,0xe8, + 0xc6,0x89,0x8d,0x14,0x04,0x54,0x8c,0x77,0x45,0x9d,0x6a,0x6d,0x66,0xfe,0x6b,0x37, + 0xfb,0xa3,0x34,0x20,0xda,0x59,0xcb,0x81,0x50,0x09,0xc2,0x9e,0x23,0xd0,0x18,0x43, + 0xfc,0x43,0xcf,0xd2,0xe6,0xcc,0xfc,0x97,0x3d,0xfa,0x48,0xcd,0x42,0x4a,0xf6,0xbc, + 0x53,0xc2,0x2b,0x02,0x9b,0x9f,0xdc,0xf9,0x2f,0x33,0xba,0x85,0x8b,0x1e,0xab,0x1f, + 0x56,0x2e,0x40,0x5d,0xd8,0x8a,0x77,0x25,0x51,0x92,0xb3,0xfe,0x0b,0xa3,0x6d,0x20, + 0x2c,0x6f,0xf7,0x0d,0xcb,0x07,0xb5,0x9a,0xb0,0x15,0x7f,0xb3,0xf8,0x1f,0x7b,0x74, + 0x6e,0xe3,0x78,0xe9,0xa0,0xfc,0x37,0xcb,0x7e,0x30,0x94,0xba,0x3f,0x8b,0xff,0x31, + 0x82,0x7e,0x21,0x8f,0xfe,0x4b,0xfd,0xa5,0x74,0x20,0xf6,0x14,0xcc,0xd3,0xd8,0x7e, + 0x76,0x00,0x16,0xfa,0x03,0xd9,0xfc,0xcf,0x88,0x3d,0xda,0xfe,0x8f,0xc8,0xd2,0x18, + 0xc5,0xb2,0xa3,0xad,0x3a,0x5e,0x51,0xb9,0x22,0xf7,0x78,0xa6,0xfe,0xd9,0x1c,0x6f, + 0x0b,0xea,0x5b,0x18,0x22,0x12,0x3e,0xc2,0x2b,0xaf,0xee,0xba,0x6c,0x64,0xc4,0x6c, + 0xf8,0xc7,0xc6,0xff,0x78,0xf0,0x7e,0xd7,0x2b,0x9d,0xe7,0x95,0x7f,0x83,0x7d,0xec, + 0x4a,0xeb,0x30,0x1c,0xf5,0xd7,0x2d,0x2b,0xce,0xd4,0x3f,0x8f,0xa4,0xf4,0x3f,0x1c, + 0xed,0xc8,0x5d,0x21,0xac,0x08,0x63,0xdb,0x52,0x9d,0xe8,0xb1,0x11,0xd5,0x27,0xcb, + 0x59,0xf9,0x2f,0x03,0xe4,0x2c,0x93,0x50,0x08,0x74,0x8d,0x42,0x7e,0x01,0x3f,0x87, + 0x39,0x61,0xb6,0xcc,0x86,0x37,0xef,0xf5,0x07,0xda,0x8a,0x94,0xc2,0x23,0x56,0xfd, + 0x08,0xe2,0x1f,0x07,0x7a,0xac,0x88,0x86,0xd0,0xf8,0x53,0xcd,0x7d,0x82,0x5d,0xd9, + 0xc1,0x66,0x4c,0xce,0x85,0x7f,0xbc,0x28,0xfb,0x41,0xa3,0xd0,0x18,0x78,0xc3,0x52, + 0x43,0xf8,0x0d,0xcf,0x6a,0x7f,0x9f,0x13,0xff,0x98,0xf9,0xaf,0xad,0xc6,0xfd,0x8d, + 0xa9,0x0a,0x32,0x23,0x11,0x96,0x47,0xff,0x83,0x78,0x9b,0x27,0xc2,0x86,0xa0,0x51, + 0x4d,0x29,0x82,0xea,0xf2,0xe8,0x9f,0x91,0xf6,0x39,0x04,0xf3,0xa3,0xf2,0x4e,0xf0, + 0xcb,0xf7,0x19,0x65,0xef,0x23,0x50,0xc3,0x8c,0x15,0x59,0xf8,0xc7,0x8e,0x76,0x8a, + 0x82,0x3e,0x0f,0x44,0x61,0x2d,0xb8,0xa1,0x70,0x50,0xc0,0xc2,0x81,0x2c,0xfc,0x63, + 0xff,0x7e,0xb5,0x4f,0x6f,0x20,0x25,0xf2,0x56,0x98,0x0f,0x2b,0xda,0x7d,0xa7,0xa0, + 0xb7,0xb2,0x32,0x1b,0xff,0xa4,0x40,0x8e,0x81,0x76,0x8a,0x51,0xff,0xfc,0xcf,0xf4, + 0x86,0x98,0xb7,0x4d,0x3c,0x4d,0xff,0x25,0xb6,0xf7,0x1d,0xc4,0x3f,0x76,0xfd,0xcf, + 0x74,0xbb,0x3f,0x59,0x8a,0x32,0x57,0x69,0x02,0x33,0xd4,0x51,0x71,0x54,0x7b,0xb7, + 0xbd,0xf9,0x84,0xdb,0x9e,0xff,0x02,0x29,0x15,0xbf,0x2e,0x88,0x67,0x19,0xec,0xb9, + 0x31,0xe6,0xb9,0x20,0xce,0xd6,0xf4,0xe8,0x5d,0x61,0xef,0x88,0x38,0x29,0x4f,0xea, + 0xf5,0x6f,0x3a,0xf1,0x8f,0xf2,0x18,0x7b,0x8d,0x6f,0x63,0xfd,0xda,0x69,0x84,0x31, + 0xaa,0xbc,0xa1,0xb4,0xa4,0xfb,0xd7,0x3b,0x82,0x61,0xf7,0xb7,0xf0,0x4a,0x5f,0xe5, + 0x48,0x16,0xfe,0xf9,0x09,0x31,0xf4,0x3f,0x38,0x5e,0xda,0xb6,0xde,0x37,0x8b,0x6e, + 0xf4,0x7f,0x7d,0xc8,0x1d,0x26,0xa7,0xf6,0xf6,0xf2,0x54,0x7e,0x96,0xfe,0xd9,0x6f, + 0xcd,0xa7,0xe0,0x0f,0xb2,0x8d,0xc6,0xc3,0xba,0x8a,0x0a,0x87,0xb3,0x3c,0x43,0x94, + 0x85,0x7f,0xde,0x95,0xd2,0xf1,0x85,0x56,0xb0,0xfd,0xbb,0x44,0x3b,0x1a,0xf5,0x55, + 0xfb,0xbf,0x78,0xa5,0x6c,0x52,0xea,0xc5,0x8d,0xa4,0x13,0xff,0xbc,0xcb,0xb7,0xe1, + 0x22,0x87,0x85,0x8a,0x37,0xee,0x1e,0x65,0x1b,0x2b,0x76,0xff,0x33,0x9d,0xa6,0x2b, + 0x16,0x9c,0xf8,0xe7,0x7d,0x6b,0x77,0x2f,0xb5,0xc8,0xf3,0x0f,0x7e,0xf1,0x92,0x7c, + 0xb9,0x3b,0x95,0xff,0xda,0xca,0x10,0x91,0x27,0x03,0xff,0xc8,0x69,0x3d,0x0f,0x09, + 0xa8,0x72,0x1f,0x19,0x15,0x0e,0x22,0xe3,0x81,0x57,0x7e,0x6a,0x08,0xa1,0x73,0xf2, + 0x3f,0x3c,0xde,0x45,0x3f,0x17,0x2f,0x1d,0x85,0x3e,0xf5,0xa6,0x81,0x9e,0x3e,0x7e, + 0x7f,0x8d,0x2e,0xe7,0xd4,0x3f,0xd7,0x91,0x41,0x2c,0x7b,0x07,0xac,0x4f,0xe9,0xda, + 0x1b,0x8c,0x8d,0xe0,0x8c,0x75,0x3c,0xae,0xaa,0x47,0x36,0x67,0xd5,0xbf,0x23,0xff, + 0x63,0xe8,0x4f,0x9a,0x67,0x15,0xef,0x6b,0x7d,0xaf,0xeb,0x60,0x51,0xc3,0x51,0xce, + 0x98,0xbd,0x0f,0x87,0x13,0x9e,0x4c,0xfc,0x33,0xb9,0x98,0x8d,0x77,0x6f,0x2b,0x8f, + 0x5f,0x15,0x25,0x0f,0x8a,0xa3,0xc9,0xcb,0xea,0x73,0x98,0xc8,0x18,0xc5,0xfa,0x77, + 0x94,0x82,0x3b,0xf1,0xcf,0x08,0x03,0x39,0x25,0xe3,0x5f,0xbd,0x02,0x2f,0xd1,0x7a, + 0x8d,0xcd,0xc6,0x6f,0xd8,0x26,0x63,0x61,0x98,0xe1,0xe7,0xd9,0xcc,0xb8,0x31,0xe9, + 0x19,0x71,0xe8,0x9f,0x47,0xe1,0x01,0xae,0xee,0x2e,0x1d,0xe5,0xdd,0x78,0x18,0x30, + 0x1e,0x35,0xcb,0xd2,0x79,0xc5,0x37,0x0a,0xed,0x54,0x9b,0xff,0x19,0x05,0x3f,0x43, + 0x8f,0x2e,0x73,0xf7,0xcd,0xd6,0xc3,0x00,0x1a,0x1a,0x5f,0x18,0x9d,0x10,0xa0,0x19, + 0xfa,0x67,0x0f,0x96,0xbd,0xa0,0xda,0x79,0x50,0xeb,0xec,0x37,0x0c,0xda,0xc3,0x02, + 0xbf,0xfd,0xf9,0x41,0x1b,0xfe,0x39,0xab,0x8d,0x68,0xd7,0x23,0x08,0x39,0x4b,0x5e, + 0xa4,0x0f,0x45,0xf1,0x7b,0x21,0x2f,0xc2,0xbe,0x64,0x20,0xee,0xae,0x65,0x46,0x73, + 0xcc,0x13,0x73,0x3b,0xf5,0xcf,0x17,0x85,0x96,0x21,0x06,0x7a,0xaf,0xe0,0xfc,0x3c, + 0xb4,0xca,0x30,0xf8,0x0a,0x41,0xbc,0xd7,0xb2,0x6b,0x41,0x32,0x83,0xff,0x49,0x18, + 0x4d,0x84,0xf0,0xb1,0x4d,0xd1,0xaf,0xec,0x13,0x03,0xf8,0xd8,0x04,0xd7,0x9f,0xbf, + 0xa8,0x34,0x23,0x3f,0x10,0xb4,0xe1,0x9f,0xf9,0x5a,0x27,0x3c,0x89,0xeb,0xe1,0xbd, + 0x76,0xfe,0xb6,0x97,0x48,0x40,0xe8,0xe9,0xae,0x1d,0x2a,0xde,0x4f,0xde,0x54,0x5f, + 0x6f,0xaf,0xdd,0x56,0xbc,0x27,0x52,0xe7,0xc0,0x3f,0x51,0xc3,0xc9,0x18,0xfa,0x43, + 0x57,0x53,0xc8,0x43,0x7b,0xa4,0x80,0x2e,0x3f,0x4d,0x46,0x69,0x27,0xd4,0x26,0xe5, + 0x9d,0x64,0xb1,0x03,0xff,0x7c,0x2f,0x3e,0xcf,0xc0,0x3f,0x9b,0xba,0x8a,0x93,0xf2, + 0x86,0xc2,0x66,0x75,0x13,0xfd,0x1f,0xc3,0x45,0x98,0x18,0xfa,0x13,0xba,0x20,0x59, + 0xb4,0x96,0x54,0xd8,0xf0,0x4f,0x80,0xfc,0x4a,0x8f,0x23,0xfe,0xc1,0xa7,0xcd,0xd2, + 0x43,0xf1,0x9e,0x62,0xd2,0x09,0x4d,0x97,0x50,0xff,0x0c,0xcf,0x43,0xd3,0x49,0x36, + 0x3f,0xa5,0x0e,0xfc,0xf3,0x1e,0xce,0x46,0xdc,0xd8,0x1d,0x60,0xb6,0x74,0x54,0xe2, + 0x88,0x28,0x95,0x3f,0xd5,0x9d,0xfa,0xe7,0x82,0x51,0x92,0x50,0xf7,0xe9,0x01,0xa4, + 0xdd,0x50,0x28,0xe5,0xe9,0x15,0x3d,0xe4,0x75,0x08,0xb2,0xbf,0x48,0x15,0xd6,0xab, + 0xd6,0xa1,0x3e,0xcd,0x89,0x7f,0x22,0x32,0xb6,0x45,0xba,0x6a,0x96,0x74,0x00,0x2a, + 0x8f,0xc8,0x77,0xb6,0xde,0x0a,0x48,0xfb,0xc8,0x58,0x11,0xcf,0x8d,0x4c,0xfd,0xf3, + 0x46,0xba,0x03,0x49,0x9e,0xaf,0xc0,0x73,0xfa,0xbc,0xa4,0xbc,0x38,0xd4,0x0c,0x9b, + 0x22,0x55,0x49,0x17,0x5e,0xd9,0x44,0x2b,0xc3,0xf2,0x5a,0x07,0xfe,0xb9,0x49,0xeb, + 0xdc,0xa6,0x86,0xe5,0xe0,0xf2,0x65,0xda,0x3e,0xa8,0x19,0x60,0xcb,0x66,0x6d,0x5b, + 0x0f,0xec,0x8c,0xb1,0x15,0x38,0xaa,0x75,0x12,0x75,0x8c,0xad,0x37,0x27,0xfe,0x39, + 0x0e,0x3e,0x2c,0x72,0xff,0x6b,0xb8,0xa2,0x35,0x46,0xbf,0x13,0x13,0x6f,0x80,0x63, + 0x50,0xdf,0x57,0xcb,0x5e,0x9b,0x39,0xfe,0xfa,0xdd,0x81,0x64,0x6e,0xfc,0xc3,0x02, + 0x93,0xdc,0xc0,0xc3,0x90,0x8f,0x21,0x04,0x32,0xdf,0xe8,0xc7,0xf2,0x2c,0xc9,0xc2, + 0x3f,0xaf,0xb1,0xa0,0x26,0x3f,0x28,0x56,0xcb,0x47,0x19,0x2c,0xe4,0x65,0xef,0x45, + 0xd3,0x51,0xd6,0x2b,0xbe,0x49,0x8f,0xb2,0x0f,0x07,0xa2,0x22,0xb1,0xe3,0x1f,0xb2, + 0x59,0xf3,0xb5,0xcb,0xb3,0x48,0x35,0xe9,0x00,0xdf,0x7a,0xf9,0x31,0xf2,0x29,0xd8, + 0xac,0xed,0xd4,0xe4,0x6d,0xe4,0xcd,0xc8,0x66,0xd8,0xa9,0xf9,0x15,0x97,0x6a,0xc3, + 0x3f,0x12,0x74,0x68,0xbb,0x56,0x2f,0xdf,0x46,0x0a,0x84,0xcd,0xda,0x8f,0xc7,0xd8, + 0x6d,0x73,0x85,0x27,0x64,0x1f,0xde,0x3f,0xec,0xe9,0x08,0xfb,0x57,0xbb,0xb0,0xb0, + 0xdd,0x5c,0x0f,0x88,0x7f,0x50,0xf6,0xec,0x8a,0xba,0x24,0x61,0x33,0xa8,0xcb,0xe5, + 0xd2,0x48,0x21,0xd9,0x81,0xdf,0x23,0xf2,0x21,0x1d,0xe0,0x47,0xbc,0x44,0x6c,0xf8, + 0x47,0x83,0x84,0xda,0xc0,0x16,0x72,0x95,0xca,0x3e,0x84,0xcf,0xc8,0x81,0x88,0x5b, + 0x65,0x5f,0x51,0x1d,0x78,0xe8,0x74,0x9d,0xfd,0x79,0x16,0x23,0xfe,0x29,0x49,0xe3, + 0x9f,0xe2,0xf3,0xb1,0xc9,0x40,0xcb,0xf2,0xe2,0x57,0x1e,0x3f,0x1f,0xfb,0xd8,0xff, + 0xdc,0x72,0xef,0x43,0xcf,0x7f,0x2b,0xf6,0xaf,0x58,0xf6,0xce,0x80,0x4d,0xec,0x82, + 0x7f,0x11,0xfb,0xa9,0xd3,0x59,0xff,0xf5,0xb6,0xff,0x9b,0x9a,0x67,0xdb,0xb4,0x6a, + 0x38,0x0a,0x75,0x21,0xde,0x1f,0xe9,0xa8,0xe4,0xd3,0x4a,0xb6,0xa1,0xfe,0xd9,0xc8, + 0x18,0x3a,0xf0,0x0f,0xed,0x0e,0xef,0x93,0xfd,0xe0,0x52,0x69,0x37,0xf8,0x14,0xff, + 0x46,0x36,0x1b,0xdd,0xaa,0x0f,0x5c,0xc4,0xa5,0x2a,0x98,0xff,0x92,0x75,0x07,0xfe, + 0x39,0xaf,0xfe,0x48,0xae,0x0c,0xc9,0xed,0xe4,0x7a,0x75,0xa3,0xbf,0x72,0xb9,0x7c, + 0xf3,0x6f,0xcb,0x62,0x1b,0xe5,0xaf,0x2e,0x77,0xdd,0x5c,0x5a,0x46,0x37,0xca,0x0b, + 0xd8,0x4f,0x11,0xbb,0xfe,0x67,0xbf,0xb0,0x11,0x04,0x4d,0x6e,0x2f,0xfd,0x16,0xd9, + 0xa4,0x54,0x2e,0x2b,0x5a,0xef,0x2b,0x87,0x8d,0xe4,0xf1,0xf6,0x9a,0x76,0x52,0x06, + 0xf7,0x4b,0xde,0x56,0xff,0x90,0x1d,0xff,0x14,0x2c,0x83,0xb7,0x69,0x29,0xbe,0xa4, + 0xc4,0xd5,0xaa,0xf8,0xfe,0xe4,0xa8,0x50,0xa7,0xd5,0x72,0x43,0x9a,0xbd,0xde,0xe3, + 0xc4,0x3f,0x3f,0xd6,0x2e,0xc4,0x9a,0xd7,0xb0,0x68,0xce,0x0c,0x78,0x36,0x84,0xf9, + 0x32,0xd5,0x94,0x45,0x69,0x17,0x5c,0xcd,0x6d,0x4e,0xfc,0x03,0x31,0x48,0x68,0x75, + 0xf2,0xca,0x8e,0x56,0xb5,0x22,0xc1,0xa6,0x7d,0x10,0xf1,0x4f,0x4a,0x7f,0x85,0x8d, + 0x80,0x18,0xfe,0xd1,0x33,0xf0,0x0f,0x43,0x3b,0x51,0xae,0x76,0xbe,0x8f,0xfa,0x68, + 0xf7,0x8f,0x22,0xfe,0xae,0xfb,0xd4,0x80,0xa1,0x7f,0x3e,0x04,0x6a,0x2c,0xa3,0xfe, + 0xeb,0x0b,0xf0,0x30,0xdd,0x9d,0x94,0x83,0x91,0x07,0xa0,0x33,0x1a,0xfb,0x40,0xc6, + 0xfe,0x3f,0x9d,0x34,0x80,0x57,0xbc,0xd0,0xab,0xef,0x1e,0xc9,0xc0,0x3f,0x57,0xc3, + 0x23,0xda,0xbc,0x21,0xb6,0x6d,0x79,0x14,0xbf,0xd6,0x21,0x58,0x4f,0x14,0xd8,0x88, + 0x40,0x8b,0x19,0xea,0xd3,0xdd,0xf3,0x22,0x19,0xf8,0xa7,0x99,0xc1,0x8a,0x25,0xb1, + 0x40,0x9b,0xf8,0x2c,0x79,0x99,0xd6,0xc7,0x02,0xb2,0xd8,0x0c,0x28,0x7b,0x0e,0xac, + 0x65,0xf1,0xc5,0xec,0xff,0x63,0xc3,0x3f,0xbb,0xe1,0x1d,0x89,0xed,0x47,0xa8,0x7b, + 0x9d,0xa1,0x76,0xa6,0x90,0x24,0xe3,0x12,0xca,0xf0,0xdc,0x49,0xb6,0x43,0x61,0x3f, + 0x39,0xf0,0x4f,0xc1,0x47,0x30,0x11,0xfd,0xdb,0xb0,0x77,0xdc,0x3d,0x17,0x69,0x9f, + 0x70,0xc9,0xc1,0xd6,0x66,0xed,0x5d,0x1a,0x5f,0x53,0x62,0xec,0xe8,0x5b,0x30,0x90, + 0xd9,0xf9,0x9f,0x28,0xdb,0x3f,0x2e,0x6c,0x73,0xdf,0x25,0x96,0x22,0x9e,0x59,0xcd, + 0x1c,0x4b,0x29,0xdd,0x18,0x53,0xfd,0xf8,0xfe,0xf0,0x34,0x2c,0x00,0x79,0xbd,0x43, + 0xff,0xbc,0x0d,0x9e,0x56,0x2a,0xf5,0x9e,0x73,0xe4,0x55,0x7a,0xa0,0x62,0x41,0xc7, + 0xf7,0x35,0xd2,0x04,0x3f,0x53,0x3f,0xa5,0xb9,0x93,0xe4,0x56,0x78,0x04,0xe6,0x87, + 0xe4,0x0d,0x0e,0xfc,0xa3,0xcb,0x87,0xba,0x54,0xf4,0xff,0x5d,0xda,0x61,0x1a,0xe8, + 0x90,0x81,0x2c,0x65,0xa8,0xa5,0x5a,0x91,0x63,0x3e,0x4d,0x3b,0x04,0x01,0x45,0x76, + 0xe2,0x9f,0x9f,0xd1,0x0b,0xe1,0xba,0x11,0x77,0xdc,0x7d,0x16,0xfa,0x68,0xf3,0x91, + 0xda,0xb8,0xb8,0xe0,0xc8,0xbb,0xb0,0x7f,0xa8,0x24,0xea,0xbe,0x03,0xa1,0xf2,0x40, + 0x13,0x38,0xf0,0xcf,0x3a,0xb8,0xa0,0xa2,0xba,0x72,0x86,0x1f,0x36,0x68,0xcd,0x43, + 0xde,0xfd,0xee,0x18,0xe2,0x67,0xea,0xdd,0x26,0xee,0x40,0x69,0x62,0xd4,0xdb,0xe5, + 0xe0,0x7f,0xae,0x2c,0xbd,0xa0,0x55,0xd1,0x55,0x3a,0x9b,0xf6,0xcb,0x9f,0xab,0xa7, + 0xc5,0x89,0x19,0x57,0xe0,0x74,0xac,0xe5,0x88,0xa7,0x9f,0x34,0xd3,0xcb,0x9a,0xa8, + 0x7b,0x13,0x2e,0xb0,0xe3,0x1f,0xe1,0xa0,0xc4,0xd0,0x32,0x2d,0xad,0x85,0xb7,0x35, + 0x35,0x5a,0x4c,0xc9,0xf3,0x7a,0x37,0x06,0xb2,0x08,0x51,0xa1,0x4f,0xf0,0x3d,0xcd, + 0xb6,0x1e,0xaa,0x9d,0xff,0xa9,0x3e,0x2c,0xd7,0x68,0xee,0xb8,0x2f,0xa0,0x3d,0x29, + 0xd4,0x68,0xf2,0x5e,0x32,0x4a,0x7e,0x80,0x8d,0xc8,0xa2,0xe4,0x1f,0xd9,0x46,0xac, + 0x46,0xeb,0x89,0x44,0x32,0xf4,0xcf,0x7e,0xbf,0xb6,0x22,0x58,0x28,0xab,0x3b,0x99, + 0xf7,0x9b,0x57,0x47,0x92,0xb4,0x03,0x6a,0xaf,0x91,0x95,0x5a,0x0a,0x71,0xb6,0xe0, + 0x45,0x4a,0x22,0x19,0xf5,0x5f,0x87,0x18,0xfe,0xe9,0x09,0x74,0xbf,0x0b,0xfb,0x68, + 0x80,0xb0,0x40,0x76,0xd2,0xcf,0xdc,0x02,0x15,0x91,0x2a,0x3c,0xa4,0x4d,0xa3,0x76, + 0xfd,0x33,0xe2,0x1f,0xff,0x22,0x2c,0x53,0xba,0x34,0xfd,0x7d,0xb8,0xb1,0xdf,0xfb, + 0x81,0xf8,0x12,0x7c,0x04,0x2d,0xb2,0xb7,0x5d,0xfc,0x0e,0xef,0xf8,0xc7,0xbe,0x97, + 0xb5,0xce,0xfa,0xaf,0x94,0x7e,0x1e,0x26,0xd5,0xe6,0xb1,0xf9,0xfb,0x66,0x3c,0x13, + 0x3a,0xae,0xb4,0x0c,0x16,0x8f,0x8b,0x01,0x14,0x8a,0x24,0x3d,0x59,0xfc,0x8f,0x91, + 0xe4,0x3a,0x0b,0xcf,0x0d,0xd5,0x26,0xe4,0x31,0x22,0xd1,0xfb,0xd4,0x05,0xa7,0x96, + 0xf7,0x91,0x05,0x5a,0x8f,0xec,0x7b,0xd1,0xd5,0x07,0xd9,0xfc,0x4f,0xaa,0xde,0xdf, + 0x9f,0x90,0x17,0x92,0x6e,0x5a,0x05,0x81,0x04,0x03,0x36,0x0f,0xc8,0x9d,0x2a,0x57, + 0x68,0xd8,0xf9,0x1f,0x13,0x4f,0x96,0x8e,0xf2,0x46,0x40,0xae,0x78,0x21,0x85,0x9f, + 0xd2,0x5a,0xfd,0x9a,0xb8,0x6b,0x0f,0xed,0x94,0xfc,0x88,0x88,0xb2,0xf8,0x1f,0x0b, + 0x0f,0x63,0x19,0xd7,0x93,0xf0,0x1e,0x9d,0x8d,0x8d,0x0a,0x77,0xf3,0xd6,0x7c,0x9e, + 0x78,0x55,0x2e,0xfe,0x87,0xe7,0x5b,0x39,0xfb,0xf7,0x4d,0xed,0x5f,0x09,0xa7,0x35, + 0x6e,0x67,0x3f,0x1d,0xc8,0x91,0xff,0x4a,0x3d,0x5f,0xe6,0x40,0xbd,0x8e,0xfd,0x0f, + 0xbd,0x0d,0x4d,0xfd,0xec,0x7f,0x28,0xc1,0xe3,0x7b,0x4e,0xfd,0x0f,0xc7,0xc3,0xcf, + 0x81,0xaf,0x5f,0x1c,0x2b,0x1d,0x66,0xb0,0x6d,0x81,0x2e,0xef,0x63,0x30,0xb8,0xc7, + 0x28,0x0c,0xcc,0xd6,0xff,0xa4,0xd8,0xbf,0xb9,0x6c,0x9b,0xa0,0x0e,0x48,0xfb,0xc0, + 0xc3,0xfb,0x6f,0x28,0x9d,0x20,0xe7,0xd0,0x3f,0x5b,0xfd,0x70,0x3a,0xd8,0x6e,0x65, + 0x43,0xe4,0x74,0xd1,0xf7,0xd8,0x95,0x1a,0xac,0x90,0xda,0x1a,0xe3,0x85,0xe1,0x19, + 0xfc,0x0f,0x8a,0x9c,0x97,0xf0,0x6e,0x87,0xb3,0x46,0xbd,0x4b,0x66,0xe8,0x51,0x76, + 0xa5,0xbf,0x16,0xf3,0x5f,0xcf,0xd3,0x6b,0xb2,0xeb,0xdf,0xed,0xd9,0xc0,0x5f,0x78, + 0xc7,0x3a,0x46,0x30,0x9f,0xf8,0xaa,0x87,0xe7,0xbf,0x14,0xe4,0xc7,0xf2,0xf0,0x3f, + 0xc2,0x84,0xca,0xd0,0xf5,0xfe,0xce,0x30,0x66,0x40,0x12,0x4d,0x71,0x16,0x4f,0xb1, + 0x90,0x21,0x4f,0xff,0x1f,0xdc,0x4f,0xb5,0xe3,0xc6,0xaa,0xf4,0x04,0x3c,0x55,0xc8, + 0xfb,0xa7,0x9d,0x52,0xde,0x80,0x2a,0xe4,0x93,0xf3,0xf5,0xff,0x89,0xa0,0x31,0xf7, + 0x37,0xc2,0x81,0xae,0xf9,0xc3,0xae,0x0d,0xbe,0xdf,0xc0,0x4f,0x0c,0x68,0x64,0xc7, + 0x3f,0x19,0xfb,0x59,0x9e,0x46,0x3c,0xac,0x19,0xfc,0xb3,0x76,0x18,0x33,0xf8,0x39, + 0xfb,0xff,0xa4,0xf5,0x3f,0x55,0xdf,0x86,0x2b,0x4a,0x73,0x47,0x49,0x8c,0x2d,0x03, + 0x94,0x46,0x7b,0xd4,0xbc,0xfc,0x0f,0x33,0xdc,0x5d,0x24,0xa9,0x8e,0x5f,0x35,0x1b, + 0x3a,0x18,0xfe,0x51,0x4f,0xe4,0xae,0x7f,0xb7,0x67,0x43,0xb6,0xa3,0x50,0x04,0xea, + 0x96,0xba,0x98,0xc1,0xf0,0x0f,0xd7,0xff,0x90,0x7c,0xfc,0x0f,0x33,0xb6,0xf9,0x50, + 0x4f,0x52,0x83,0x6d,0x7f,0x06,0xe8,0x13,0x46,0x45,0xbc,0x9a,0x97,0xff,0x59,0xea, + 0x7e,0x30,0x32,0x00,0x4f,0x30,0xfc,0xe0,0x7a,0x28,0xb4,0x26,0x55,0x11,0x96,0x81, + 0x7f,0xf6,0xda,0xf4,0x3f,0x5a,0x4f,0x69,0x64,0x20,0xde,0x11,0xf0,0x2f,0x5f,0x8e, + 0xfd,0x0f,0x77,0x70,0xfd,0x8f,0x8b,0xe4,0xca,0x7f,0x21,0xdb,0x33,0x1b,0xf3,0x5f, + 0x49,0x3a,0xa2,0x06,0x65,0x06,0x7b,0x50,0x08,0x5d,0x97,0x81,0x7f,0x9c,0xfc,0x4f, + 0xf3,0xf2,0x55,0x0f,0x75,0x9e,0xdf,0x39,0xe9,0x6f,0x5e,0xfe,0xf9,0x21,0xf1,0xbc, + 0x92,0xcd,0xff,0xd8,0xf5,0x33,0xaf,0xf9,0x1b,0xb5,0x92,0xa1,0xce,0x39,0xea,0x6b, + 0xe1,0xba,0xe5,0xde,0x21,0xf1,0x7a,0x9c,0x28,0xcd,0x33,0x24,0xbe,0x20,0xd9,0xf0, + 0x8f,0x55,0xff,0xa5,0xf4,0x69,0x3e,0x90,0xef,0x25,0x95,0x0c,0xff,0x5c,0x5f,0xc1, + 0xae,0xec,0xd0,0xba,0x61,0x67,0x5e,0xfe,0x07,0x0d,0xff,0xf2,0xfb,0x82,0xd8,0xf8, + 0xe8,0x76,0x35,0x54,0xa4,0xa0,0xc2,0xc7,0xaf,0x86,0x64,0xe4,0x7f,0xec,0xfa,0x67, + 0xb3,0xfe,0x0e,0x0e,0x16,0xa0,0xfe,0xa7,0xac,0xda,0xb7,0x43,0xfd,0x4b,0x9c,0xe1, + 0x5d,0xd2,0x66,0xf6,0x85,0xf0,0x7e,0x4a,0xe6,0x7a,0x88,0xd9,0xf5,0x4b,0xaf,0x09, + 0x8d,0xda,0x17,0xa2,0xe2,0x1c,0xe5,0xdb,0x7a,0x29,0x0a,0x7b,0x76,0xf1,0x8a,0x3f, + 0xc4,0x3f,0xe9,0xf8,0x6b,0xe7,0x7f,0xfe,0x1b,0x17,0x4e,0xcf,0x44,0x84,0xcc,0xaf, + 0x0c,0x90,0x0b,0x42,0xb3,0xb6,0x20,0x13,0xff,0x98,0xf3,0x2f,0x8d,0xc1,0x3e,0xb6, + 0x47,0xed,0x54,0xe1,0x84,0x31,0xed,0x49,0x6a,0xf6,0x3f,0xb4,0xd6,0x7f,0xb6,0xfe, + 0x67,0x98,0xec,0x36,0xfa,0xff,0xf8,0x7d,0x13,0xdd,0x87,0x48,0x43,0x06,0xff,0x53, + 0xee,0xf8,0x5e,0x54,0xd4,0xff,0xac,0xe3,0x1d,0x24,0x5c,0x8b,0xe1,0xb8,0x62,0xf6, + 0x3f,0x94,0x72,0xf1,0x3f,0xec,0xd7,0xca,0x81,0xb6,0xf5,0x3c,0x71,0xf6,0xf5,0xdf, + 0xcb,0xbc,0x43,0x8e,0x92,0x23,0xff,0x65,0xf2,0x3f,0xca,0xc7,0xb4,0x7e,0xb4,0x78, + 0x9c,0x7c,0x25,0xf2,0x56,0xfc,0xc6,0xd1,0x42,0xde,0xff,0x30,0x7e,0x43,0x16,0xff, + 0xc3,0xfc,0x49,0xad,0x43,0x5d,0xb0,0x27,0xb9,0x02,0xf6,0x0d,0xa5,0x14,0x86,0x0d, + 0x27,0x32,0xf0,0x8f,0x95,0xbf,0xc0,0x6e,0x42,0x75,0xbf,0xf7,0x4c,0x88,0xcf,0x2a, + 0x2f,0x77,0xf7,0xbe,0xed,0x19,0xaf,0xba,0x82,0xfd,0x7b,0x7f,0xeb,0xd9,0x20,0x82, + 0x23,0xff,0xc5,0xf5,0x3f,0xd8,0xbd,0xe7,0x80,0x34,0x2f,0xe9,0xba,0x93,0xfc,0x90, + 0x6d,0xa3,0x3e,0x3d,0x2a,0xaf,0xaf,0x3b,0xa5,0x1e,0x80,0x4f,0x0f,0x30,0x47,0xf4, + 0xa4,0xb3,0xfe,0xcb,0xd4,0xff,0xb0,0xf1,0x26,0x5c,0x77,0x5e,0x35,0x08,0x3f,0x01, + 0x21,0xf1,0xfd,0xf5,0x64,0x48,0x7b,0x04,0xe6,0xe8,0x35,0xeb,0x09,0xcd,0xa1,0xff, + 0xf1,0x19,0x44,0x10,0xf3,0x36,0xb5,0x6c,0x3e,0xfd,0x7a,0x0d,0xf6,0xb3,0xed,0x35, + 0xf8,0xfc,0xee,0xcc,0xfa,0x2f,0x73,0xbc,0xf5,0xfa,0x17,0xe2,0xad,0x97,0xd4,0xf7, + 0xb1,0x50,0x2b,0x2e,0xbe,0x09,0x6f,0x90,0x45,0x68,0x3c,0xe9,0xe0,0x7f,0xd2,0xf7, + 0x0b,0xcd,0xfd,0xee,0xeb,0x61,0x94,0xbc,0x1e,0x69,0xd2,0xe7,0x61,0x3e,0xe2,0x30, + 0x69,0x64,0x11,0x50,0xc8,0x5b,0xff,0xc5,0x37,0xb6,0x4d,0x65,0x2f,0x4a,0x3c,0xf0, + 0x9d,0x87,0x49,0xb1,0xb7,0x7f,0xeb,0x98,0x60,0xe3,0x7f,0x80,0xb7,0xdd,0xc3,0xfa, + 0x3b,0xc3,0x28,0xea,0x8b,0x70,0xda,0x01,0xc3,0xd6,0xb0,0xc1,0x5f,0x65,0xf0,0x3f, + 0x82,0x8d,0xff,0x61,0xf1,0xab,0x2f,0x14,0x50,0x7a,0x48,0x6d,0xbf,0x6b,0x5f,0xe9, + 0x68,0x7b,0x6f,0xea,0xfe,0x6c,0xfe,0x67,0x21,0xea,0x81,0xa5,0xc0,0x51,0xb6,0xde, + 0x3c,0x72,0xa7,0xcc,0xf0,0x40,0x90,0xbc,0xa4,0xf4,0x6a,0xe1,0xa1,0x9e,0x2c,0xfe, + 0xc7,0x67,0xcd,0xcf,0x8d,0xaf,0xae,0x7a,0xaa,0xb5,0x09,0x5e,0x56,0x5b,0x12,0x25, + 0xf1,0x19,0x67,0xa4,0x8f,0x97,0xcd,0xf8,0xd5,0xd6,0x4c,0xfe,0xe7,0x0d,0xb6,0x5b, + 0x9f,0x76,0x4e,0x6c,0x82,0x37,0xa0,0xe5,0xc4,0xfd,0x47,0x66,0x8e,0x86,0x30,0x71, + 0x33,0x7f,0x88,0xc1,0x18,0x53,0xdf,0xeb,0xc0,0x3f,0x17,0x61,0x51,0x8c,0x2d,0x92, + 0xb3,0x0c,0x08,0x2d,0x31,0xda,0xfe,0xa4,0x64,0x3f,0xb9,0xea,0xbf,0xe0,0xac,0xcc, + 0x3f,0xab,0xbe,0xba,0x5a,0x06,0x84,0xaa,0xc6,0xec,0x6d,0x7f,0xd2,0xfa,0x1f,0xdb, + 0xf7,0x38,0x28,0xf7,0x41,0x35,0x95,0x83,0xb7,0x73,0xfc,0x33,0x64,0x4f,0xf3,0xd9, + 0xf2,0x7d,0xe6,0xfd,0xfa,0x9f,0xef,0x61,0xfe,0xcd,0xd7,0x01,0x46,0xdb,0x25,0x67, + 0x1b,0x01,0x9b,0xfe,0xc7,0x7c,0x1f,0xac,0xff,0xba,0x28,0x35,0x74,0x55,0x07,0x45, + 0xa3,0x50,0xab,0xc0,0xf6,0xe1,0xa4,0xeb,0xbf,0xd2,0xfd,0x2d,0x95,0x26,0xb8,0xa8, + 0xb7,0x24,0xb7,0x8e,0xf1,0xfe,0x7e,0xce,0xb2,0xa6,0xb4,0xfe,0xd9,0x56,0xff,0x15, + 0x60,0xa0,0xba,0xa1,0xdb,0xb3,0xb7,0x73,0x1d,0xbc,0xab,0x36,0x19,0x6d,0x19,0x5e, + 0x37,0x2a,0x34,0xf3,0xd4,0x7f,0xc5,0xa9,0x6f,0xc8,0xff,0x0c,0x7b,0xff,0x4e,0x6d, + 0x81,0xee,0xcf,0xf5,0xfe,0xe9,0xfa,0x2f,0x5d,0xf2,0x48,0xfb,0xe8,0x93,0xf1,0x9a, + 0xeb,0xc9,0xca,0xf0,0xe3,0x5a,0x40,0xbf,0xc6,0x10,0x8a,0xe7,0xad,0xff,0xd2,0x66, + 0xc3,0xd3,0xe3,0xf3,0x6a,0x5c,0xdf,0x26,0xb3,0xbb,0xa7,0xd1,0xe2,0x24,0xcf,0x7f, + 0xd9,0x32,0x62,0x99,0xf5,0x5f,0x15,0x1e,0xed,0x5c,0xb2,0x91,0x3e,0x50,0x27,0x7e, + 0x81,0x7e,0x15,0x9a,0x06,0x78,0xdb,0x9f,0x5f,0xc7,0x9a,0x86,0xbd,0xc1,0xaa,0x74, + 0xfd,0x57,0xa1,0xf9,0x3e,0x9a,0xe7,0x19,0xb8,0x52,0x56,0x2f,0x9b,0xb2,0xa8,0x23, + 0xc5,0xa9,0x69,0xe9,0xcf,0x5d,0xff,0x25,0x17,0x8c,0x4a,0x17,0x21,0x48,0xd9,0xb4, + 0xdc,0x81,0x68,0xd3,0xd1,0xa6,0x23,0x5d,0xbf,0x90,0xee,0xcf,0xbc,0x94,0xf9,0x13, + 0xa1,0x52,0x63,0x4e,0x66,0x16,0x6c,0x22,0xf3,0x8f,0xd8,0x65,0x03,0xe9,0xfa,0x2f, + 0xeb,0x7e,0x60,0xf8,0xa7,0x97,0x56,0xc5,0x8a,0xb0,0xde,0xcd,0x94,0x39,0xd9,0x3b, + 0x22,0xe6,0xe8,0xff,0xd3,0xfb,0xb9,0x9d,0x5a,0x51,0x30,0x64,0xc8,0xa8,0xdc,0xb9, + 0xd6,0x9b,0xad,0xff,0x8f,0xb4,0x1b,0xae,0x68,0xf5,0xd1,0xf9,0xaa,0xe8,0x27,0xf7, + 0xd9,0x81,0xd0,0x56,0x9b,0x22,0xda,0xd6,0xff,0xc7,0xc8,0x47,0x94,0x96,0x50,0xf7, + 0x99,0x54,0x21,0x58,0x0e,0x3d,0x86,0xb3,0xff,0xf3,0x07,0x4a,0x5d,0x98,0x05,0xc1, + 0x1f,0x67,0xc9,0x42,0x72,0xea,0x7f,0xaa,0xe5,0x83,0x47,0x7c,0xcb,0xe4,0x68,0xe4, + 0x53,0xea,0xc1,0x36,0xa7,0xec,0x24,0x5f,0xfd,0x97,0xb6,0x53,0xab,0x60,0xd1,0x99, + 0x66,0xde,0x96,0xaf,0xfe,0xcb,0xaf,0x6a,0x15,0x0a,0x91,0x64,0xec,0x7f,0x68,0x00, + 0x03,0x29,0x43,0xff,0x63,0xe9,0xc3,0x17,0x5f,0x8d,0xdd,0x7e,0xea,0x68,0x80,0xfd, + 0x0d,0x64,0xec,0x7f,0x98,0x73,0xbc,0xa7,0x0b,0xcd,0xf7,0xe9,0x43,0xfd,0xcf,0xbc, + 0x96,0xe5,0x6c,0xb7,0x35,0x90,0x1a,0xdd,0x0c,0xde,0x0f,0xd9,0x31,0xde,0x37,0xd3, + 0x78,0x86,0xe1,0x8d,0xcb,0x70,0xe3,0x32,0x4f,0x3b,0x43,0x3b,0x97,0x8d,0xb4,0x11, + 0xde,0x76,0xb7,0xe3,0xfe,0x34,0xff,0x53,0x01,0x49,0xb9,0x4f,0xae,0x85,0x62,0xea, + 0x42,0xd9,0x4f,0x8d,0xe2,0x36,0x64,0x57,0xb6,0x8c,0x98,0xb3,0xff,0xcf,0xb2,0x2e, + 0x79,0x6f,0xe8,0x0e,0x06,0x5a,0xae,0x5a,0x86,0xa3,0x5b,0x66,0x1f,0x66,0xae,0xfe, + 0x3f,0x65,0xbb,0x52,0x65,0x5f,0x5c,0x4f,0x5e,0x93,0x9a,0x46,0xc1,0x39,0x9f,0x69, + 0xfd,0xf3,0x4e,0xec,0x7f,0xf8,0xf7,0xcd,0x4b,0x3d,0x4a,0x2a,0xff,0xd5,0x63,0xbc, + 0x76,0xad,0xf1,0xfe,0x07,0x53,0xfa,0x1f,0xab,0xff,0xe1,0x08,0xf6,0x3f,0xe4,0x4d, + 0x0e,0x3b,0x6d,0x40,0xe8,0xed,0x8c,0xf5,0x70,0xd1,0x51,0xff,0x35,0xa2,0xd6,0xb1, + 0xf1,0x8a,0x61,0x3e,0xcc,0x9c,0xf3,0x9f,0xae,0xff,0x02,0xc9,0x0f,0xcf,0xca,0x95, + 0x54,0x3e,0x4b,0x96,0xd0,0xa7,0xb5,0x12,0x87,0xec,0xc7,0x32,0xd2,0xfd,0x0f,0x65, + 0xb6,0xff,0x7a,0x5c,0xaf,0x86,0xa2,0x26,0xd2,0xa6,0xee,0x8b,0x3b,0x65,0x87,0x36, + 0xfd,0x8f,0xf9,0x0f,0xeb,0xbf,0x9e,0xa6,0x9f,0x3a,0x22,0xaf,0x2f,0x5c,0x0d,0x4f, + 0x63,0x23,0xe8,0x5c,0xdf,0x6f,0xc2,0x7c,0x3c,0xf8,0x2b,0x66,0xc3,0x59,0xfa,0x54, + 0xac,0x78,0x83,0xf8,0xdf,0xe1,0x23,0x7b,0x22,0xcc,0x6e,0x1c,0xf3,0x59,0xeb,0xb3, + 0x78,0x0f,0x5c,0x82,0x43,0x94,0x79,0xd7,0xdd,0x46,0xa1,0x93,0xad,0x8d,0x58,0x5a, + 0xff,0x73,0xaf,0x39,0xde,0x70,0xd9,0xb3,0xda,0x95,0x68,0xbd,0xea,0x19,0x71,0x5f, + 0x05,0x03,0x74,0x89,0x19,0xb6,0x9a,0x87,0xed,0xf1,0x6b,0x28,0xad,0x7f,0xae,0x78, + 0x0c,0x9e,0x8e,0x55,0x6a,0xc5,0x9f,0x21,0xab,0xa1,0x4b,0x5b,0x88,0xb2,0xa5,0x41, + 0x7c,0xed,0xa4,0xfb,0x1b,0x36,0xfd,0x8f,0xa5,0xaf,0xa6,0xf0,0x98,0xb0,0x5f,0x79, + 0x7c,0x1b,0xf3,0x57,0xab,0x51,0xed,0xac,0x9b,0xb7,0x25,0x7a,0x6c,0xe3,0x4d,0xc7, + 0x3b,0x8d,0xc5,0xf7,0xb8,0xa6,0x52,0x16,0xe6,0xda,0x08,0x35,0x89,0xfd,0x54,0xdb, + 0x31,0x6b,0x3e,0x6d,0xf5,0x5f,0x05,0x7b,0xe0,0x43,0x8d,0xfb,0x4f,0x3f,0xca,0xfc, + 0xf4,0xeb,0x30,0x4c,0x4c,0x48,0x77,0x38,0xe2,0x4b,0x9a,0xdf,0x8b,0x29,0xa3,0x70, + 0x51,0x65,0xd1,0x19,0xe7,0x67,0xdc,0xda,0x78,0x66,0xf8,0xdb,0xf4,0xfb,0x20,0xfe, + 0xb9,0x08,0xf5,0xb4,0x03,0x37,0xf5,0x97,0x48,0xaa,0xcc,0xf9,0x0d,0xc3,0x8d,0x7f, + 0x27,0xbb,0xff,0x4f,0xbf,0xb4,0x4e,0xee,0xeb,0xa8,0x89,0xb9,0x9e,0x21,0xef,0x40, + 0x9f,0xee,0x0c,0x5b,0xb6,0xfa,0x2f,0xf3,0xef,0x85,0xf5,0x5f,0xbb,0xa9,0x2f,0xe6, + 0xde,0x4e,0xf6,0x68,0x7d,0x34,0x75,0xdb,0x0f,0x32,0xee,0x77,0xf6,0x7f,0xee,0x53, + 0x6b,0x74,0xd7,0xf5,0xe4,0x28,0xc4,0x53,0xcb,0xac,0xad,0x57,0x31,0xea,0xbf,0x72, + 0xe8,0x7f,0xe4,0x75,0x30,0xb2,0xbe,0x8e,0x2e,0xd8,0x26,0x3e,0x61,0x8d,0x17,0xe3, + 0xef,0x0b,0x56,0xc7,0x5d,0xaf,0x03,0xff,0x94,0x5d,0x82,0xf1,0xe0,0x8d,0x74,0xd5, + 0x7a,0xe6,0xb4,0x2f,0x19,0xb2,0xe7,0x4b,0x74,0x92,0xe1,0xa5,0xeb,0xec,0xf1,0x3d, + 0x9b,0xff,0xc1,0xd5,0xf2,0x06,0x2c,0x49,0x94,0x9c,0xeb,0x0c,0xb0,0xf9,0xaf,0x3d, + 0xe6,0x5d,0x2d,0x36,0x51,0xf6,0x53,0x3f,0xf2,0x3f,0x36,0xfd,0x39,0x03,0x39,0x1d, + 0xb5,0x49,0x91,0xa3,0x1d,0xdd,0x37,0x26,0x6f,0x21,0x0b,0x94,0x43,0x7a,0x6d,0x9c, + 0xcd,0xc0,0x02,0xed,0x70,0x64,0xc1,0x70,0x4e,0xfd,0x0f,0x1f,0xdd,0x0e,0xcd,0x2f, + 0x31,0x98,0x27,0xc0,0x5e,0x8d,0x77,0x08,0x07,0xe8,0x2d,0xe0,0x78,0xd8,0xd1,0xff, + 0xd0,0x36,0xdb,0x84,0x01,0xad,0x68,0xe1,0x6e,0x85,0xcf,0x67,0x37,0xf3,0x78,0x06, + 0x23,0x14,0x4a,0xe3,0x31,0xb0,0xeb,0x4f,0x5e,0x97,0x1a,0x13,0x25,0x41,0xf7,0x7c, + 0x89,0x5f,0x99,0x2d,0xd6,0x6a,0x13,0x70,0x77,0x3f,0xc3,0xcf,0xba,0x85,0x67,0x62, + 0xd3,0x1d,0xfc,0x0f,0xdb,0x68,0x24,0xb1,0xad,0x0d,0xb4,0xec,0x66,0xfb,0x4d,0x06, + 0x1d,0xc9,0xdd,0x99,0xf8,0x67,0x8f,0x59,0x54,0x38,0x0a,0x1f,0xb4,0x2d,0x2e,0x62, + 0x4f,0xdb,0x11,0x3a,0x0a,0xcd,0x47,0xbc,0xdb,0x3a,0x55,0x3d,0xa5,0x38,0x4a,0xf3, + 0x0f,0x06,0xff,0x63,0x56,0x0b,0x52,0x5f,0x54,0x7e,0xa6,0x75,0x77,0xd9,0xeb,0x43, + 0x0c,0x16,0x6e,0xef,0xbc,0x0d,0x0e,0x4b,0x0b,0x18,0x42,0x73,0xe2,0x9f,0xf4,0xd7, + 0xb1,0xef,0x66,0x7f,0xd2,0xd5,0x04,0x0f,0xd0,0xce,0x23,0x81,0xb0,0xdb,0xd6,0x88, + 0x7e,0xdc,0xda,0x7f,0x85,0x21,0xad,0xff,0x11,0x9e,0x8e,0x56,0x0e,0xcb,0x9f,0x23, + 0x3f,0xa4,0xf7,0xd2,0xf9,0xb1,0x9e,0x71,0x54,0xc8,0x74,0xcc,0x1f,0x2e,0xca,0xc0, + 0x3f,0xf0,0x61,0x0c,0x9f,0x2f,0x0e,0xc2,0x07,0xe0,0xff,0xeb,0x92,0x60,0xe7,0xa6, + 0x68,0x47,0x77,0xd3,0xed,0xd3,0x82,0xa2,0x87,0x7e,0x08,0xb3,0x74,0x8f,0x83,0xff, + 0x99,0x95,0xd2,0xff,0x18,0xab,0xe5,0x1e,0xdd,0x3b,0xd4,0x7a,0xaa,0xed,0x0d,0x58, + 0x30,0x60,0xea,0x9f,0xfb,0x9d,0xf8,0x27,0xcd,0xbf,0xad,0x83,0x8b,0xb4,0x2e,0xe9, + 0xe9,0x13,0x6b,0xb1,0xfe,0x02,0x23,0x3e,0x43,0x44,0x05,0xcd,0xaf,0x78,0x1c,0xfd, + 0x0f,0x05,0x1b,0xff,0xf3,0x34,0xcf,0x76,0xf9,0x66,0x49,0xf7,0x02,0xf3,0xd8,0xed, + 0x64,0x0b,0x6c,0x82,0xc0,0x09,0xbf,0xf3,0xfc,0x0b,0x1b,0xff,0xb3,0x97,0x56,0x87, + 0xe5,0xc5,0xe4,0x5e,0xe8,0xe8,0xf0,0x87,0xe1,0x44,0x88,0x77,0xc0,0x46,0x05,0x54, + 0x1a,0xff,0xac,0x75,0xd4,0x5f,0x40,0x4c,0xf7,0x2f,0xac,0xd9,0x42,0xb0,0x8d,0xb6, + 0x7f,0x56,0x64,0x0b,0x74,0x4a,0x01,0x83,0xff,0x31,0xef,0x1f,0x29,0xb3,0xf8,0x9f, + 0xb5,0xa8,0xfe,0xa2,0x9e,0x11,0xb1,0x0f,0x8e,0xc3,0x12,0xea,0xf9,0x4b,0x71,0x03, + 0x39,0x66,0x28,0x82,0xec,0xfd,0x0f,0x6d,0xfb,0x71,0xc3,0x10,0xc2,0xbc,0x30,0x07, + 0xeb,0xbf,0x24,0x3c,0x18,0xa2,0x20,0x13,0xff,0xe4,0x85,0x3d,0x86,0x50,0x36,0x90, + 0x81,0x7f,0x6c,0xe8,0x45,0xab,0x6d,0x77,0x6f,0x23,0xbf,0x37,0x8c,0x68,0xea,0x60, + 0x8b,0xfc,0xfa,0x9f,0xc3,0x72,0x6d,0xc8,0x1d,0x8d,0x0c,0xab,0x07,0x99,0xb1,0x22, + 0x7a,0x4d,0xc0,0xbc,0xff,0x05,0x6b,0x7e,0x32,0xf9,0x9f,0xe5,0xee,0xd2,0xc8,0xc0, + 0xee,0xbd,0x35,0x81,0xe5,0x2b,0x18,0x22,0xc2,0xf3,0x2f,0x96,0x3b,0xf5,0x3f,0xd7, + 0x3a,0xf8,0x1f,0x86,0x7f,0x90,0xff,0x19,0x57,0x67,0x23,0x10,0xe2,0x07,0x31,0x60, + 0x45,0xd8,0x69,0x6b,0xfd,0xf4,0xd9,0xfa,0xff,0x18,0xea,0xe5,0x21,0xf1,0xbc,0xf4, + 0x73,0xd2,0xa2,0xad,0x6a,0xb7,0x9d,0x7f,0x51,0x98,0xc6,0x3f,0xf6,0x69,0x91,0xeb, + 0x34,0xcf,0x43,0x9d,0xc3,0xd5,0x17,0xe4,0xe6,0x10,0x17,0xc6,0xb0,0x0f,0x2d,0x14, + 0x70,0xe2,0x9f,0x98,0xc5,0xff,0xb0,0x8d,0x55,0x43,0x99,0xdc,0xe5,0x3b,0x03,0x7d, + 0x5a,0xad,0xc2,0xc2,0xfa,0x85,0xf6,0x6e,0xa8,0x55,0xda,0x1c,0xf8,0x47,0xea,0x4a, + 0x8f,0xf7,0xe7,0xb4,0x52,0xdb,0xbc,0x9a,0xbc,0x0a,0x4f,0x75,0xcc,0x0f,0x8b,0xed, + 0xe4,0x94,0xd2,0x61,0x54,0xcc,0x39,0xf0,0x4f,0x7a,0x3e,0x9f,0x82,0x4f,0x85,0x8a, + 0x86,0x6e,0xfe,0xb7,0xe8,0xcf,0xd5,0x05,0x5a,0xcf,0x10,0x39,0x7f,0xcb,0x66,0x63, + 0x3e,0x6d,0xf5,0x5f,0x92,0xfd,0xef,0x1b,0xaa,0xd3,0xe6,0x6f,0x13,0xdf,0x82,0x0b, + 0x7a,0x73,0x3b,0xf6,0xe3,0x25,0x47,0x8d,0x83,0x3c,0x6c,0xf5,0x5f,0x8e,0xf5,0xa0, + 0x34,0x2f,0x2b,0x89,0x56,0xbd,0x99,0x42,0x44,0x88,0x18,0x85,0xeb,0xb3,0xf1,0x8f, + 0x35,0xff,0x97,0xa0,0x1e,0x3c,0xba,0xb8,0x10,0x2e,0x15,0xd4,0x43,0xc9,0x00,0x73, + 0x3b,0xe3,0x42,0x06,0xfe,0x91,0x25,0x07,0xff,0xe3,0xe7,0x69,0x2f,0x63,0xc7,0xba, + 0xb3,0x34,0x8d,0x7f,0x54,0xd3,0x3f,0xc8,0x0e,0xfd,0x0f,0x55,0xcf,0xb0,0xef,0x0b, + 0x3b,0x86,0xa9,0x49,0x66,0x0c,0x4a,0x58,0xc1,0xc4,0xf1,0x8f,0xf5,0x3d,0xda,0xf5, + 0x3f,0xfb,0xb5,0x79,0x4a,0xdb,0x4a,0xa2,0xc0,0x7e,0xbd,0x32,0x28,0x6b,0x64,0x08, + 0xb0,0x31,0x72,0x16,0xfe,0xb1,0xd0,0xce,0x39,0x1a,0x8f,0x05,0xfc,0xee,0x6b,0x0c, + 0x23,0x8d,0x7f,0xaa,0x6c,0xf8,0xe7,0x5a,0x1b,0x1f,0x72,0x01,0x65,0x84,0xd6,0xf7, + 0x42,0xed,0xe7,0x5f,0x98,0xef,0xc3,0xf0,0x8f,0x11,0xbf,0x0e,0x8a,0x58,0xc8,0x53, + 0xb7,0x66,0xeb,0x76,0x6e,0xb4,0x84,0x59,0xfc,0x2a,0x64,0x8e,0xa8,0x19,0xf3,0x17, + 0x43,0xe9,0xfe,0x87,0xf2,0x63,0x6c,0xbc,0xec,0x25,0x37,0x70,0xff,0xa3,0xc6,0x4a, + 0xd6,0x5e,0x35,0xc4,0x0c,0x6c,0x3b,0xe6,0xfb,0x3e,0xdd,0xb4,0x6b,0xfe,0xa8,0xec, + 0xd4,0xff,0xcc,0xb2,0xfa,0xff,0xc0,0x33,0x30,0x47,0x6e,0xd5,0x98,0x77,0xdd,0x8f, + 0x65,0x5f,0x43,0xe4,0x2a,0xfa,0x13,0x95,0x13,0xd7,0x76,0xfc,0xb3,0xc5,0xee,0x7f, + 0x76,0xe9,0xae,0x1b,0x23,0x03,0xa8,0x30,0x3f,0xe2,0x56,0x49,0x37,0xee,0xc8,0xfa, + 0xe5,0xcc,0xfa,0xf7,0x34,0x7a,0xa1,0x0d,0x98,0x88,0x79,0x13,0x26,0x74,0x86,0x70, + 0xd8,0x8e,0x8c,0x17,0xf2,0xec,0x71,0xe0,0x1f,0x18,0x95,0xac,0xfb,0xc7,0x69,0xa3, + 0x5a,0x82,0xec,0xdf,0x38,0xbd,0x5b,0xf5,0x46,0xdd,0xc3,0x52,0x4e,0xfc,0x93,0x8a, + 0x77,0xcf,0x60,0x98,0xc3,0xee,0x6d,0x63,0xda,0x71,0xc3,0x58,0xcc,0x22,0x7e,0xb3, + 0x13,0xff,0x38,0xfa,0xff,0x5c,0x20,0xfc,0x43,0x18,0x65,0x9f,0x61,0x89,0xd6,0xfa, + 0xbd,0xd2,0xea,0x1c,0xf8,0x47,0xb0,0xdd,0x6f,0x7d,0x38,0x9b,0x61,0xae,0x86,0x69, + 0x32,0x25,0x67,0xfd,0xbb,0x35,0x3f,0xfb,0xc0,0xb3,0x9d,0x4d,0x4b,0x82,0x44,0x20, + 0x40,0x57,0xc4,0x49,0x09,0x4d,0x29,0xa2,0x6d,0xf8,0xa7,0xc2,0x00,0x39,0xee,0x7d, + 0x9d,0x7b,0x60,0x0c,0x9a,0x67,0x7a,0x23,0x9d,0xbc,0x11,0x96,0x84,0x27,0x10,0xc5, + 0x5e,0x57,0xf9,0x8e,0xdb,0x86,0x7f,0xb0,0xff,0xb3,0x3f,0x15,0xbf,0x4c,0xe1,0x93, + 0xfa,0x4f,0x2e,0x34,0xdc,0xec,0xa7,0x50,0x06,0xfe,0x01,0xc0,0xba,0x08,0xcc,0xfa, + 0x2b,0x53,0x18,0x60,0xff,0x27,0x01,0x7b,0x3b,0x8d,0x79,0xe0,0x29,0x0c,0xfb,0xbf, + 0x2e,0xa8,0x04,0xf6,0x71,0x28,0x53,0x19,0xff,0x9e,0xe7,0x23,0xf9,0x98,0x3a,0xf3, + 0x2c,0xaf,0x61,0xfb,0x37,0xf5,0x8d,0x86,0xf1,0xef,0x79,0xfe,0x1f,0xfb,0xef,0x3f, + 0xd9,0xfc,0x2b,0x78,0x96,0xdf,0x20,0xdc,0xc9,0x80,0xd1,0x14,0x86,0xf4,0x7f,0xfc, + 0xfc,0xff,0xe0,0xf9,0x97,0x14,0xfa,0x07,0xcc,0xb9,0x60,0xf9,0x93,0x3f,0xf6,0x5f, + 0x53,0xd3,0x1f,0x72,0x97,0xd7,0xfb,0x7f,0xf8,0xf8,0xff,0x17,0xfe,0xb5,0x4c,0x4e, + 0x4e,0xea,0x9f,0x60,0xfc,0xff,0xf9,0xfe,0xff,0x64,0xdf,0xe3,0x7f,0xf9,0xc3,0xff, + 0xf2,0x87,0xff,0x8e,0xf9,0xff,0x2f,0x7f,0xf8,0x49,0xff,0xfe,0xb3,0xf9,0x9f,0xff, + 0x5c,0xf7,0xeb,0x05,0xe7,0xe1,0x38,0x6d,0xd1,0x3c,0x23,0xe2,0xb3,0xf0,0x2f,0x94, + 0x57,0xc3,0x71,0x7e,0x35,0x5f,0x7e,0x50,0xf9,0x4b,0xb8,0x8f,0x2e,0x08,0xcb,0xbb, + 0x4b,0x6b,0xf9,0x69,0xb0,0xb9,0xf3,0x83,0x69,0x7e,0x8c,0xad,0xd9,0x08,0xb6,0xd9, + 0x8f,0x95,0x6e,0x51,0xbe,0x0f,0xd5,0x7a,0xee,0xfc,0xa0,0x8d,0x1f,0x7b,0x4b,0xb9, + 0xaf,0xbb,0x96,0x3d,0x1f,0xd5,0xe0,0x42,0x9e,0xfc,0xe0,0xb8,0xb5,0xdf,0x14,0xca, + 0xfe,0x49,0x3a,0xd6,0xdf,0xec,0x0f,0xa8,0x33,0xf6,0x48,0xbf,0x56,0x1b,0x8c,0x32, + 0xc6,0x89,0x8c,0xfc,0x9d,0x2d,0x3f,0x08,0x5b,0xc8,0x15,0xb8,0x91,0xed,0x0e,0xd8, + 0x6e,0x73,0x52,0x6d,0x31,0xfa,0x23,0x4d,0x95,0x1f,0x7c,0x02,0x9b,0xe4,0x2c,0x0b, + 0x44,0xc4,0x3d,0x74,0x42,0x6e,0xd4,0x03,0xb9,0xf2,0x5f,0xce,0xfc,0xe0,0x7d,0xb4, + 0x56,0xef,0xde,0x4f,0x8a,0xd9,0xee,0x40,0x1d,0xc9,0xf9,0xfe,0x76,0x7d,0xd4,0x32, + 0x78,0x78,0x7d,0x20,0x24,0x57,0x87,0xb6,0x42,0xaf,0xe2,0x77,0xb4,0x65,0xcb,0xd9, + 0x1f,0xe0,0x2a,0xed,0x11,0x54,0x6f,0xae,0x0d,0xcd,0x56,0x5b,0x68,0x65,0x72,0x79, + 0xae,0x7c,0x99,0x5d,0x1f,0x25,0xc1,0x2b,0x5d,0x4d,0x5a,0x40,0x15,0xb7,0xc0,0x87, + 0xea,0x62,0xdd,0x93,0x6a,0x0b,0x99,0xcc,0xd7,0x1f,0x72,0x3f,0x79,0x07,0x5a,0x86, + 0xbc,0x61,0xde,0x5f,0xf4,0x46,0xfd,0xf3,0x46,0x23,0x71,0x7e,0xac,0x5e,0x8e,0xfc, + 0xa0,0x5f,0xfa,0x31,0xbc,0xc8,0xb6,0xb1,0x25,0x31,0x71,0x9d,0x34,0x41,0x50,0x48, + 0x4f,0xb2,0xe7,0x27,0xfd,0xf7,0x4d,0x28,0x8f,0xc1,0x26,0xa1,0xb2,0x5f,0xc6,0xf3, + 0x61,0x0f,0xc0,0x8e,0xdc,0xf9,0x85,0x73,0x36,0x7f,0xf5,0x00,0x3c,0x70,0xdf,0x9c, + 0xb0,0x6b,0x64,0xee,0x57,0x90,0xdf,0xe0,0x8d,0x92,0x64,0x6b,0xbc,0x3f,0x31,0x8c, + 0x84,0x3d,0x3f,0xb8,0xbc,0x9b,0xa8,0xbf,0x95,0xeb,0x78,0xbf,0x71,0xd5,0x31,0x8d, + 0x39,0xf2,0x83,0xc9,0xf2,0x43,0xf0,0x00,0x5d,0xb4,0xbd,0xe4,0x8e,0x3b,0xd7,0x96, + 0x5d,0x39,0x55,0x67,0x10,0x0b,0x99,0x1d,0x93,0xc6,0x33,0xf4,0x51,0x4d,0xe0,0xed, + 0x42,0x35,0x26,0x34,0x2b,0x9f,0x98,0x1f,0x1c,0x16,0x2e,0x44,0xeb,0xda,0x78,0xdb, + 0x9c,0x0b,0x94,0x57,0x3f,0x59,0x0c,0xc9,0x9a,0x3c,0xfd,0x01,0xc8,0xce,0x0d,0xf2, + 0xb6,0xc8,0x1c,0xd8,0x9b,0xf0,0xad,0x2d,0x49,0xa7,0xa5,0x42,0x79,0xfb,0x43,0xfa, + 0x34,0x88,0x62,0x7f,0x00,0xb5,0xa6,0xcd,0x4a,0x63,0xcd,0xcc,0x9d,0x1f,0x04,0x29, + 0x76,0x10,0x65,0xe1,0x46,0x7f,0x00,0xbf,0x36,0x33,0x57,0xbe,0x2c,0xdd,0x9f,0x64, + 0x83,0x1c,0xa6,0x87,0xa0,0x4e,0xae,0x35,0xfa,0x03,0x1c,0x72,0x0c,0xd3,0xa2,0xce, + 0x4e,0xdb,0xfa,0x43,0x9e,0x2f,0xfa,0x37,0xb8,0x11,0xcf,0x7b,0x1d,0x96,0xff,0x0d, + 0x17,0x46,0x2e,0x62,0xd0,0x5e,0x1f,0x77,0x1e,0x5e,0x82,0xfa,0x90,0x67,0x68,0xda, + 0x79,0xf9,0x32,0x2c,0xd1,0x66,0x19,0xc7,0xc8,0xb6,0x20,0x6d,0x98,0xf3,0x7c,0x90, + 0x33,0x6d,0xdd,0x05,0x3e,0x45,0x66,0xae,0x07,0x85,0x04,0x30,0xdb,0x2a,0x94,0xcb, + 0x77,0x3e,0xc8,0x35,0x9b,0xa9,0x1a,0xf6,0x07,0x0b,0x07,0xd8,0x6c,0xf8,0x35,0xab, + 0x2d,0xa4,0xbd,0x3f,0xa4,0xed,0x7c,0xd8,0xf2,0x5d,0x32,0x6f,0x4b,0xfe,0x5d,0xd4, + 0x47,0x15,0xf9,0xd2,0x6d,0x21,0xe5,0x9c,0xf9,0xc1,0xd8,0xf4,0x37,0x83,0xfd,0x74, + 0x5f,0xbb,0xe7,0xb1,0xc2,0xe1,0x32,0x2c,0x73,0x4b,0xb5,0xb5,0x6c,0x72,0xf4,0xb7, + 0xb4,0xf7,0x47,0xfa,0xf1,0xb2,0x1b,0x14,0x73,0x36,0xa2,0xf9,0xce,0x87,0xb5,0xf3, + 0x63,0x42,0xa2,0x28,0x88,0x6a,0xf0,0x58,0x45,0xe2,0xb6,0x46,0x58,0x35,0x75,0x7e, + 0x50,0x2d,0x90,0x85,0x07,0xe4,0xaa,0x7b,0xbb,0x87,0xc5,0x3e,0xf6,0x69,0x56,0xc6, + 0x3c,0x6c,0x3d,0x2b,0x87,0x60,0x81,0x33,0x3f,0x68,0xf1,0x63,0xfe,0x2e,0x8f,0x10, + 0xd1,0xd4,0xb8,0x3c,0x77,0x6e,0x1b,0xa5,0xba,0xbf,0xd4,0xcc,0x0f,0xd2,0xd4,0xf7, + 0xe2,0xcf,0xc8,0x0f,0x82,0x07,0x36,0x81,0x4a,0x65,0xec,0x0f,0xb0,0x47,0xab,0x54, + 0x52,0x65,0xf2,0x5f,0xa7,0x79,0xf2,0x83,0xdd,0xb3,0x95,0x4d,0x91,0x85,0x6a,0x60, + 0xad,0xf8,0xdf,0xa5,0x01,0x7a,0x43,0xf8,0xba,0x14,0x2d,0x16,0x4b,0xe5,0x07,0x6f, + 0xc8,0xc8,0x0f,0x7a,0xf6,0x90,0x0f,0x8d,0x8f,0x8e,0xc2,0x98,0xd0,0xa4,0xa5,0xdb, + 0x62,0x1b,0x46,0x83,0x93,0x1f,0xd3,0xca,0x4f,0x6b,0xff,0xa0,0x2c,0x8c,0x79,0xba, + 0xc9,0x69,0xed,0xf7,0x74,0xa1,0xca,0xe2,0xd7,0x03,0xe4,0xe5,0xe8,0x8d,0xb1,0x5a, + 0x7b,0x7e,0x30,0xcd,0x8f,0x5d,0xfd,0x98,0xde,0x19,0xaf,0xa4,0xf2,0x0a,0xf1,0x15, + 0x3a,0x00,0x3b,0xba,0xe5,0x31,0x32,0x9b,0x6e,0x8a,0xcd,0xdf,0x9d,0x3a,0xef,0xe3, + 0x06,0xdd,0xd9,0x1f,0x92,0x3e,0x53,0xb4,0xb5,0x6e,0x0e,0x95,0xb5,0x9b,0x4e,0xc8, + 0xfb,0xe5,0x4a,0xa1,0x68,0x8c,0x3c,0x86,0xfd,0x30,0xbb,0xe5,0x9c,0xf9,0xc1,0xb0, + 0xf4,0x92,0xd0,0x39,0xbd,0x3a,0xe6,0x87,0x7b,0x75,0xa0,0x47,0x18,0x5c,0xb3,0xca, + 0xa0,0x72,0xe7,0x07,0xa5,0x3d,0xea,0xd1,0x8e,0xeb,0x9f,0x67,0x7f,0x5f,0x5d,0x8a, + 0xd3,0x3a,0xb8,0x1f,0xeb,0xbb,0x7b,0x0a,0x9a,0x69,0x4d,0xce,0xfc,0x20,0xd6,0x67, + 0xbd,0x0b,0x8d,0x51,0xef,0x46,0xf4,0x3f,0x2a,0xef,0x86,0xed,0x98,0x9f,0xc6,0x4c, + 0x7e,0xec,0x19,0x75,0x12,0x16,0xc1,0x16,0x5d,0x8c,0xc3,0xa0,0xb6,0x44,0x33,0xdd, + 0x38,0x4d,0x19,0x8b,0xb2,0xf2,0x83,0xd0,0x3b,0xe0,0xa3,0xb2,0x4c,0xaa,0xe8,0xb8, + 0xee,0x0b,0xbb,0xb1,0x3f,0xcf,0x61,0xec,0x2f,0x91,0x3b,0x3f,0x88,0xfd,0x01,0xf4, + 0xb9,0x11,0x79,0x0b,0xd9,0x09,0xf7,0x69,0x35,0xaa,0x79,0x1b,0x4d,0x2b,0xa6,0xb2, + 0xf4,0x51,0xf2,0x5c,0x2a,0xd3,0x10,0xd0,0x3e,0xf6,0x9a,0x78,0x30,0x04,0xed,0x95, + 0x03,0x91,0xd6,0xbc,0xfd,0x01,0x26,0xd4,0x06,0xea,0x89,0x74,0xc6,0x68,0x02,0x1a, + 0xc1,0x68,0x3b,0xac,0x36,0x3f,0x66,0x5f,0x0f,0xce,0xfe,0x90,0x1f,0xce,0x5b,0x42, + 0xbd,0xba,0x98,0xfc,0x1c,0x9e,0x50,0xc1,0xcb,0x9a,0xf8,0xfc,0xe4,0xce,0x0f,0x6e, + 0x34,0x17,0x49,0x55,0xca,0x18,0x9b,0xf6,0x91,0xf6,0x46,0x74,0x91,0xd1,0x31,0xe0, + 0x8d,0xa6,0x7a,0x95,0x19,0x71,0xeb,0x3c,0x6b,0xbd,0xc2,0xc8,0x0f,0xa6,0xd1,0xce, + 0x33,0xa1,0xd1,0xd2,0x1e,0x3c,0xdf,0xb6,0x8e,0x78,0xe8,0x26,0xd5,0xb7,0x83,0xfd, + 0x34,0x66,0xf9,0xff,0x04,0x6c,0x51,0x9c,0xd1,0xe7,0x7a,0x36,0x2d,0x8f,0x73,0x1a, + 0x30,0xb2,0x52,0x7d,0x18,0x54,0x8d,0xfd,0x74,0x2e,0xad,0x0f,0x97,0xf6,0x64,0xa1, + 0x85,0x51,0x9a,0x6a,0x0b,0x19,0x80,0x99,0xc2,0xed,0xda,0x4c,0xbb,0x3e,0xfc,0xb3, + 0xe5,0xa3,0xfc,0x3c,0x3b,0x5b,0xb4,0x25,0xc7,0x95,0x17,0x85,0x06,0x7d,0x55,0x7c, + 0xfa,0x3a,0xe9,0x75,0xa9,0x6e,0x0e,0xfb,0x29,0x66,0xf9,0x9f,0x58,0x4a,0x1f,0xbe, + 0xd5,0x36,0x1b,0x57,0xe0,0x1f,0x52,0xf8,0x47,0x79,0x1f,0xbc,0xfd,0x8e,0xfe,0x90, + 0x98,0x1f,0x7c,0xd7,0xf9,0xfc,0x3f,0x31,0x96,0x19,0xf6,0x9f,0x54,0x5f,0x64,0xa1, + 0x81,0xfd,0xf4,0x81,0xb5,0x3e,0x4f,0x64,0xd4,0x4b,0xe2,0xc1,0x3a,0xcc,0xe8,0xae, + 0xfd,0x6d,0x71,0x5f,0xe7,0x1d,0xea,0x1b,0xa4,0xae,0x9d,0xcd,0xe6,0x47,0xd6,0x7a, + 0xd0,0xa5,0x95,0x59,0xd1,0x79,0x25,0xcc,0x68,0x0b,0x24,0xe4,0x7d,0x64,0x0f,0xfc, + 0x00,0xaa,0x95,0x1e,0xc7,0xf9,0x68,0x8a,0x51,0x26,0xef,0xbe,0xab,0x90,0xa3,0x9d, + 0xb7,0x2d,0xd8,0x83,0x1d,0x23,0xa3,0x07,0xa2,0x95,0x31,0x76,0x65,0xdc,0x86,0x7f, + 0x56,0x1a,0x20,0xa7,0x91,0xa1,0x9d,0x5e,0x25,0x90,0x74,0x2f,0xb9,0x69,0x50,0xf9, + 0x10,0x38,0x10,0x7a,0x80,0x3e,0x1f,0xbf,0x7e,0xd4,0xeb,0x38,0x1f,0xb6,0x1c,0xfb, + 0x43,0xde,0x63,0x76,0x43,0x42,0xf6,0x98,0x37,0x0a,0x58,0x34,0xc0,0xf3,0xe9,0x6f, + 0x40,0xcb,0x11,0xc4,0x3f,0xd6,0xfc,0xcb,0xd2,0x9e,0x74,0x7e,0x10,0x0b,0x57,0x4b, + 0xe2,0x55,0x28,0x94,0xe2,0x07,0xd5,0x8d,0x0a,0x2f,0xf6,0xd7,0xc9,0x5b,0x1d,0xfa, + 0xf0,0x0a,0x67,0x7f,0x80,0x7e,0xf7,0x37,0x7d,0x58,0x16,0x57,0xc5,0x1b,0x05,0xe0, + 0x89,0x69,0x83,0x45,0x0c,0xff,0xa8,0xe6,0xf3,0x1d,0xf9,0x41,0x6e,0x7c,0x9b,0xe0, + 0x89,0x69,0x73,0xf8,0x78,0xe1,0xe1,0xef,0xfd,0x08,0xc7,0x9b,0xb4,0xf0,0xea,0x88, + 0x9d,0x9f,0xaf,0x37,0x8c,0xe3,0xa1,0x1e,0x53,0x68,0x27,0x1a,0x08,0x3c,0xad,0x0f, + 0x4f,0x96,0x8f,0x28,0x06,0xc8,0x31,0x60,0x4f,0xc7,0x3f,0xc4,0x44,0x3c,0x31,0xad, + 0x81,0x9f,0x27,0x25,0x1e,0x33,0x5a,0x07,0xd8,0xf0,0x8f,0xe0,0xac,0xd7,0x36,0x8f, + 0x45,0xbb,0xcb,0xcc,0x18,0x36,0xc2,0xb4,0x3c,0xf9,0xc1,0x94,0xa1,0x54,0x55,0xf3, + 0x7e,0xc8,0xdd,0xbc,0x10,0x4c,0xe0,0x89,0xb0,0xbc,0xfd,0x01,0xb8,0x50,0x19,0x1b, + 0x25,0xed,0xd4,0xfc,0x51,0x57,0xb5,0x6b,0x33,0x94,0x24,0x1d,0xf8,0x67,0x71,0x41, + 0x46,0x37,0x24,0x16,0xaf,0xab,0x55,0x3c,0x1f,0xad,0x07,0x11,0xd1,0x66,0xde,0x31, + 0xc0,0xd6,0x1f,0xc0,0x5f,0x86,0xf9,0xc1,0x6a,0x5e,0x2f,0x0f,0x0f,0xf2,0xfe,0x48, + 0xf7,0xe1,0x95,0x30,0xd2,0x0f,0x58,0x3a,0x97,0xd1,0x1f,0x69,0x43,0x66,0x7f,0x00, + 0x6f,0x44,0x64,0xab,0x10,0x4a,0xa1,0x84,0x56,0x51,0x48,0x18,0x47,0xa7,0x9d,0xb5, + 0xea,0xeb,0xb7,0x67,0x9e,0x97,0xc1,0x46,0x77,0x3e,0x75,0x3e,0x48,0x64,0xf8,0x47, + 0xd8,0x3a,0xdb,0x1b,0x9d,0xf1,0x51,0xce,0xfe,0x00,0x86,0xf1,0x50,0xe7,0xef,0xe1, + 0x35,0xa5,0x41,0xf3,0x60,0x7d,0xdc,0x6b,0x59,0x7a,0xaa,0x8a,0xb4,0x3e,0x9c,0x1b, + 0x62,0x17,0x33,0xba,0x19,0x10,0xc2,0x63,0x2b,0x61,0x44,0xe5,0x3f,0x9d,0x4e,0xe3, + 0x1f,0xb0,0xe5,0x07,0x1f,0x34,0x8d,0xef,0xaa,0xf3,0x97,0xcb,0xed,0xe4,0x16,0xfa, + 0xe0,0xe7,0x02,0xe1,0x99,0xf6,0xfe,0x48,0xdb,0xa5,0x5d,0x59,0xea,0xb2,0x01,0x7a, + 0x3f,0x99,0xaf,0xe1,0xfd,0xe6,0x54,0xdb,0xf4,0xe1,0x99,0xe3,0xc5,0xb7,0xe5,0x7a, + 0x6f,0x7f,0xd4,0xbd,0x46,0x7a,0x4d,0x68,0x0e,0x7b,0xa3,0x64,0xc4,0xd2,0xe7,0x24, + 0x1c,0xfd,0x01,0xd2,0x46,0x0a,0x18,0x17,0xc1,0xec,0x35,0x0e,0xfc,0x23,0x67,0xf4, + 0x07,0x60,0xc6,0x34,0x23,0x51,0xc8,0x3c,0xfc,0x18,0x76,0xcc,0xc6,0x7a,0xcc,0x63, + 0xd4,0x5c,0xff,0x19,0xfa,0x70,0x34,0x0a,0x47,0x78,0x07,0x0c,0xbc,0x22,0x19,0x86, + 0xd8,0x9d,0x5e,0x0f,0x52,0xd6,0xee,0xe0,0xe6,0x41,0xdc,0xb8,0xa1,0x50,0x3c,0x81, + 0x19,0xf6,0x01,0x87,0x3e,0x9c,0x2a,0xb7,0x9a,0xdf,0xef,0xad,0xb6,0x44,0x21,0xcc, + 0x01,0x51,0x23,0xaf,0xc2,0x81,0x6d,0x73,0x10,0x08,0x8d,0x68,0xe6,0xf3,0xbb,0xbb, + 0xbf,0x92,0x4a,0x02,0x12,0x33,0x1b,0x48,0x4e,0xb2,0x40,0x53,0x99,0xdc,0xba,0x41, + 0x3c,0x09,0x1f,0xc6,0x17,0x1a,0xe7,0xa3,0x99,0xeb,0x4d,0x76,0xea,0xa5,0xb1,0xde, + 0x67,0xc6,0x08,0x8c,0x4b,0x77,0xa0,0x42,0x6c,0x18,0x26,0xb4,0xc6,0xed,0xec,0xa7, + 0xc8,0xbd,0xe6,0xfc,0x40,0xd9,0xb3,0x2c,0x5a,0x2d,0x31,0xce,0x77,0x78,0xc3,0x6c, + 0x14,0x90,0xd2,0xf7,0xde,0xc5,0xfe,0x87,0xee,0x39,0xcf,0xae,0x8c,0x59,0xf3,0xff, + 0xa4,0x62,0xf6,0x87,0xe4,0xfe,0x27,0xf0,0x36,0x1b,0xe6,0x69,0x6d,0xff,0xce,0x1b, + 0x02,0x6e,0x8d,0x48,0x5a,0xaf,0x52,0xcd,0xf1,0x8f,0x35,0xff,0x00,0x8f,0x09,0x76, + 0x7f,0x95,0x70,0xaf,0x57,0x4e,0x44,0x53,0x8a,0xf1,0xff,0x8e,0x57,0xda,0x57,0xac, + 0xb7,0xed,0xdf,0x55,0x65,0x4b,0x96,0x3f,0x4f,0xc8,0x71,0xc9,0x0f,0x6e,0x60,0xdf, + 0x57,0x2f,0x54,0x87,0x33,0xfa,0x03,0x18,0xd1,0xc4,0xda,0xad,0x5f,0x17,0x27,0x67, + 0xbb,0x27,0x8c,0xfe,0x72,0x6b,0xd1,0x03,0xb7,0xb1,0xf1,0x9e,0x4e,0xeb,0xc3,0x85, + 0x3d,0x52,0xc6,0xfc,0x60,0xa2,0x50,0xe0,0x65,0x02,0xc3,0xf2,0x04,0xcc,0x56,0x1c, + 0xfd,0x91,0x2a,0x95,0xac,0x78,0xd7,0x3a,0x6e,0x1c,0x14,0x82,0x8a,0x29,0x76,0x25, + 0xec,0x19,0x63,0xfb,0x77,0xf3,0xfe,0x1d,0x92,0x71,0x3e,0xac,0x01,0x7b,0x52,0x6c, + 0x03,0x3c,0xc3,0x22,0xb6,0x5b,0x27,0xe7,0xd9,0xff,0x62,0x00,0xe4,0xb8,0x2f,0xed, + 0x7f,0xb0,0x3f,0x40,0xe6,0xe9,0x15,0xa3,0x90,0x92,0x85,0x8f,0x60,0xab,0x9c,0x6d, + 0x8e,0xfe,0x00,0xae,0x32,0x4f,0x3a,0xcc,0x3d,0x0c,0x81,0xa3,0xd8,0x38,0x48,0x8d, + 0x57,0x86,0x89,0x08,0x75,0x03,0x4a,0xaf,0x52,0xdb,0xe5,0x77,0xe0,0x9f,0xfb,0x59, + 0x58,0x41,0x7d,0xf8,0x53,0x33,0x46,0xb1,0x51,0xf3,0xa9,0x9e,0xfd,0x5f,0x1d,0xa1, + 0x13,0x6a,0x5d,0xa2,0x24,0x28,0xbe,0x8d,0xf3,0x03,0x2c,0x10,0x27,0xd3,0xe7,0xc3, + 0x96,0x5f,0x82,0x09,0x85,0x9f,0x0f,0x8b,0xea,0xaf,0xe6,0x97,0x5e,0x3e,0xd7,0x39, + 0x0e,0x97,0x94,0x16,0xfc,0x5e,0xce,0xc7,0xde,0x57,0x5b,0x8a,0x1c,0xf8,0xa7,0xbf, + 0x20,0x0e,0xef,0x09,0xd3,0xcf,0x04,0xc6,0xc5,0x66,0x98,0xec,0xba,0x51,0xf5,0x8c, + 0x73,0xa1,0x78,0x4b,0x1e,0xfe,0x47,0x97,0x93,0x42,0x31,0xf5,0xe9,0xfe,0x3e,0x82, + 0xfa,0xf0,0x5a,0xd5,0x35,0x35,0xff,0x73,0x4c,0x8a,0xc1,0x0e,0xca,0x9b,0xf2,0xe1, + 0xc0,0x6b,0x21,0x27,0xbf,0x61,0xe3,0x7f,0xa4,0xc7,0xe5,0xcd,0x2a,0x46,0x2b,0x29, + 0xe0,0x61,0xf3,0xa9,0xba,0xa6,0xd6,0x87,0x2f,0x2d,0x7f,0x1b,0x76,0x40,0x10,0xa3, + 0x79,0x40,0x9a,0x90,0x9a,0x82,0xf6,0x63,0xf5,0xd2,0xfd,0x21,0xad,0xf3,0x61,0xe3, + 0xc2,0x6e,0xf9,0x02,0xe5,0x41,0x9c,0xaf,0x07,0xc8,0xad,0x0f,0xb7,0xf5,0xc7,0x7e, + 0x12,0x8e,0xc2,0x3e,0xab,0xdb,0x24,0x94,0xe4,0x7a,0xbe,0xbd,0x3e,0x4e,0x86,0x13, + 0xe0,0x3b,0xc3,0xd0,0x0b,0x7f,0xdb,0xd2,0x4f,0xe2,0x7f,0xa4,0x65,0xd0,0x19,0x56, + 0x93,0xae,0x3a,0xec,0x8e,0x0e,0x01,0xd9,0x95,0x6b,0x7e,0xc6,0xd2,0xf8,0x07,0xbe, + 0x1c,0xfa,0x2e,0xad,0x1c,0x96,0x53,0xfd,0x91,0x62,0x90,0x02,0x06,0x79,0xce,0x07, + 0x59,0x5b,0xa1,0xc1,0xf3,0x34,0x7e,0x04,0x65,0xe1,0x03,0x1f,0x4a,0x4d,0xed,0x25, + 0x4b,0xc4,0xe3,0x90,0x6a,0x0b,0x69,0xf1,0x3f,0x27,0xd3,0xfc,0xcf,0xd5,0x71,0xe1, + 0x3d,0xb0,0xce,0x97,0x69,0xd6,0xec,0x8d,0x02,0x72,0xea,0xc3,0xf7,0x28,0x2f,0xb6, + 0xd5,0x25,0x4b,0x16,0xf3,0xfe,0x00,0x4d,0x6a,0xf1,0xd4,0xfa,0xf0,0xc4,0xd5,0x8f, + 0xc1,0x2f,0x79,0x37,0x00,0xce,0xff,0xcc,0x07,0x39,0x17,0xff,0x73,0xd1,0xa6,0x8f, + 0x8a,0xa8,0x0f,0x73,0xda,0xa7,0x90,0x17,0x06,0xae,0xe7,0xb0,0xe7,0x11,0x3a,0x3f, + 0x8f,0x3e,0x3c,0x21,0xdd,0x27,0x77,0x42,0x8c,0x81,0x9c,0xab,0xf8,0x87,0xa6,0x15, + 0x05,0xe7,0x4e,0xcd,0xff,0x8c,0xc3,0x0f,0x63,0x75,0x88,0x7f,0xf0,0x34,0xb4,0x96, + 0x58,0xb1,0xa3,0x51,0x76,0x36,0xff,0x23,0xc4,0xa6,0x8d,0x85,0xd9,0x32,0xe8,0x42, + 0x7d,0xb8,0x71,0x5e,0xe7,0x27,0xe9,0xc3,0xf1,0x90,0x2f,0xef,0x43,0xfc,0x18,0xd0, + 0x86,0xb5,0xb6,0xc0,0x27,0xe4,0xd2,0x87,0xc3,0x1a,0xd8,0x9c,0xf4,0xb5,0xbb,0x51, + 0x4f,0x9e,0x57,0xef,0x6d,0xc7,0x3f,0x52,0xe1,0x66,0x69,0x67,0x78,0x66,0x94,0xfc, + 0x08,0xcf,0xf3,0xca,0xa7,0x0f,0x37,0xd7,0x83,0x5f,0x92,0xf8,0xb1,0x68,0x16,0xdb, + 0x93,0x9b,0xff,0x49,0xe3,0x1f,0x4f,0x98,0x26,0x54,0x9c,0x1f,0xce,0xff,0x38,0xdb, + 0x42,0xa6,0xf5,0xe1,0xb6,0xfa,0xb8,0xfd,0xb1,0xcb,0xd0,0xb4,0xdc,0x1b,0x9d,0xb6, + 0x8b,0xd3,0x38,0xa8,0x0f,0x97,0xa6,0xe2,0x7f,0xfe,0x8d,0xfe,0xab,0xa7,0x5e,0xf3, + 0x0c,0x89,0xdf,0x62,0xbf,0xde,0xe8,0xa0,0x4d,0x72,0x9f,0x0f,0xd2,0xd5,0xad,0xed, + 0x04,0x3f,0x0d,0x31,0xfc,0x43,0x4c,0xda,0x47,0xc8,0xab,0x0f,0xd7,0x36,0x76,0x3d, + 0x88,0x7c,0x97,0x39,0x3a,0xd7,0xd4,0xfa,0x70,0x86,0x7f,0x2a,0x1e,0x65,0xe8,0x91, + 0x57,0x03,0xb1,0xd9,0xbb,0x05,0x8c,0x69,0x2c,0xc9,0xa3,0x0f,0x8f,0x95,0xbf,0x15, + 0x7e,0xcd,0x13,0xd4,0x56,0x46,0x5b,0x39,0x9b,0xb7,0x3e,0xe0,0xd0,0x87,0x67,0xf1, + 0x3f,0x09,0xe1,0xc7,0xd2,0x19,0x78,0xd6,0xf1,0xd7,0xcf,0xc1,0xff,0x58,0xfe,0x47, + 0x56,0x76,0x40,0xe2,0xb6,0x3a,0xc9,0x13,0x31,0x66,0x5b,0x31,0x8e,0x05,0x21,0x25, + 0x79,0xfb,0x43,0x2e,0x0e,0x3f,0xa0,0x55,0xc5,0xe5,0x24,0xb9,0x60,0xf4,0x47,0xca, + 0xa5,0x0f,0xb7,0xd5,0xc7,0x49,0xff,0x03,0x22,0x5a,0xac,0x93,0xcd,0x4f,0x02,0xfb, + 0xd5,0x6c,0xe0,0x65,0xb9,0xd9,0xfa,0x70,0x2b,0xde,0x31,0xfc,0xd3,0xc9,0xd0,0x8e, + 0xbc,0x8c,0x9c,0x62,0xc0,0x60,0x41,0xf4,0xaf,0x73,0x7d,0xbf,0xe9,0xfe,0xd8,0xdd, + 0xdd,0x77,0xc3,0x2f,0x69,0x7d,0x38,0xd0,0x26,0xbe,0xa2,0x30,0xfc,0x73,0x5b,0xc9, + 0x06,0x16,0xcd,0x3f,0xee,0x72,0xea,0xc3,0x6d,0xe7,0xc3,0x16,0xec,0x99,0x31,0x81, + 0x45,0x7f,0x31,0x43,0x0d,0x05,0x39,0xfd,0x89,0xad,0x3e,0xae,0xeb,0x59,0xe5,0x97, + 0xf7,0xd6,0xc7,0x3c,0x89,0xd6,0x93,0x0c,0xff,0xdc,0xa8,0xda,0xc3,0x56,0xae,0xf3, + 0x61,0x2b,0x1e,0xd3,0xc4,0xe9,0x8b,0x40,0x5e,0x4a,0x12,0xda,0x26,0x98,0x5f,0xe8, + 0x42,0x20,0xc4,0x36,0x86,0x8e,0xf7,0x77,0xf6,0x47,0xda,0x8a,0x7a,0x7b,0x54,0x7f, + 0x3d,0x82,0xb2,0xa8,0x5c,0xe3,0xb5,0xf5,0x07,0x60,0xfb,0xaf,0x4e,0x7d,0x2e,0x66, + 0xe9,0x74,0xb6,0xdb,0x0a,0x40,0x4e,0xfe,0xd9,0x81,0x7f,0x68,0xbf,0x5e,0x47,0x3d, + 0x54,0xd0,0x91,0x66,0x0f,0x7b,0xe3,0x42,0xf6,0x78,0x6d,0xe7,0xc3,0x0a,0xbb,0xc9, + 0x05,0xb6,0xe9,0x58,0xd5,0x85,0xc7,0x94,0xb3,0xf9,0xa9,0xcd,0x35,0x3f,0xe9,0xfe, + 0xd8,0x95,0xca,0x63,0xdd,0x2f,0x03,0xfb,0xbe,0x06,0x59,0x10,0x7f,0x9f,0x7d,0x8f, + 0xa9,0x7a,0x1f,0xaf,0x23,0xde,0xd9,0xf2,0x23,0xd2,0xdf,0xd0,0x9e,0x63,0x35,0x20, + 0x77,0x93,0xdf,0xe1,0x69,0x02,0x6a,0x71,0xae,0xf8,0xe5,0xec,0x8f,0xf4,0x44,0x87, + 0x8f,0xb2,0xcf,0xd0,0xa7,0x32,0x20,0xa4,0x5e,0x9d,0xf3,0x7e,0x9b,0x3e,0x5c,0xc2, + 0x26,0x24,0xec,0xff,0x48,0x3f,0x5b,0x48,0xb5,0x70,0xf5,0x42,0x63,0x5a,0x86,0xf2, + 0xe8,0xc3,0xef,0x5f,0x09,0x3f,0x55,0xb0,0x3e,0x45,0x54,0x91,0x88,0x60,0xeb,0x61, + 0xc6,0x7b,0x5a,0x56,0xfd,0x57,0x5a,0x1f,0x55,0x7e,0x1e,0x26,0xab,0x39,0xda,0x19, + 0xa3,0x3c,0xbe,0x9f,0xc3,0x63,0x61,0xfd,0xfc,0x58,0xd8,0x3c,0xfa,0x70,0xac,0xaf, + 0x34,0xd3,0x5e,0x7a,0x71,0xa2,0xaa,0x8e,0x19,0x9c,0xff,0x39,0x07,0x83,0xb4,0x65, + 0x30,0xab,0x3f,0xb6,0xc1,0xff,0xa0,0x50,0x9c,0x2e,0x48,0xc2,0x76,0x32,0xb7,0xe2, + 0x30,0xd4,0x20,0xec,0xf9,0x2d,0x3c,0x19,0x59,0x30,0x98,0xd5,0x1f,0xbb,0x97,0xa4, + 0xce,0x87,0xc5,0xb2,0xd3,0x22,0x5a,0x0a,0xf0,0xb0,0x51,0xa6,0xbd,0x1b,0xcb,0x11, + 0x13,0x59,0xfd,0xb1,0x1d,0xb3,0x27,0x47,0x7d,0x81,0x78,0x2f,0x3f,0x28,0x84,0x6d, + 0x44,0xad,0xf3,0x41,0xcc,0xbf,0xaf,0x5a,0x6e,0x83,0xc1,0x48,0xd4,0xdc,0x5f,0x20, + 0x56,0xc2,0x84,0xd1,0xd1,0x68,0x80,0x26,0x84,0xd4,0xf9,0x68,0xe6,0xf3,0x1d,0xfd, + 0x01,0x26,0x59,0xf4,0x77,0x8f,0xfc,0xe8,0xa3,0xd4,0x15,0xe1,0x63,0xf5,0xb2,0xd1, + 0x28,0x20,0x7f,0x7f,0x48,0xdd,0x43,0xf9,0xc2,0xe3,0x34,0xe3,0xdb,0xbc,0x82,0xc3, + 0x93,0xb3,0x3f,0xb6,0xf1,0xfe,0x0b,0xf4,0xb6,0x5d,0x22,0xb6,0x05,0x6b,0x48,0xe1, + 0x61,0x76,0x05,0xec,0xf8,0x47,0xcf,0x3c,0x1f,0x56,0xae,0x26,0xcb,0xb5,0x19,0x46, + 0xe2,0x46,0xd3,0xe2,0x61,0x43,0x1f,0x9e,0xa7,0x3f,0x00,0x83,0x3d,0xfe,0xd5,0xe4, + 0xa4,0x76,0x20,0x86,0x1d,0x14,0x43,0xaf,0xc0,0xd3,0x5d,0xf3,0xb1,0x5e,0xde,0x86, + 0x7f,0xb0,0x3f,0x40,0x34,0x80,0xe7,0xc7,0x71,0xb4,0x33,0xe2,0xa9,0x14,0x5f,0x18, + 0x98,0xa0,0x1b,0x30,0xff,0x35,0x00,0x1f,0x48,0x4d,0x89,0x40,0xce,0xfe,0x00,0x06, + 0xec,0x69,0xfe,0x4d,0xed,0x83,0x33,0x9e,0x99,0x9e,0x9a,0xb1,0x61,0x6d,0x62,0x75, + 0x66,0x7f,0xc8,0xf2,0x51,0x93,0x1f,0xe3,0x13,0x75,0xc2,0xbb,0xbf,0xf3,0x9d,0xfe, + 0x89,0x54,0x7f,0xf2,0xee,0x13,0x7a,0xdd,0xb9,0x29,0xfa,0x03,0xe0,0x7e,0xea,0x9b, + 0xa1,0x13,0x9a,0x71,0xbe,0x12,0xf9,0xd7,0xd8,0x53,0xea,0xf5,0x27,0xe4,0xcc,0xfe, + 0x00,0x3f,0x71,0xa0,0x9d,0xbf,0x23,0x1f,0x75,0xe1,0x15,0xd7,0x06,0xf2,0x06,0x3c, + 0x4b,0x2b,0x51,0x1f,0x3e,0x66,0xf1,0x3f,0x6d,0x52,0xca,0x7b,0xc7,0xcd,0xaf,0xa9, + 0x29,0x82,0x07,0x0d,0xf3,0xc6,0x77,0x83,0x65,0xbd,0x72,0x75,0x46,0x7f,0x80,0x82, + 0xdd,0xf0,0x8e,0x03,0xed,0xfc,0x18,0x0d,0x81,0xcb,0xc2,0xdf,0xd6,0x4e,0xf6,0xd7, + 0xd1,0xda,0xfc,0xfd,0x21,0x31,0x11,0x86,0xc6,0x76,0xa1,0x19,0xa6,0xb1,0xf8,0xcb, + 0xfb,0x43,0x16,0xe4,0x39,0x1f,0xd6,0x50,0x83,0x17,0x6f,0x47,0x22,0xc8,0xaa,0x17, + 0xe3,0xa9,0x10,0xe2,0xc4,0x3f,0x46,0x90,0x15,0x0d,0xa3,0xbb,0x8f,0xbc,0x4f,0x31, + 0xc3,0xc5,0xc2,0x2e,0xdb,0x91,0xe9,0x99,0xf9,0xaf,0x72,0x4b,0x1f,0x6e,0x18,0xf3, + 0xf6,0x62,0x9b,0x56,0x06,0x84,0xb0,0x9f,0x2a,0x0a,0xc5,0xf3,0xf6,0xc7,0xe6,0xf5, + 0x62,0x0c,0x18,0x84,0x10,0x06,0xa8,0x08,0x84,0x96,0x09,0xa9,0x8a,0xb9,0x9c,0xfd, + 0xb1,0xf1,0x7c,0xae,0x66,0xb9,0x98,0xb6,0xc6,0xa4,0x71,0x78,0xd6,0x8a,0xbf,0x28, + 0x14,0x3f,0x6b,0xef,0x0f,0xe0,0x44,0x3b,0x2f,0x47,0x2b,0x07,0xc0,0xa0,0x7d,0xd8, + 0x95,0x0f,0x60,0x8a,0xfe,0x90,0xfc,0x74,0x54,0x34,0xe4,0x0b,0xc8,0xff,0xa4,0xae, + 0xb4,0x79,0x1c,0xfc,0x8f,0xe2,0xe4,0x7f,0x14,0x99,0x03,0x21,0xf0,0xc1,0xe7,0x28, + 0x19,0x91,0xb1,0x51,0x76,0x76,0x7f,0x00,0x5e,0xfd,0x17,0x4a,0xe3,0x1f,0x61,0xaf, + 0x9a,0x46,0x80,0x37,0xcb,0x59,0xfd,0xb1,0xed,0xe8,0x91,0xa7,0xbd,0xf6,0xb2,0xf9, + 0x2f,0xe2,0x57,0xa8,0xd1,0x1f,0x32,0xcd,0xff,0x94,0x65,0xf0,0x39,0x0f,0x30,0xa3, + 0xeb,0x02,0x3c,0x8d,0xef,0xff,0xe6,0xe7,0x2e,0x84,0x67,0x63,0x22,0x2f,0xcd,0xff, + 0xec,0x06,0xc7,0xfd,0x4d,0x5a,0x49,0xb4,0x6a,0x98,0x66,0xe2,0xe1,0xcc,0xf3,0xd1, + 0x6c,0x68,0x73,0x6b,0x87,0x78,0x86,0x5a,0x1d,0xb3,0xc7,0x8d,0x83,0xd2,0x6c,0xfd, + 0x01,0xa4,0x0c,0xfe,0x47,0xde,0x43,0xde,0xa5,0x68,0x30,0x84,0xff,0x0e,0x1c,0x52, + 0x79,0x7f,0xb9,0x74,0x7d,0x9c,0xdf,0xd9,0x9f,0x84,0x7d,0x2f,0x8d,0xd2,0xcb,0xf0, + 0xb0,0x10,0xd0,0x85,0x20,0xf9,0x82,0xd2,0x4b,0x3d,0xe8,0x7f,0xd2,0xfc,0x8f,0x43, + 0x1f,0x6e,0xf6,0x77,0x85,0x03,0x41,0x7e,0xe5,0x9f,0x19,0x3e,0xe6,0x57,0xd2,0xfc, + 0x8f,0xdf,0xde,0x1f,0xf2,0x00,0x6d,0x4a,0x7a,0x57,0x8b,0xa7,0x85,0x8f,0x77,0xf3, + 0x2b,0x27,0xe1,0x6f,0x69,0xcb,0x48,0x20,0xbb,0x3f,0x80,0xcd,0xdf,0x2e,0xf8,0x1e, + 0x5b,0xc6,0xd8,0x78,0x84,0xf9,0x93,0x61,0x3a,0xa1,0x35,0x1f,0xf1,0x66,0x9c,0x8f, + 0x66,0x80,0x9c,0x0b,0x29,0xb4,0xe3,0x19,0x65,0x61,0x2b,0x05,0x7b,0x26,0x61,0x52, + 0x6f,0x79,0xd3,0x11,0xbf,0x76,0x9b,0xfe,0xe7,0x2e,0xe3,0xfd,0x93,0xdd,0x77,0x1b, + 0x65,0xfb,0x03,0xee,0x6f,0x90,0xdf,0xd0,0xa7,0xd1,0xc3,0x64,0xe2,0x1f,0xc7,0x78, + 0xdb,0x42,0x85,0x27,0xd4,0xd4,0x95,0x13,0xf4,0x29,0x82,0x8c,0x90,0x0d,0xff,0x84, + 0xcb,0x32,0xd0,0x8e,0x5c,0xc1,0x76,0xf7,0xa9,0x0a,0x20,0xb6,0xde,0x64,0x03,0x4f, + 0xe6,0xd1,0x87,0x63,0x34,0xe9,0xeb,0x3c,0x2b,0x4d,0x9a,0xf5,0x80,0x17,0x84,0x16, + 0xec,0xaf,0x7b,0xda,0xde,0x1f,0xc0,0xc9,0xff,0x2c,0xd8,0x35,0xe3,0x3d,0xf3,0x09, + 0x6f,0xc3,0x38,0x4d,0xe1,0x1f,0xf3,0xf9,0x19,0xfd,0x01,0x9a,0x74,0xcf,0x07,0x9d, + 0xe3,0xaa,0x75,0x0c,0xc4,0x95,0x23,0x2d,0x48,0x04,0xa5,0xf9,0x9f,0x8c,0xf3,0x61, + 0x59,0xfc,0x8d,0x91,0x33,0xb0,0xc4,0xb8,0xf2,0x36,0x1c,0x0a,0xd7,0xea,0x33,0x9d, + 0xf8,0x27,0xf3,0x7e,0xca,0xfe,0x5e,0xa9,0xfa,0xb8,0xe1,0x18,0xfb,0x82,0xf4,0xd6, + 0x78,0x69,0x86,0x3e,0x5c,0x33,0xfa,0x43,0xe2,0xfc,0x9c,0x90,0x09,0x9b,0x16,0x63, + 0xc6,0x4a,0x75,0x1a,0x37,0x0e,0x4a,0x73,0xd6,0xc7,0xf1,0xd3,0x39,0x53,0xe3,0x3d, + 0xc9,0x56,0xfb,0xdb,0x78,0x10,0xf9,0xab,0x7c,0x98,0xe3,0xbc,0x51,0x80,0x98,0x74, + 0xf6,0x47,0xc2,0xd1,0xed,0xaf,0xe2,0xf1,0x2b,0xb1,0xa0,0x43,0x1c,0x8b,0xa5,0x14, + 0xe3,0x49,0x6d,0xdc,0x10,0x72,0xd8,0xf1,0xcf,0x2b,0xf0,0x91,0xba,0x88,0x06,0x6c, + 0x68,0x79,0x2a,0xfe,0x87,0x2a,0x6f,0xc2,0x73,0x7a,0xd5,0x58,0x1b,0x67,0x7b,0xc0, + 0x79,0x2c,0x48,0xce,0xf3,0x41,0x58,0xbc,0x57,0xe6,0x76,0xe5,0xa4,0x7d,0x72,0x9e, + 0x0f,0x32,0x57,0x62,0xde,0x3b,0xb7,0xec,0x27,0xd7,0xf9,0xb0,0xe5,0xbf,0xa5,0x13, + 0xbb,0x1a,0xda,0x73,0xd2,0x3e,0x39,0xce,0x87,0x4d,0x0a,0xfb,0x61,0x32,0xda,0xd8, + 0x96,0x93,0xf6,0x49,0x9f,0x0f,0x62,0xd3,0xff,0xc4,0xc2,0x47,0xa1,0xb4,0x3d,0xa7, + 0xec,0x27,0x27,0xff,0xf3,0x29,0xe8,0xe8,0xbe,0x3e,0x3c,0xf5,0xfb,0xdb,0xce,0x87, + 0x15,0xbe,0x40,0xe8,0x6d,0x6a,0x41,0x4e,0xda,0x27,0xf7,0xf9,0x20,0xca,0x46,0x3a, + 0x27,0xe8,0x4a,0x9d,0x06,0x92,0xc4,0x46,0xaf,0x53,0xea,0x7f,0x64,0x38,0x02,0x41, + 0x85,0xb7,0x05,0xf8,0x10,0x66,0x8d,0x78,0x1b,0xd1,0x10,0x9a,0xfa,0xf3,0xe8,0x7f, + 0x8a,0xfb,0xd8,0xfc,0xb4,0xa8,0xd7,0x8e,0x99,0xb4,0xcf,0x07,0x9c,0x08,0x72,0xce, + 0x8f,0xbd,0x3f,0x12,0x5b,0x84,0xae,0xba,0x23,0xa9,0xf9,0x6f,0x4c,0xae,0x8c,0xb7, + 0x9e,0x85,0xcc,0xf3,0x53,0x9c,0xf8,0xe7,0x29,0xa8,0xd4,0x8b,0xd1,0x9f,0x3c,0x67, + 0xa4,0xbd,0x2e,0xc1,0xbf,0x64,0xe9,0x7f,0xcc,0xe7,0xf7,0xc3,0x43,0xb0,0x8f,0xde, + 0x96,0xe4,0x7c,0xd7,0x73,0x74,0x1e,0x1a,0x57,0xb0,0x2c,0xce,0x31,0x5e,0x5b,0x7f, + 0xa4,0x6d,0xc7,0xa1,0x37,0x1c,0x1e,0x9b,0x97,0xea,0xf7,0xa2,0x43,0xae,0x7e,0x0b, + 0xf6,0xfe,0x48,0x7d,0x70,0x45,0xeb,0xc5,0xfe,0x90,0x88,0x7f,0x1a,0x29,0x37,0x96, + 0x67,0xf0,0x3f,0x69,0xfc,0xb3,0x1c,0x92,0xfa,0x18,0x34,0x95,0x5a,0xf1,0x28,0xa7, + 0x1e,0xc3,0xce,0xff,0xbc,0xa9,0x1d,0x55,0xf7,0x99,0x6a,0x96,0xba,0xdc,0xfb,0x7d, + 0x7b,0xfe,0xeb,0x26,0xd8,0xac,0xee,0xbc,0xd9,0x50,0x9b,0x10,0x9f,0x11,0x88,0x1f, + 0x9d,0xf2,0x7c,0x90,0xcd,0x82,0x2f,0x1d,0xa6,0x3f,0xb1,0x3f,0x40,0x21,0xf6,0x87, + 0x34,0xf9,0x90,0x58,0x46,0x62,0x28,0x4b,0xff,0xd3,0xc7,0xf0,0x4f,0x42,0xdd,0x27, + 0x07,0x8c,0xd1,0xd5,0xe1,0xe9,0x6f,0xd9,0xe3,0xb5,0x9f,0x0f,0x7b,0x9e,0x5c,0x46, + 0xfd,0x0f,0x1f,0x1d,0xef,0x86,0x34,0x23,0x7b,0xbc,0x69,0xfc,0xb3,0x5d,0x38,0x0f, + 0xef,0x75,0xd7,0xaf,0x4d,0xa1,0x9d,0xda,0xf6,0x9c,0xf3,0xe3,0xec,0x8f,0x8d,0x6d, + 0x91,0xba,0x39,0xfe,0x51,0x03,0x82,0x9d,0xf6,0xc9,0x79,0x3e,0xc8,0x0b,0xb0,0x03, + 0xaa,0x97,0xad,0x56,0x4a,0x79,0xf4,0xe1,0xc3,0x14,0xb2,0xf9,0x2e,0x1b,0xfe,0x91, + 0x0e,0xaa,0x73,0x1d,0x6a,0x9f,0x1c,0xf3,0x99,0xe6,0x7f,0xbe,0xfb,0x7b,0x78,0x1b, + 0x7e,0xcc,0xfe,0xbe,0xa1,0x29,0xf8,0x1c,0x5b,0x7f,0xc8,0xa5,0xd5,0xea,0x07,0x74, + 0x71,0x28,0xe7,0x6d,0x39,0xf0,0x4f,0x4d,0xea,0x7c,0x58,0x8f,0x39,0xff,0x9e,0x5c, + 0xf3,0x6f,0xd7,0xff,0x2c,0x66,0xd8,0xb4,0x8a,0xa6,0x68,0x9f,0x3a,0xea,0x8a,0xd5, + 0x4d,0xd5,0x1f,0xc0,0x5f,0xb0,0x4c,0xeb,0xa5,0xfe,0x32,0x0b,0xff,0xe4,0x74,0xd4, + 0xe9,0xf3,0x61,0x63,0x42,0x05,0x8b,0x5f,0xf3,0x84,0x22,0xfc,0x5a,0x17,0xd1,0x4a, + 0xc7,0xb1,0x1a,0x69,0xfd,0xcf,0x32,0xf3,0xf9,0xbb,0xe5,0x6b,0x18,0xfe,0xe9,0x53, + 0xe7,0x6f,0xa8,0x3a,0x0d,0x93,0x7b,0x3e,0x73,0xde,0x93,0xb3,0x3f,0x80,0xd5,0x9f, + 0x44,0x2e,0xde,0x8d,0xa2,0x0e,0x8b,0x66,0x3f,0x61,0xf0,0x3f,0x66,0x07,0xe9,0xd7, + 0x21,0xe3,0x7c,0x10,0xbd,0xe0,0x9c,0x36,0x11,0xfd,0x46,0x75,0xc9,0x78,0xd5,0x59, + 0x6d,0x72,0x7b,0xcb,0x70,0x49,0x5f,0x8e,0xfe,0x36,0xf6,0xf3,0x61,0xa3,0xeb,0x37, + 0x45,0x2b,0x1f,0x63,0xfe,0xe7,0x38,0x1c,0x88,0xd6,0x26,0xe5,0x46,0x74,0xa4,0x71, + 0x0e,0x7b,0x72,0xf1,0x3f,0xda,0x5e,0x6d,0x87,0x5a,0xc9,0x69,0x6a,0x7a,0x80,0xed, + 0x5e,0xf1,0x3c,0x14,0x7a,0xa0,0xc0,0x39,0xde,0xb4,0xde,0x46,0x2d,0xd3,0xb0,0xfb, + 0x71,0xf4,0xea,0xa0,0x71,0x3e,0x23,0x56,0xc3,0xb1,0x1d,0x59,0xde,0xfe,0x00,0x6b, + 0xcb,0xff,0x09,0x7e,0x87,0x85,0x62,0x18,0x1d,0xd0,0xbb,0x96,0xf0,0x7a,0x7f,0xc9, + 0xe9,0x3f,0xed,0xe7,0xc3,0x8e,0x20,0xcd,0x1e,0xc2,0x5f,0xa5,0x09,0x21,0x4f,0x3c, + 0x4a,0xe3,0x1f,0x5d,0x61,0x20,0x47,0xee,0xcd,0x4d,0xfb,0xd8,0xf8,0x9f,0x34,0xfe, + 0xf9,0x6b,0x38,0x1c,0xf6,0xa5,0xe2,0x97,0x90,0x2f,0xfe,0xda,0xf0,0x0f,0x1e,0x0b, + 0xe2,0x0b,0xa7,0xd2,0x34,0x7f,0x9d,0xfb,0x7e,0xbb,0xfe,0x07,0x94,0xc3,0xb2,0xaa, + 0xd5,0x04,0xc9,0x4b,0xb4,0x57,0xf5,0x0c,0xe0,0xc1,0xe8,0xb2,0x79,0x42,0x4d,0x36, + 0xff,0x43,0x8b,0x79,0x7f,0x12,0xad,0x04,0xcf,0xcb,0x9b,0x54,0x97,0xf0,0xfe,0x33, + 0x5d,0x13,0x55,0xce,0x46,0x34,0xf6,0xfe,0x48,0x43,0x38,0x28,0x3e,0x5e,0xec,0x86, + 0x3d,0xe0,0x3d,0x2f,0x8e,0x26,0x27,0xcb,0x9c,0xf9,0x8b,0x5c,0xfa,0x9f,0x94,0xec, + 0xf9,0xe5,0xed,0x55,0xcd,0xcc,0xa8,0x4f,0x7a,0x93,0x6c,0x1a,0x4f,0xa8,0x75,0xb2, + 0xf7,0x15,0x5b,0x7f,0x6c,0xae,0xff,0xa1,0x77,0xd8,0xd0,0xce,0x76,0xf8,0x19,0x33, + 0x6a,0x92,0xee,0x3d,0xe4,0x7d,0xed,0xa7,0xd1,0x9a,0x31,0x66,0xc4,0xd3,0xe7,0xc3, + 0x66,0xe9,0x7f,0xf0,0xfc,0x2f,0x6c,0xd3,0xe7,0xae,0x24,0xba,0x42,0x41,0x95,0xdc, + 0xd3,0x49,0x5d,0x0e,0xfd,0x4f,0x68,0x1d,0x36,0x9e,0xea,0x5f,0xb1,0x37,0x75,0x50, + 0x88,0x3b,0xf6,0x90,0xd1,0x6f,0x9c,0x7d,0xbf,0x71,0x6b,0x3d,0x2c,0xe5,0xfc,0x8f, + 0xd9,0x4f,0x0c,0x97,0x4d,0x05,0x4f,0xc4,0xd4,0xe1,0xc1,0xf7,0x63,0x80,0x1a,0x10, + 0xef,0x90,0xb8,0xd0,0xf2,0x3f,0x71,0x27,0xff,0xc3,0x8c,0x13,0xa6,0x91,0x14,0x53, + 0x47,0xcd,0xc6,0x9c,0xe7,0xc3,0x9a,0x22,0xab,0x14,0xd1,0x14,0x4d,0xc9,0xae,0x3c, + 0xbb,0x44,0x5d,0xd1,0xd1,0x23,0x29,0x8e,0xfe,0xd8,0x99,0xfa,0x9f,0x68,0xca,0x28, + 0x8e,0x11,0xfc,0x7e,0x1b,0xfa,0x8b,0x63,0xe2,0xff,0x9a,0x42,0xff,0xa3,0x30,0xe3, + 0xb0,0xe1,0x88,0x74,0xa3,0xe0,0x41,0xb1,0xf5,0xc7,0xb6,0xf4,0x3f,0x56,0xda,0x6b, + 0xb5,0x91,0x08,0xe3,0x7a,0x18,0xe5,0x91,0xd8,0x1c,0xec,0x8f,0xbd,0x21,0x5b,0xff, + 0x83,0x68,0xa7,0x17,0x9a,0x46,0xdc,0x4b,0x0a,0x07,0x35,0x3c,0xaf,0xc7,0x13,0x14, + 0x8f,0x80,0x1e,0x0b,0xaa,0xec,0xfd,0x6d,0xfd,0xb1,0xcb,0x9f,0x01,0xdb,0xf9,0xb9, + 0x46,0x7f,0x6c,0x63,0x06,0x3e,0x30,0xcf,0x17,0x1e,0xb1,0xe7,0xbf,0x9c,0xfa,0x1f, + 0xbe,0x4d,0xdb,0x63,0x74,0xb0,0xef,0x13,0x55,0x38,0x41,0x1b,0xc0,0x1b,0x75,0xd7, + 0xe4,0xd5,0xff,0xd8,0x0c,0x43,0x28,0x58,0x89,0xe7,0x33,0xd6,0x55,0x9b,0xcf,0x57, + 0xb5,0x1f,0xca,0x99,0xe8,0xce,0x32,0x4a,0x61,0x1b,0x9d,0xa3,0xba,0x2b,0x88,0x9a, + 0xee,0xbf,0xe4,0xac,0xcf,0x0d,0xe8,0x3d,0x41,0x9e,0x8f,0x0e,0x98,0xcf,0xe7,0xe7, + 0x0f,0x96,0x5a,0xe7,0xa3,0x25,0xcb,0x47,0xf0,0xfc,0xf7,0xf4,0xf9,0x20,0xde,0xdd, + 0x16,0xec,0x71,0xfb,0xe1,0xa4,0xa1,0xff,0x59,0x9c,0x43,0xff,0x33,0x23,0x15,0x7d, + 0x3a,0xd2,0x61,0x68,0x0c,0x2e,0x49,0x2d,0xe0,0xd5,0xa6,0xea,0x0f,0x50,0x90,0x2a, + 0x7b,0x37,0xea,0xc1,0xdf,0x36,0x84,0xb2,0x91,0x2c,0xfd,0xcf,0xcc,0x28,0xd8,0xc2, + 0xee,0x6b,0x66,0xfe,0x25,0x55,0x9f,0xae,0xda,0xf5,0x3f,0xd2,0x0d,0xf6,0xee,0x3d, + 0x45,0x56,0x7d,0x6e,0x94,0x9c,0x87,0x7f,0xc4,0x13,0xe8,0x86,0xc8,0xbd,0x19,0xfa, + 0x1f,0x67,0xf4,0x1f,0x4e,0x09,0x81,0x22,0xaf,0xc6,0x36,0xd6,0xce,0x5f,0xee,0xbf, + 0xf9,0x08,0x71,0xe8,0x7f,0x78,0x1b,0x4c,0x33,0xda,0x16,0xa3,0x91,0x30,0x84,0x40, + 0xd8,0x28,0xb2,0x59,0xf6,0x1c,0x11,0x1f,0x48,0xf3,0x3f,0x59,0x7a,0x98,0xa1,0xcc, + 0xf8,0x3e,0x2d,0x2a,0x4e,0xa5,0xff,0x49,0x0b,0x81,0xc4,0x35,0xf4,0xa8,0x5a,0x17, + 0x2a,0x8e,0x76,0xde,0x64,0xe9,0x0f,0xb3,0xf4,0x3f,0x56,0x7f,0xa4,0x99,0x5d,0xbe, + 0x4a,0x14,0x02,0x29,0x72,0x17,0x99,0x6d,0xcd,0xbf,0x43,0xff,0x63,0x1a,0x12,0x67, + 0x84,0xa6,0x93,0x65,0x5a,0x87,0x56,0xad,0x15,0x29,0x24,0x34,0x85,0xfe,0x67,0x3b, + 0x33,0x9e,0x30,0x19,0x36,0x9c,0x58,0x36,0xc3,0x85,0xb9,0xcf,0x87,0xb5,0x0c,0x6c, + 0x8b,0x84,0x0c,0x9e,0x82,0x1d,0xd1,0x99,0xc7,0x58,0x6b,0xcb,0x7f,0x4d,0xd1,0x2f, + 0x62,0x80,0x7c,0x00,0x87,0xb4,0x12,0xc5,0x91,0xff,0xca,0xd2,0xff,0x98,0x06,0xf0, + 0x3f,0xc4,0x62,0x58,0x49,0x67,0xb8,0x6c,0xf9,0xaf,0xdd,0x59,0x68,0xc7,0x66,0xf0, + 0x46,0x91,0x31,0xe2,0x52,0xac,0xf5,0x90,0x43,0x7f,0x98,0x36,0x48,0x27,0xf8,0x75, + 0x7f,0xd0,0xe5,0xb2,0xfc,0x8f,0x4d,0xff,0x93,0x0d,0x7b,0x4e,0xf1,0xef,0x97,0x41, + 0x05,0xbf,0xb5,0xde,0xba,0xbb,0xbf,0xa2,0xd8,0xd0,0xce,0xb5,0x0e,0xd8,0x73,0x1c, + 0x7e,0x49,0x17,0x27,0x3d,0x8b,0xc5,0x1a,0xf3,0xf5,0xb3,0xf5,0x3f,0x39,0x0d,0xdb, + 0xf9,0xb0,0x66,0x7f,0x00,0xb3,0x2d,0xd2,0xaa,0xf1,0x19,0x57,0xe4,0x54,0xfe,0x22, + 0x9d,0xff,0x4a,0xf3,0x6f,0xca,0x63,0x9a,0xfd,0xb5,0xf1,0x34,0x10,0xc4,0x3f,0x46, + 0xa3,0xa7,0xf0,0x81,0x0a,0x03,0xff,0xa4,0xcf,0x87,0xa5,0x39,0xfc,0x15,0x03,0x42, + 0xce,0xc6,0x50,0xf6,0xfe,0xd8,0xd9,0xfa,0x1f,0x34,0xf8,0x09,0x50,0x2f,0x21,0xf5, + 0x71,0x9e,0x45,0xfc,0x4c,0xfd,0x8f,0x35,0x3a,0x0c,0x64,0xa5,0xc8,0xf0,0xf0,0x88, + 0xf3,0x3e,0x4c,0x74,0xdd,0x3d,0xe4,0x7d,0xd6,0xde,0x1f,0x3b,0x53,0xff,0xb3,0x35, + 0x3e,0x03,0x8d,0xd9,0xfc,0x0a,0xfd,0x50,0x66,0xc0,0x60,0x5f,0x0e,0xfd,0x8f,0x3d, + 0xfa,0xdb,0xae,0xb4,0xc0,0x42,0xdd,0x63,0xc7,0x3f,0x3b,0x32,0xf9,0x1f,0x77,0xbc, + 0x70,0xd4,0x3a,0x31,0x44,0x4a,0x75,0x2c,0x74,0xea,0x7f,0x32,0xee,0xf7,0x39,0xf0, + 0x8f,0x2f,0xe3,0x7c,0x90,0xb4,0xfe,0x87,0xcf,0x0f,0x6f,0x8b,0x44,0xcd,0x46,0xbe, + 0x32,0xef,0xe8,0x92,0xa1,0x7f,0x96,0xd3,0xe3,0x15,0xee,0x1e,0x5c,0xb5,0xbf,0x75, + 0x0f,0xea,0x9f,0xf9,0x15,0x6d,0xa2,0xbd,0xee,0xd5,0x2d,0x76,0xfc,0xb3,0xb3,0xdc, + 0x89,0xee,0x5e,0xea,0x39,0xd7,0xf9,0x1e,0x3f,0x31,0x16,0xaf,0xf0,0x46,0x49,0xf9, + 0xce,0x47,0xbb,0x43,0xb0,0x16,0xd2,0xdf,0x4d,0x51,0xff,0x75,0xb6,0x28,0x83,0xed, + 0xb9,0x6a,0x6a,0xfe,0x27,0xbd,0x0c,0x2a,0xd2,0x03,0x27,0xeb,0xf2,0xf2,0x3f,0xe9, + 0xfc,0x97,0xf4,0x07,0xf0,0x3f,0xd8,0x1f,0xfb,0xb0,0x89,0x96,0x0d,0x21,0x74,0x8e, + 0xfa,0xa3,0x3c,0xfd,0xb1,0xf3,0xf3,0x3f,0xf9,0xf3,0x5f,0xc6,0x36,0x24,0xa3,0x5f, + 0x59,0x8e,0xfe,0xd8,0xfb,0xec,0xaf,0x3d,0xf5,0xf9,0xb0,0xd9,0xdf,0x8b,0xc1,0x57, + 0x14,0xe6,0xe6,0x7f,0x6c,0xdd,0x20,0x0d,0x03,0xf9,0x90,0xe2,0xbc,0xfc,0x0f,0x3f, + 0x1f,0x0d,0xd9,0x9e,0xe3,0xfa,0x87,0x94,0x97,0x7d,0x9d,0xd5,0x7f,0x1d,0xcf,0x5f, + 0xff,0xf5,0x87,0xcc,0x4f,0x8e,0xfe,0xd8,0x8b,0xc5,0x29,0x1c,0x57,0xce,0xfc,0xd7, + 0xac,0xfc,0x8e,0xd4,0x9e,0xff,0xb2,0xf2,0x7d,0x99,0x42,0xe8,0xdc,0xfc,0x4f,0x99, + 0xd5,0x16,0xdb,0x93,0xdf,0xb1,0xe7,0xea,0x8f,0x4d,0xb2,0x1a,0x65,0xe7,0xe2,0x7f, + 0x1c,0xf9,0xaf,0xc5,0xe9,0x78,0x54,0x9b,0x97,0xff,0x49,0x45,0x37,0x3c,0xf6,0x1d, + 0xd3,0x5e,0xee,0x4f,0xe2,0x7f,0xb2,0xf4,0xcf,0x53,0xf7,0x87,0xb4,0xf7,0x47,0x9a, + 0xa2,0x3f,0xa4,0xb9,0x1e,0x9c,0xfd,0x91,0xf2,0x19,0x39,0xf3,0x5f,0x38,0xba,0xd9, + 0xb9,0xf5,0x3f,0x79,0xcf,0x47,0xcb,0x63,0x38,0xf3,0x5f,0xaf,0x19,0x30,0xe9,0x3c, + 0x87,0x85,0xc5,0x46,0x5b,0xec,0x0c,0xfe,0x27,0x8d,0x7f,0x8c,0xfc,0x17,0xa7,0x7d, + 0x48,0x37,0xc7,0x3f,0x2e,0x35,0x65,0xe4,0x39,0x1f,0x36,0xcd,0x6e,0x61,0x37,0xa4, + 0x22,0x2e,0xf3,0x9e,0x8a,0xff,0xb1,0xb7,0x79,0xb1,0x60,0xcf,0x54,0xe7,0xc3,0x1a, + 0x22,0x6d,0x62,0xc0,0xda,0x22,0x2e,0x6b,0xcf,0xcf,0xff,0xd8,0xf1,0xcf,0x6b,0x79, + 0xf9,0x9f,0xbc,0xe7,0xa3,0x99,0x46,0x43,0x5e,0xfd,0x4f,0x2a,0xff,0xb5,0x9b,0x24, + 0x0c,0x23,0x6c,0x1a,0xf9,0xcf,0x87,0xc5,0x8f,0xa2,0xc2,0xfc,0x3a,0xd4,0x74,0xbc, + 0xb6,0xe9,0x7f,0xd2,0xfc,0x4f,0xea,0xb3,0xbd,0x25,0xf5,0xb5,0x8a,0xe1,0x9c,0xfa, + 0x1f,0xf3,0xf9,0xbc,0x3f,0x76,0xc7,0x8d,0x67,0x30,0xed,0x05,0x1f,0x47,0x18,0xec, + 0x59,0xcb,0xf1,0xcf,0x67,0x50,0xff,0x9c,0xe7,0x7c,0x58,0x0e,0x03,0xa2,0xa6,0xf7, + 0x88,0xf1,0xc0,0x97,0x81,0x7f,0x1c,0xe7,0xc3,0xa6,0xf2,0x5f,0x67,0xe5,0x7b,0xd0, + 0x18,0x11,0xf1,0x7c,0xd8,0x25,0x8e,0xfe,0x90,0x7a,0x66,0xfe,0x6b,0xc0,0xdd,0xce, + 0xbc,0x07,0x1f,0x5d,0x98,0x94,0xd0,0xcc,0xf7,0xcf,0x91,0xff,0x6a,0xbf,0x2a,0x65, + 0x18,0x85,0xab,0xf3,0xf4,0x9e,0x3c,0xf8,0x87,0xd3,0x3e,0x7c,0x1b,0x2b,0x18,0xf3, + 0xe9,0xca,0x76,0x44,0xce,0xf3,0xd1,0x78,0xd8,0x8a,0x8a,0xc6,0xc0,0xff,0x22,0x16, + 0x0a,0x28,0x13,0xd2,0x35,0x6c,0x98,0x7f,0x6a,0xd3,0xff,0x98,0xef,0x63,0xf5,0xc7, + 0x76,0xcc,0x4f,0x46,0x05,0x50,0xae,0xfc,0xd7,0x10,0xf7,0xde,0x4b,0x70,0x9b,0x3f, + 0x35,0xff,0x93,0xc2,0x3f,0xd1,0xd2,0x54,0xb4,0x8a,0xd9,0x03,0xd9,0xbb,0xb9,0xf4, + 0x3f,0x4e,0xfd,0x73,0xec,0x13,0xf8,0x1f,0x8f,0xa1,0xb6,0x52,0x42,0x83,0x46,0x22, + 0x8c,0xad,0xb7,0xca,0xd4,0x46,0x75,0x90,0x2b,0x64,0xb2,0xea,0xbf,0xde,0xd5,0xf8, + 0x78,0xdf,0xc3,0xec,0xe7,0x90,0x3b,0xf6,0xa7,0xef,0x9d,0x60,0xc6,0x40,0x3e,0xfe, + 0x27,0x3d,0xde,0x24,0x43,0x3b,0xc7,0x8c,0x42,0x66,0x53,0xff,0xf3,0x7e,0x2e,0xfd, + 0xcf,0xfb,0x19,0x68,0xf9,0x2c,0xbc,0x1e,0x31,0x80,0x90,0xfc,0x5c,0x0e,0xfc,0x93, + 0x85,0x76,0x4c,0xa3,0x34,0x0f,0xfe,0x79,0x3c,0x4f,0x7c,0x9f,0x1a,0xff,0x84,0x46, + 0x61,0x89,0x94,0x32,0x8c,0x2b,0x90,0x07,0xff,0xbc,0x6b,0xe7,0x67,0xec,0x34,0x69, + 0x5e,0xfc,0x73,0x9d,0x33,0xac,0x2b,0x7f,0x2c,0xfe,0x99,0x2a,0xff,0x95,0x85,0x87, + 0xc9,0xa8,0x62,0xbf,0xd2,0xff,0xc9,0xf8,0x47,0xa9,0x9f,0x2a,0xff,0x95,0x0d,0x03, + 0xa8,0x01,0x84,0x42,0x78,0x62,0xc8,0xfc,0x33,0x22,0xc3,0x3f,0xd6,0xfe,0xce,0x3a, + 0x1f,0xc4,0x2c,0x7b,0x7f,0x99,0x27,0xc2,0x52,0x27,0xc6,0x2a,0x78,0x50,0xc8,0xb4, + 0xa9,0xf0,0x4f,0x8a,0x36,0x54,0x3e,0x11,0xff,0xe4,0x9e,0x9f,0xbf,0xcb,0x85,0x7f, + 0xde,0x72,0x7a,0x9b,0x50,0x96,0xff,0xf4,0x4d,0xa5,0xff,0xe1,0xc3,0x9c,0x12,0xff, + 0x64,0xaf,0xb7,0xde,0x0c,0x3c,0xe9,0xc4,0x3f,0x0e,0xfd,0x8f,0x3b,0x97,0xe1,0xc4, + 0x3f,0x23,0xb9,0xf7,0xe3,0x53,0xe3,0x9f,0x29,0xf1,0xc0,0x27,0xe2,0x1f,0xe1,0x8f, + 0xc4,0x3f,0xd2,0x7f,0x10,0xfe,0x31,0x8d,0x42,0xab,0xf0,0xed,0x93,0xf0,0xcf,0x75, + 0x59,0xe3,0xbd,0x6e,0x2a,0xfd,0x8f,0x69,0x60,0x63,0xc0,0xd6,0xdc,0xf9,0x2f,0x21, + 0x83,0xff,0xe1,0xfa,0x9f,0x3b,0xf2,0xe8,0x9f,0x33,0xce,0x07,0xc9,0x3b,0xde,0x7c, + 0xfa,0x9f,0xa5,0x9f,0x94,0xff,0x2a,0xb7,0x9a,0x60,0xa7,0xdf,0x5f,0xba,0x00,0x73, + 0xff,0x10,0xfc,0x63,0x33,0x4a,0xfe,0x48,0xfc,0xd3,0xfc,0x49,0xf8,0x27,0x8b,0xff, + 0x11,0xa7,0xc6,0x3f,0x53,0xe6,0xdf,0xf3,0x9f,0x0f,0x9b,0xc3,0xe8,0x59,0xef,0x9b, + 0xe2,0x7c,0xd8,0x5c,0x86,0x30,0x85,0xfe,0x27,0x37,0xff,0xe3,0x38,0x1f,0xc4,0x91, + 0xbf,0x30,0x0e,0xba,0x32,0x03,0xd9,0x44,0x14,0x1b,0x65,0xcf,0xc8,0xc2,0x3f,0xe6, + 0xdb,0x06,0x92,0xb3,0xef,0x22,0xa7,0x84,0xb7,0x8c,0x63,0x4d,0x4e,0xeb,0x07,0x3e, + 0x51,0xff,0xb3,0xe2,0x9b,0x85,0xf6,0xf1,0xaa,0x19,0xfa,0x1f,0x35,0x53,0xff,0xe3, + 0xb2,0x85,0xf5,0x3c,0xf8,0x27,0x63,0x74,0x55,0x19,0x8c,0x90,0x3b,0x27,0xfe,0x31, + 0xef,0x2f,0x31,0x85,0xaf,0x46,0x46,0x2c,0x2f,0xfe,0xc9,0xd8,0xc6,0x2e,0xf9,0x24, + 0xfc,0x33,0xa5,0x7e,0x23,0xff,0xf9,0xb0,0x4e,0x43,0xc8,0x8d,0x7f,0x9c,0xfc,0x4f, + 0x64,0xd0,0x40,0x44,0xc1,0x3a,0x06,0x84,0xaa,0x32,0xfb,0x43,0x16,0xaf,0x73,0x8c, + 0xf7,0x05,0xef,0x3e,0xf1,0xbd,0xb6,0x94,0xfe,0x76,0x94,0x4e,0xc8,0x99,0xfd,0x21, + 0xaf,0xcd,0x31,0x5e,0xa4,0x7d,0xcc,0x2b,0xf7,0xe8,0xd7,0x39,0xf1,0xcf,0x45,0x6d, + 0x30,0xba,0xa8,0xda,0x73,0x54,0xac,0x63,0x46,0xbd,0xea,0x39,0x21,0x5e,0x92,0x26, + 0xa1,0x1e,0xdb,0x8a,0xe6,0xe4,0x7f,0x46,0x90,0x64,0x96,0xf1,0xb4,0x38,0xda,0x8d, + 0xa7,0x51,0x6f,0x27,0xef,0xc8,0x87,0x33,0x1a,0x01,0xd9,0xfb,0xff,0x74,0x77,0x53, + 0x9f,0x0a,0x32,0x31,0xda,0x57,0x91,0x22,0x48,0x09,0x33,0x64,0xc7,0xf7,0x65,0xae, + 0x1f,0xbd,0x7c,0xc4,0xac,0x66,0x0d,0x73,0xa3,0x88,0x92,0x51,0xf9,0x70,0x85,0xb3, + 0x11,0xd0,0xb8,0xad,0xfe,0x6b,0x94,0x1c,0xa5,0xfb,0xc2,0x81,0xed,0xee,0xb9,0xdc, + 0x98,0xcf,0x27,0x8a,0xee,0x73,0x34,0xea,0x49,0xd7,0x7f,0xc5,0x84,0x67,0xa4,0xcb, + 0xd1,0x25,0x6b,0xb6,0xbe,0x26,0x3e,0xad,0x5d,0x8e,0xb6,0xac,0x29,0x19,0xab,0xba, + 0xa8,0x7d,0x48,0xf3,0xd5,0x7f,0xe9,0xca,0xcf,0xe0,0x42,0xac,0x39,0xec,0xdd,0x2e, + 0xf2,0x36,0xb6,0x61,0x63,0x3f,0xd2,0x5e,0x97,0x17,0xff,0xd4,0xc2,0x41,0xbd,0x36, + 0xec,0xde,0x4e,0xde,0x84,0x83,0x94,0x19,0x31,0xc4,0x3f,0xba,0x9a,0x87,0xff,0xd1, + 0x0b,0xd6,0x66,0xf8,0x2b,0x74,0xcb,0xfb,0x92,0xce,0xc6,0x35,0x76,0xfc,0x73,0x0d, + 0x3c,0x1d,0x9d,0x1f,0x73,0xaf,0x25,0x27,0xe1,0x69,0xca,0x0c,0xd4,0x3f,0x3f,0xcd, + 0x2b,0xa4,0x72,0xd6,0x7f,0xc9,0xb2,0x76,0x4e,0x69,0xa2,0x5e,0x55,0x4c,0xc0,0x39, + 0x60,0x06,0x88,0x03,0x0c,0x08,0xc5,0xf5,0x7c,0xfc,0x4f,0x1f,0x5c,0x51,0x5a,0xba, + 0xbc,0x67,0xc4,0x71,0x8d,0x1b,0x47,0xf9,0x7a,0xc8,0x87,0x7f,0xfc,0x98,0xff,0x32, + 0xda,0x62,0xdf,0x81,0x6d,0xb1,0x93,0x9e,0xb8,0x7b,0x2e,0x24,0xa8,0x73,0x7e,0xd2, + 0xf5,0x7d,0x23,0xdc,0x9f,0xa4,0xea,0xbf,0x8c,0x63,0x61,0x49,0x05,0x74,0x19,0xc7, + 0x4c,0xe7,0xea,0xff,0xa3,0xfc,0x70,0xfa,0x81,0x48,0x25,0xca,0x7e,0xf0,0x7c,0x10, + 0x66,0x8c,0x90,0x42,0xe8,0xa0,0xb7,0xe5,0x3d,0x1f,0x64,0x8b,0xb9,0xba,0x8c,0x6c, + 0x97,0x1c,0x23,0x1e,0xd2,0xb1,0x2d,0x96,0x9a,0x4f,0x29,0x85,0x7f,0xcc,0xfb,0x93, + 0xe5,0x4f,0xc0,0x45,0x6d,0x5f,0x34,0xb0,0xcb,0x3d,0x8f,0x1c,0x43,0xe3,0x49,0xb2, + 0x18,0x8e,0x43,0x9d,0x89,0x88,0xee,0xce,0xea,0xff,0xa3,0x8e,0xcb,0x78,0x4c,0x79, + 0x67,0xca,0xd0,0xad,0x30,0xd4,0x9a,0x1f,0xff,0x2c,0x33,0xf8,0x1f,0x1e,0xdd,0xaa, + 0x8c,0xb6,0x3f,0x9e,0xfc,0xf8,0x47,0xab,0x5d,0xef,0x7e,0x2c,0xdd,0x16,0x7b,0x0e, + 0x33,0x02,0x0e,0x45,0x8a,0x13,0xff,0xfc,0x1c,0x16,0x68,0xee,0x21,0x72,0xde,0x34, + 0xd6,0x70,0xd9,0x33,0xde,0x2f,0xe7,0xc4,0x3f,0x4f,0xd1,0xf9,0x61,0xb6,0x6c,0x7e, + 0x63,0x18,0x43,0xd8,0x16,0xdb,0x1f,0x30,0xce,0x87,0xcd,0xae,0xff,0x2a,0x08,0xc3, + 0x18,0xca,0xbc,0x81,0x6d,0xa2,0xb9,0xa1,0x8b,0x61,0x8a,0x8d,0x47,0xec,0x42,0x94, + 0xd3,0xf6,0xfc,0x17,0xaf,0x76,0xf7,0x3e,0xd4,0x69,0x18,0xab,0x14,0xf1,0x3c,0x9e, + 0x97,0x97,0x97,0xff,0xc1,0x5f,0xeb,0x97,0x71,0xfe,0xe7,0xb2,0xd2,0x82,0xd3,0x52, + 0x0d,0x17,0xfc,0x8b,0xf2,0xeb,0x7f,0xd4,0x3e,0xd9,0x07,0xee,0x48,0x24,0x49,0xfb, + 0xd4,0x5a,0xe2,0xa7,0x44,0x6d,0x7b,0x46,0xf3,0xe5,0xab,0xff,0x2a,0x18,0xa0,0x7b, + 0xd9,0xb2,0xee,0x29,0x25,0x03,0xb1,0xbd,0x6a,0xa0,0xcd,0xb5,0x9a,0x5c,0x25,0x3f, + 0x45,0x55,0x07,0xfe,0x71,0xf4,0xff,0x61,0x17,0x77,0x9a,0x68,0x27,0xa0,0xb9,0xa2, + 0xae,0xfd,0x6c,0x62,0x9d,0xc2,0xaa,0x37,0x33,0xf2,0x5f,0xbe,0xf4,0xdb,0x96,0x28, + 0xe2,0x1c,0xb8,0xa0,0xed,0xcb,0x83,0x7f,0x46,0x32,0xf1,0x4f,0xb1,0xad,0x0d,0x54, + 0x8e,0xfa,0x2f,0x7e,0x3e,0x08,0x36,0xd9,0x88,0xa4,0x67,0x5b,0x85,0x41,0x3c,0x16, + 0x36,0x1f,0xfe,0x91,0xcf,0x42,0x55,0xd4,0x3d,0x4c,0x50,0xa4,0xbe,0x20,0xe6,0xde, + 0x45,0xfc,0x10,0x81,0xaa,0xbc,0xf5,0x5f,0x2b,0xa1,0xca,0xd6,0x26,0x2b,0xe9,0x6a, + 0x20,0x25,0x10,0xa1,0x2a,0xcd,0x5d,0xff,0x15,0x83,0x5b,0xe0,0x47,0x50,0xa9,0xb9, + 0xdb,0xc9,0xab,0xf2,0x53,0x30,0x3f,0xc4,0xbe,0xd6,0xeb,0xe0,0x5e,0xad,0x92,0xe6, + 0xae,0xff,0xda,0xdd,0xfd,0x15,0x38,0x4b,0x17,0xc6,0xbc,0x6b,0xc5,0x93,0x78,0x3e, + 0x08,0xb6,0xfd,0x71,0x91,0xe7,0xe9,0xde,0x58,0x9e,0xfa,0xaf,0x22,0x9c,0x9f,0x67, + 0x29,0xaf,0xff,0xe2,0xa3,0x0b,0xba,0x51,0xf1,0x62,0xf5,0xb7,0xc9,0x81,0x7f,0xde, + 0x8f,0xb6,0x24,0x1f,0xc0,0xfa,0xe5,0x97,0x51,0xb6,0x31,0x22,0xfe,0x58,0x1e,0x8c, + 0xde,0x18,0x0b,0xe4,0xcc,0x7f,0x3d,0x31,0x7d,0x3f,0x6c,0xa4,0x0b,0x34,0xb9,0x9d, + 0x5c,0xa5,0x6f,0xd4,0x2a,0x87,0xdc,0xe1,0x9d,0x57,0xe9,0x5d,0xe9,0xfe,0x3f,0x19, + 0xe7,0x83,0x20,0xfe,0xf9,0xb1,0x3a,0x07,0x0f,0x6d,0xac,0x80,0xef,0xc1,0x1c,0xea, + 0xbe,0x0d,0xcf,0xc3,0xa5,0xce,0xfe,0x3f,0x76,0xfc,0xc3,0x69,0x46,0x8c,0x56,0x2a, + 0x6c,0x87,0xb9,0xd4,0x5d,0x1d,0x11,0xf0,0x8a,0xa3,0xff,0x8f,0x33,0xff,0xf5,0xae, + 0x34,0x97,0xc1,0x18,0x12,0x40,0x75,0x84,0xee,0x9d,0x25,0x3e,0x80,0x1d,0xe7,0xa8, + 0x3d,0x7e,0xd9,0xeb,0xbf,0x38,0x5e,0xd2,0x38,0xff,0xf3,0xae,0xd6,0xd8,0xbe,0x35, + 0x3a,0xed,0xac,0x41,0x53,0x3b,0xf8,0x1f,0xf3,0xfd,0x05,0xe5,0x59,0xb8,0x12,0x6d, + 0xa1,0xc5,0x49,0xd2,0xc4,0xe6,0xa7,0x4a,0xf7,0x0c,0x89,0x8b,0xfd,0x2f,0x43,0x0b, + 0x75,0xe7,0xac,0xff,0x62,0xf8,0x47,0x63,0x41,0x1c,0x93,0xa4,0x01,0xe8,0xe9,0xe2, + 0xc2,0x42,0x3f,0xe6,0x2f,0x3a,0xa6,0xc2,0x3f,0x7e,0xbd,0x28,0x4e,0x7e,0x06,0x3f, + 0x55,0x6b,0x74,0xb9,0xbb,0xb4,0x1a,0xf0,0x3c,0xd9,0x29,0xf8,0x1f,0x99,0x77,0xdf, + 0x7a,0x80,0xc1,0xc2,0xb5,0xba,0x0c,0x44,0xda,0x42,0xe5,0x40,0x77,0x9e,0xfa,0x2f, + 0x86,0x7f,0x2e,0xaa,0x8d,0x78,0xda,0xe9,0x96,0xe8,0xef,0xb0,0xed,0x0c,0x15,0x54, + 0x38,0xaa,0x3a,0xc7,0xeb,0xc0,0x3f,0xca,0x84,0x31,0xa8,0x75,0x1a,0x9e,0x2e,0xe7, + 0xd5,0xc4,0x21,0x8d,0x7d,0x56,0x5d,0xf9,0xeb,0xbf,0x26,0x23,0x46,0xfd,0x97,0x92, + 0x99,0x36,0xcd,0x9d,0xff,0x72,0xf4,0xff,0x39,0x93,0x32,0xe6,0xe2,0x95,0x3b,0xa6, + 0xcc,0x7f,0x39,0x13,0xa3,0xfd,0xd6,0x41,0x3c,0x3d,0xb9,0xf9,0x9f,0x9b,0x4c,0xf4, + 0x18,0x32,0xdb,0x28,0xdd,0xb4,0x2e,0x9b,0xff,0x51,0xa7,0xa7,0xeb,0xbf,0x94,0x09, + 0xa9,0xc1,0x89,0x9f,0xa5,0x94,0x90,0xcc,0x51,0xff,0x95,0xc5,0xf6,0xfc,0xf1,0xf9, + 0x2f,0x0b,0x78,0x4f,0xc1,0xff,0x08,0xc6,0x40,0x4a,0x9c,0xc0,0x58,0xc8,0xc2,0x3f, + 0x59,0xfb,0x2f,0x18,0x94,0xea,0xa5,0xd4,0xc6,0x21,0x17,0xff,0x23,0x18,0x41,0xdf, + 0xe8,0xff,0x33,0xe2,0x72,0x12,0x41,0x1d,0x5f,0xcf,0xc4,0x3f,0x6c,0xbd,0x09,0x4d, + 0xfd,0xab,0x82,0x7f,0x6a,0xd4,0x7f,0x79,0x17,0x8b,0xd8,0xd2,0xb5,0x49,0x2f,0x09, + 0x0a,0xc7,0xa3,0x1f,0xd2,0xa6,0xd1,0xac,0xfc,0xd7,0x44,0x3a,0x4d,0xdc,0xac,0x4f, + 0xfb,0x60,0xc6,0x25,0xb8,0x47,0x30,0xe6,0x47,0x4b,0x11,0x41,0x9f,0xc8,0xff,0x10, + 0x73,0xfe,0x85,0x66,0x7d,0x55,0xbc,0x35,0x7f,0xfd,0x57,0xff,0x27,0xe6,0xbf,0xcc, + 0xb4,0xd7,0x4d,0xe9,0x61,0xf2,0x19,0x98,0x69,0xe7,0x7f,0xd2,0xf5,0x5f,0x65,0x83, + 0x12,0x4e,0xda,0x8a,0x1c,0xdb,0x58,0xdf,0x94,0xf9,0xaf,0x1c,0x69,0xaf,0x4f,0xca, + 0x7f,0xd9,0x84,0x40,0xb3,0xff,0x63,0xf9,0x9f,0xff,0xd8,0xfc,0x97,0xf2,0x47,0xf3, + 0x3f,0x19,0xc6,0xd9,0x7f,0x57,0xfe,0xcb,0xb8,0xd8,0x6a,0xbf,0x4d,0xca,0xec,0xa8, + 0x93,0x91,0xff,0x4a,0xa3,0x9d,0x22,0x6e,0x14,0x18,0x57,0xa4,0x3f,0x94,0xff,0x11, + 0x9c,0x85,0xff,0x53,0xd4,0x7f,0x19,0x65,0x5f,0x70,0x47,0x3e,0xfe,0x27,0xb3,0xfe, + 0xeb,0x93,0xf4,0xcf,0xf0,0x87,0xdc,0x3f,0x45,0xfd,0xd7,0x27,0xf1,0x3f,0xa9,0xfa, + 0x2f,0x3b,0xdb,0x33,0x22,0x35,0x0a,0x19,0xfa,0xe7,0x74,0xff,0xc3,0xbc,0xfc,0x8f, + 0x18,0xd4,0x72,0xf0,0x3f,0x59,0xf5,0x5f,0x39,0x8d,0x3c,0xf5,0x5f,0x79,0x8d,0x5c, + 0xfc,0x4f,0x8e,0x32,0xf0,0x1c,0xf8,0x47,0x2b,0xc8,0x8e,0x56,0x48,0xfb,0xe4,0x8b, + 0x5f,0x99,0xfc,0xcf,0x08,0x1b,0x1d,0x73,0x9b,0xfb,0xf9,0x15,0x14,0x46,0x06,0x74, + 0x47,0xff,0xc3,0x4c,0xfe,0x27,0x61,0xe8,0x7f,0x54,0xa7,0xfe,0x27,0xbd,0xbf,0xcb, + 0xa8,0xff,0xaa,0xcd,0xcd,0xa7,0xa5,0xf1,0x4f,0x56,0xfd,0x57,0x4a,0xe8,0xd2,0xd0, + 0x6f,0xbf,0x72,0x3a,0x3f,0xff,0x63,0x13,0x7e,0x4c,0x9b,0x2a,0xff,0x65,0xd2,0x3e, + 0x1e,0x6e,0x48,0xbc,0xec,0xeb,0x92,0x72,0x8f,0xf1,0x53,0xbe,0xfa,0x2f,0x52,0xa2, + 0x17,0xe7,0x12,0xf6,0xe4,0xaa,0xff,0x2a,0x4c,0xd5,0x7f,0x7d,0x82,0xfe,0xd9,0x76, + 0x3e,0x88,0x84,0xf3,0x53,0xc4,0x69,0x1f,0xd9,0x9c,0x1f,0x81,0x17,0xc2,0x3b,0xeb, + 0xbf,0x6c,0xd9,0xbd,0xc6,0x53,0x9e,0xa7,0x90,0xf6,0x51,0x79,0xfc,0x7d,0x4f,0x9b, + 0x68,0x6f,0xc6,0x83,0x83,0x6d,0xfd,0x7f,0x9c,0xfc,0x4f,0xf3,0x60,0x06,0x11,0x04, + 0x86,0xfe,0xe7,0x2a,0x73,0x3d,0x1c,0x29,0x40,0xd8,0xd3,0x9b,0xf4,0x26,0xd8,0xfe, + 0x8b,0xe1,0xe7,0x30,0xfb,0xb5,0x76,0x0a,0xfc,0xa3,0xf3,0xfc,0x97,0xef,0x8c,0xbb, + 0x3b,0xf4,0x26,0xef,0xff,0xec,0x5e,0x88,0x07,0xb9,0xe6,0xd5,0xff,0x24,0x0a,0x8c, + 0xfd,0xb8,0x1b,0xd8,0xd7,0xf7,0x30,0x57,0x9f,0xfa,0xb2,0xf3,0xa1,0x69,0xfe,0x27, + 0xa9,0xec,0xe1,0xa2,0x29,0xe6,0xc4,0xce,0xc2,0x0f,0x54,0xdf,0x80,0x3b,0x16,0x09, + 0x28,0x99,0xf3,0x69,0xeb,0xff,0xcc,0xf5,0xb7,0x75,0x3a,0x0b,0x43,0x6f,0x92,0xd7, + 0x60,0x9f,0xee,0xdd,0xef,0x0e,0x64,0xd7,0x7f,0x59,0xf8,0x76,0x2f,0x3c,0x23,0xa5, + 0xf2,0x83,0xe7,0x81,0x37,0xba,0x59,0x9f,0xab,0xff,0x8f,0x15,0x4f,0xc7,0xc0,0x58, + 0x9f,0xd7,0x75,0xb3,0xcf,0xea,0x28,0x65,0x4f,0xeb,0x16,0x03,0x59,0xf5,0x4d,0xce, + 0xfe,0xcf,0xbd,0x46,0x1a,0x74,0x10,0x7e,0xc5,0x8c,0x9e,0x0e,0x12,0x50,0x5f,0xcf, + 0x5b,0xff,0xa5,0x9b,0x7c,0x20,0xd2,0x62,0x1d,0x12,0x76,0x5b,0x75,0x95,0x64,0x1d, + 0x6c,0x9a,0xee,0xff,0x33,0xa4,0x60,0xfe,0x8b,0x81,0x9c,0x36,0x72,0x85,0x7c,0xd7, + 0x88,0xfe,0xd7,0x75,0x3c,0x12,0xcb,0xd7,0xff,0xc7,0xcc,0x7f,0xb9,0xa1,0xf5,0x25, + 0xe8,0xe7,0x8d,0x10,0xab,0x6a,0xe1,0x79,0x7b,0xff,0x9f,0xad,0x8e,0xfe,0x3f,0x65, + 0x7b,0x38,0x68,0xd9,0x4a,0xd9,0xaf,0x17,0x14,0x36,0xba,0x7d,0xee,0x1c,0x7a,0x2a, + 0x27,0xff,0x83,0x6c,0x64,0xb7,0xb8,0x05,0x65,0x0f,0xf8,0x6b,0xad,0xd2,0x03,0x4d, + 0x49,0x7b,0x45,0x9e,0xad,0xff,0xb3,0x95,0x4f,0x27,0xb3,0xd8,0x46,0x92,0xcb,0x9e, + 0x9b,0xe0,0x27,0xcc,0xf0,0xe7,0xe6,0x7f,0x10,0xff,0x74,0xcc,0x4b,0x76,0x26,0xc8, + 0xb3,0xb8,0xed,0x4a,0xba,0x6f,0x45,0x22,0x28,0x32,0x3f,0x29,0xe7,0xee,0xff,0x93, + 0xd2,0x1f,0xce,0xac,0x26,0xc5,0xf2,0x8e,0x28,0x43,0xd7,0x0a,0xf1,0xc0,0xe3,0x92, + 0x59,0xd8,0x22,0xf0,0xf9,0x3c,0x69,0x3d,0x5f,0x97,0x76,0xf3,0xb2,0x2f,0xef,0x6f, + 0xc5,0x83,0x7c,0xdb,0xe5,0x1d,0x71,0xfb,0xe1,0x08,0x33,0x3c,0x79,0xfa,0x3f,0x9b, + 0xf1,0x08,0xf9,0x9f,0x3f,0x20,0xff,0x95,0x8e,0x77,0x03,0x70,0x94,0x34,0xb3,0x68, + 0xeb,0xae,0xce,0x2a,0x04,0xcb,0x3e,0x1f,0x6d,0x26,0x9e,0xcf,0xfe,0x9a,0xa9,0x3f, + 0x79,0x3b,0x83,0x7f,0xb0,0xe1,0x1f,0xa8,0x96,0x78,0x76,0x0c,0xf9,0xc6,0xcd,0xd4, + 0xb8,0x5f,0x3b,0x98,0x71,0xbf,0xad,0xfe,0x4b,0x49,0xe3,0x9f,0x18,0x17,0xc6,0x5c, + 0x13,0x29,0x84,0x1d,0xa9,0x42,0x30,0x29,0xab,0xfe,0x6b,0x75,0x45,0x5a,0xff,0x4c, + 0x51,0xf6,0xfc,0x72,0x84,0x17,0xc2,0x3b,0xf9,0x07,0x5b,0xff,0x67,0xce,0x87,0xd4, + 0x2e,0xf5,0xb6,0x8b,0xe7,0xa5,0xcb,0xe0,0xd5,0xbc,0xaf,0x74,0x0e,0xc7,0xde,0xe6, + 0x1d,0x6f,0xc4,0x61,0x25,0x27,0xfe,0xb9,0x6c,0xe8,0x7f,0xae,0x87,0x97,0xe0,0x7a, + 0x7d,0xc5,0xab,0x0f,0x5f,0x2f,0xf3,0x83,0xd5,0xf0,0xfe,0x83,0x99,0xfc,0x4f,0x85, + 0xa9,0xff,0x89,0x85,0x54,0xce,0x0f,0xbb,0x77,0x11,0xd5,0x7e,0x62,0x5a,0x06,0xfe, + 0x59,0x9b,0xd6,0x3f,0xff,0x15,0x3c,0x9a,0x6a,0xfc,0xa8,0xe6,0xef,0xff,0xd3,0xa7, + 0x18,0xf8,0xa7,0x27,0xea,0x5a,0x23,0x3d,0xca,0xa6,0xb1,0xe7,0xa1,0xd0,0xba,0xac, + 0x7c,0x62,0xf6,0xf9,0x68,0xee,0xc7,0x66,0xfc,0x15,0xf9,0x15,0x34,0x20,0x51,0xbc, + 0x26,0x2b,0x23,0x96,0x3e,0x1f,0x36,0x01,0xbb,0xa4,0x94,0xba,0xfb,0x47,0x78,0x2c, + 0x6c,0xbb,0x77,0xbb,0xdb,0x81,0x88,0x78,0xe3,0x20,0x5b,0xff,0x43,0x73,0xbd,0x75, + 0x89,0x49,0xf9,0x84,0xd0,0x0c,0x01,0x49,0x54,0xf9,0x1f,0x22,0xcf,0xf9,0xb0,0x5d, + 0xa9,0xfc,0x97,0xca,0x9c,0xea,0x49,0x99,0x6d,0xe4,0x47,0x48,0xa3,0x7a,0x5f,0x46, + 0x46,0x2c,0x91,0x9d,0x8f,0x58,0xc8,0x16,0xc9,0xc3,0x94,0x7d,0x26,0x8b,0x4b,0x3c, + 0xd0,0x49,0x32,0xfd,0xb3,0xf9,0x4f,0xe0,0xe7,0x85,0x7d,0x1d,0xbf,0xdf,0xf3,0xea, + 0x23,0xb0,0x20,0xd9,0xdd,0x7e,0x2f,0xfb,0x1e,0xf3,0x9e,0x0f,0x2b,0x77,0x9b,0xf8, + 0x67,0xc6,0x6f,0xe4,0x7f,0x61,0x86,0x67,0x44,0x6c,0x20,0xbf,0xcc,0x7b,0x3e,0xac, + 0x7f,0x96,0xe1,0x6f,0x57,0xc5,0xd9,0xf7,0x92,0x12,0xba,0x0c,0x5b,0xfe,0xc7,0x94, + 0xc2,0xda,0xfa,0x3f,0x7b,0x9e,0x6d,0xe3,0x41,0xea,0xdb,0x9c,0xff,0x69,0x19,0xf6, + 0x8e,0x57,0x35,0xda,0xe2,0x97,0x01,0x84,0xd2,0xe7,0xc3,0x3e,0x29,0x5b,0x78,0xe6, + 0x7a,0x7c,0xed,0xdf,0xba,0x97,0xb8,0x66,0x99,0xb0,0x27,0x07,0xff,0x13,0x83,0xc7, + 0x14,0x7e,0x71,0xcc,0xb8,0x7f,0xd0,0x7d,0x3b,0xd9,0x66,0x43,0x44,0x24,0xeb,0x7c, + 0x58,0xac,0xf7,0xf1,0xe8,0x33,0x9b,0x48,0x01,0xf6,0xb7,0x41,0x6f,0x5f,0x9d,0x15, + 0xef,0xd2,0xf5,0x5f,0xb2,0xc4,0xfc,0x2d,0xdb,0x2d,0xba,0x9f,0x13,0x0b,0xe0,0xc5, + 0x82,0xda,0x33,0xde,0xf8,0xa7,0xab,0xa5,0xcc,0x8d,0xa4,0xad,0xff,0x33,0x98,0x78, + 0xc9,0x3d,0x4c,0xf8,0x44,0x45,0x45,0xab,0xfe,0x1d,0x0f,0x8a,0xbd,0xdb,0xc0,0x3f, + 0xe6,0xfd,0x02,0x18,0x7a,0x86,0x92,0x8b,0xe2,0x79,0xdf,0xcb,0xcc,0x28,0x4e,0x8a, + 0xdf,0x02,0x34,0xdc,0x63,0x58,0x21,0x4e,0xf0,0x04,0x84,0x2a,0x7b,0xff,0x67,0x16, + 0xcd,0x89,0x51,0xbd,0x0e,0x3d,0x65,0xb5,0x7a,0x5b,0x94,0x7c,0x8a,0xeb,0x57,0x57, + 0xe4,0x3d,0x1f,0xd6,0x8c,0xce,0x04,0x6f,0x2b,0x8a,0xc3,0x1d,0x59,0x7a,0x57,0x07, + 0xfe,0xe1,0x65,0x71,0x6c,0x12,0x86,0x71,0x7e,0x12,0xdd,0x7b,0x49,0xfa,0x20,0x6f, + 0x39,0x9b,0xff,0x81,0x75,0xe6,0x7a,0x18,0x96,0x8f,0x0a,0xcd,0x89,0xfb,0xe7,0x3e, + 0xfc,0x35,0xf2,0x22,0xd7,0xff,0xa4,0x89,0x8e,0x34,0xff,0xd3,0x51,0x60,0x06,0xf1, + 0x19,0xe7,0x11,0xff,0x0c,0x79,0xf7,0x89,0xe7,0xb1,0xfe,0x3d,0xb1,0x2a,0x2f,0xff, + 0xf3,0xf2,0xa6,0xfa,0x33,0xeb,0xc6,0x5b,0x11,0xed,0xd4,0x25,0xef,0xb7,0xf3,0x3f, + 0xe4,0x0d,0x64,0x14,0x33,0xf9,0x1f,0x84,0x3d,0x6d,0x7d,0x75,0x1c,0x08,0x25,0xed, + 0xfc,0xcf,0x59,0xa9,0xc7,0xb8,0x32,0xe6,0xe0,0x7f,0xb0,0x88,0x40,0x0e,0x02,0xfe, + 0xf5,0x79,0x37,0xf5,0xb4,0x10,0x5a,0x78,0xd8,0xa0,0x5e,0xcf,0x39,0xf8,0x9f,0x1e, + 0xa1,0x26,0x05,0x23,0x25,0x9f,0xde,0x93,0xe6,0x7f,0x4a,0x47,0xa1,0x47,0xf2,0x65, + 0xd4,0xbf,0x97,0xed,0x61,0x68,0x84,0x77,0x63,0xc6,0xea,0xad,0x3a,0xdd,0xd9,0x2f, + 0xeb,0x75,0xa3,0x11,0x50,0xd2,0xc2,0x4b,0x67,0xe0,0x99,0xd2,0x49,0x38,0x80,0xf3, + 0x83,0x30,0xf8,0x39,0xe3,0xfc,0x8b,0x7b,0xd2,0xf8,0xe7,0xb9,0xcc,0xfc,0xd7,0x1e, + 0xd9,0x90,0xd9,0x5b,0x8f,0x6d,0x75,0xe8,0x5b,0xf8,0xf3,0x3f,0xb0,0xf1,0x3f,0x1e, + 0x5e,0xef,0xb6,0x02,0x5f,0xbb,0xd7,0x5a,0x06,0x5c,0xc8,0x54,0x8a,0x33,0xc0,0xdf, + 0xff,0x23,0xa7,0xfe,0x47,0xf2,0xf4,0xdb,0xb6,0x5d,0x1c,0x18,0x7b,0xcc,0xef,0x25, + 0xe6,0xe4,0x7f,0x6e,0xcb,0xec,0xff,0xe3,0xd4,0x03,0x2f,0xea,0xe0,0x89,0xb0,0xf1, + 0x2c,0xfc,0x63,0xaa,0x7d,0x46,0xbd,0xf5,0xa8,0xff,0xe9,0xc2,0x2b,0x4b,0x11,0xff, + 0x04,0xfb,0xbd,0x0b,0xf3,0xeb,0x7f,0xd8,0x32,0xdb,0xdb,0x7a,0x49,0x9f,0xac,0xe6, + 0x2b,0x6a,0x94,0xdd,0xcf,0x96,0xe2,0x58,0xab,0xbd,0xff,0xcf,0xa0,0x89,0x06,0x2d, + 0xe3,0x0b,0x0c,0x5f,0x19,0xf9,0x2f,0xe5,0x43,0xc3,0xb0,0xf1,0x3f,0x57,0x3f,0x06, + 0x9b,0xa4,0x94,0xf7,0x40,0x63,0xc5,0xfa,0xba,0x53,0x65,0x9b,0xd2,0xf9,0x2f,0x6e, + 0x9c,0xb3,0xea,0xbf,0x74,0xf8,0x21,0x31,0xbb,0x1d,0x92,0x4d,0x74,0x1e,0x27,0x82, + 0xc8,0x26,0x23,0xdf,0xf7,0x43,0xe1,0x00,0xdd,0x81,0x8a,0xa0,0x74,0xff,0xe7,0x36, + 0xc9,0x54,0x97,0xf9,0x06,0xf9,0x67,0xf5,0x7f,0xc5,0xd9,0x32,0xc3,0x15,0xb8,0xc2, + 0xf8,0xbe,0xc2,0x19,0xfc,0x4f,0x41,0x37,0x9c,0x34,0x40,0x4e,0xc2,0xc0,0x3f,0x08, + 0x7b,0x8e,0xc1,0x3e,0x66,0x7c,0x11,0x5b,0x43,0xd7,0x65,0xe0,0x1f,0x16,0x7f,0x47, + 0x24,0x5b,0xb6,0xcb,0xcd,0xf9,0x1f,0xc1,0xd0,0xa3,0x2a,0x1b,0x8c,0x13,0x63,0xd3, + 0xf8,0xa7,0x5b,0x19,0x16,0x4d,0x35,0x2c,0x31,0x8c,0x19,0xd5,0xe9,0x78,0x77,0x43, + 0x16,0xfe,0xc1,0xfe,0x87,0x1c,0xff,0x88,0x86,0xfe,0xb6,0xc4,0xc0,0x3f,0x8d,0x3c, + 0xfe,0x4a,0x07,0x0d,0xc3,0x71,0xfe,0x85,0x60,0xaa,0x73,0xa5,0xcd,0xc2,0x1d,0xda, + 0x0a,0xb3,0x11,0xd0,0x4c,0x9b,0x70,0xc8,0xc6,0xff,0x80,0xa5,0xfe,0xed,0xe2,0x86, + 0x2b,0xea,0x92,0xf8,0xa9,0x53,0x29,0x3c,0xe0,0x5f,0xea,0xe0,0x7f,0xfa,0x64,0x4c, + 0x43,0x37,0x1b,0x7c,0x8b,0x11,0x76,0x89,0x6a,0xc3,0x7b,0xe2,0x6c,0xac,0x88,0x77, + 0xf0,0x3f,0x8a,0x83,0xcd,0x78,0x20,0x5a,0x35,0x0c,0x6f,0x4b,0x8d,0xe6,0x15,0x34, + 0x6c,0xfd,0x9f,0xb7,0x17,0x9c,0xe7,0x65,0x31,0xec,0x57,0x34,0xf6,0xa5,0x0c,0xc2, + 0x9f,0x80,0x47,0x63,0x34,0x6b,0xab,0x32,0xf9,0x1f,0x0e,0x7b,0x28,0xb1,0x1b,0xa9, + 0xfe,0x87,0x0c,0xcc,0x66,0xf4,0x7f,0x46,0xfe,0xa7,0x03,0x9b,0xcc,0x63,0xff,0x1f, + 0x41,0x50,0x35,0xd1,0x14,0x42,0xbb,0x95,0xc2,0x61,0x6e,0xcc,0xcc,0xe4,0x7f,0x36, + 0x9b,0xe8,0xd1,0x30,0x42,0xc3,0x69,0xfd,0xf3,0x13,0x52,0x0e,0xfe,0xe7,0xa8,0x89, + 0x66,0x6d,0x46,0xb3,0xc3,0xc8,0xe6,0x7f,0x1c,0xb2,0x28,0x05,0x85,0xf1,0xc5,0xa9, + 0x2b,0x4b,0xbd,0x79,0xcf,0x87,0xcd,0x34,0x8c,0x9f,0x3c,0x8e,0xfa,0x77,0xf6,0x17, + 0xde,0xc7,0x40,0x4e,0x49,0xac,0x34,0x21,0xed,0x4b,0xa1,0x1d,0x01,0x61,0xcf,0x8a, + 0x58,0xeb,0x6e,0x38,0x24,0x94,0x20,0xb0,0xef,0x4e,0xf3,0x3f,0x1b,0xb3,0xf8,0x9f, + 0x9b,0xad,0x30,0xbd,0x87,0x3b,0xa2,0xa2,0x60,0x28,0xcd,0xff,0x54,0xa6,0xf8,0x9f, + 0x8c,0xb2,0x77,0xe3,0x58,0xd8,0xc7,0x0a,0x0e,0x30,0x44,0x54,0xb1,0x9e,0xec,0xb6, + 0xf3,0x3f,0x4a,0xba,0xdb,0x61,0xd7,0x7c,0x66,0xb4,0x1a,0xfe,0x8a,0x5d,0xf9,0x21, + 0xc3,0x3f,0x2d,0xc9,0x62,0x47,0xff,0xe7,0x14,0xff,0x53,0xe2,0x70,0xb3,0x48,0xe3, + 0x6f,0x75,0xe0,0x1f,0x73,0x7e,0xb4,0xf2,0x2b,0xda,0x64,0x9a,0xed,0x59,0x62,0x18, + 0x5c,0xd1,0x7a,0x81,0xfd,0x2f,0xbe,0x8c,0xc2,0x06,0x16,0xbf,0xec,0xe7,0x5f,0x68, + 0x07,0x14,0xf3,0xb5,0x95,0xf9,0xd8,0x4f,0x0c,0xf5,0x27,0x5c,0x88,0x78,0x3a,0xb4, + 0x89,0xce,0x1f,0xed,0xb1,0xeb,0x7f,0xa2,0xf0,0x98,0x74,0x40,0xb2,0xa1,0xbb,0x15, + 0xeb,0x2d,0xfd,0x4f,0xe9,0x29,0x03,0x11,0x39,0xfa,0xff,0x48,0x56,0x10,0x47,0xa3, + 0xd6,0x22,0xa2,0x0d,0x0f,0x9f,0x0a,0xf4,0xb9,0xfa,0xff,0x60,0x34,0x2f,0xb4,0x02, + 0x4d,0x83,0x71,0x22,0xf9,0x8b,0x46,0xfe,0xe2,0xa4,0xf5,0x3e,0xdb,0x72,0xf2,0x3f, + 0x68,0xfc,0x85,0x69,0xb0,0x27,0x0c,0x5b,0xfe,0xa7,0x43,0xb9,0x24,0x18,0xfe,0xfc, + 0xab,0x86,0xfa,0xd7,0x93,0x86,0x01,0x55,0x16,0x1e,0x48,0xc7,0xeb,0xfe,0xae,0x34, + 0xff,0xc3,0xcb,0xbe,0x8a,0x6d,0xb2,0x55,0x1b,0x9e,0xb1,0xf8,0x1f,0x29,0x20,0x3b, + 0xd8,0x09,0x8b,0xff,0xe1,0x15,0xf1,0x46,0xe3,0x20,0x5f,0x16,0xff,0xd3,0x6f,0xf2, + 0x3f,0x2f,0x14,0xd5,0x61,0x3d,0xb2,0x62,0xcc,0x18,0xed,0x55,0xb1,0x1f,0x20,0xd8, + 0xea,0xdf,0xed,0xfc,0xcf,0xbb,0x52,0x73,0xc2,0xb3,0xaf,0x33,0x3d,0x70,0x75,0xc2, + 0xdf,0x7c,0xcc,0x9b,0xb3,0xff,0x4f,0x2a,0x7e,0xa1,0x3a,0xc8,0xd2,0xff,0xa4,0xfe, + 0x8b,0x63,0x33,0xb2,0xcf,0x87,0xbd,0xd3,0x95,0xeb,0x3c,0xbe,0xce,0xe0,0xbf,0xff, + 0x3c,0x3e,0xb9,0x8b,0x54,0x42,0xb7,0xc6,0xeb,0x52,0x6d,0xc6,0x27,0x9c,0x87,0x78, + 0xe7,0xbf,0xf3,0x3c,0xc4,0xc1,0xff,0x64,0xe7,0x21,0x0e,0xe6,0xfd,0xe5,0xff,0x2b, + 0xe7,0x21,0x6a,0x86,0x01,0x9f,0x70,0x1e,0xe2,0x9d,0x7f,0xe4,0x79,0x88,0xda,0x1f, + 0x39,0xff,0xda,0x7f,0x9d,0x87,0xf8,0xef,0xfb,0xf7,0x9f,0xeb,0xfc,0xc1,0xff,0x7c, + 0xf7,0x93,0xae,0xb2,0x0e,0xd1,0xdf,0x4e,0xca,0x60,0xa0,0x7a,0x47,0x27,0x03,0x88, + 0x65,0x91,0x2e,0xa9,0x72,0x85,0x3f,0x44,0x94,0xc8,0xa6,0xb2,0xbd,0x62,0xd6,0xf7, + 0x58,0xe0,0x17,0x28,0x84,0x65,0x05,0x0a,0x64,0x21,0x01,0x21,0xa8,0xd0,0xa6,0xc9, + 0xd3,0x11,0x61,0x54,0xe8,0xd3,0xfc,0x02,0x48,0x99,0xdf,0xe3,0xbd,0x50,0x19,0x92, + 0xf1,0xf9,0xf7,0xaa,0xea,0x11,0xe6,0x0f,0xb7,0x75,0x6f,0x2a,0x3c,0xf3,0x85,0xee, + 0x90,0xaf,0xa2,0xfb,0x97,0x85,0x95,0x04,0x3d,0xa4,0xe3,0x7e,0xa9,0x02,0x3f,0x6a, + 0xa1,0x0c,0x24,0x79,0xba,0x0c,0x4b,0x81,0x19,0x52,0x87,0xc6,0x1e,0x3b,0x8b,0x16, + 0x96,0xe5,0xf8,0xde,0x3b,0x41,0x6d,0x93,0xc1,0x25,0x91,0xe7,0x41,0xa5,0x1e,0xfc, + 0x3a,0x96,0xaa,0x6a,0x9b,0xca,0x0c,0x4a,0xd5,0x60,0x37,0x57,0x62,0xda,0xc7,0x2b, + 0x2a,0x51,0x03,0x3e,0x89,0x40,0x07,0xf0,0x7b,0x8a,0x84,0x20,0xba,0x52,0x62,0xff, + 0x5b,0xcc,0x9b,0xd0,0x65,0xd5,0x42,0xc6,0xf7,0xd8,0x59,0x8d,0xcf,0xbf,0x4f,0x22, + 0x9d,0x92,0x9a,0xc0,0xa7,0x85,0x3b,0xaa,0xe9,0xa0,0x4c,0x5c,0x40,0x87,0xaa,0x55, + 0xf6,0xfc,0x88,0xe3,0x76,0x45,0xa8,0x86,0x22,0x80,0x22,0xe6,0x9b,0x24,0xa5,0x08, + 0x5f,0x47,0x63,0x17,0xfb,0xab,0x7d,0x1a,0x66,0x67,0xf0,0xa7,0x8c,0xf9,0xdf,0xe4, + 0xaf,0x1c,0xf4,0x7f,0xd3,0x35,0x2b,0xb4,0x49,0xde,0xe1,0x09,0xb4,0x2e,0x9f,0x15, + 0xd9,0x54,0xb1,0x50,0x63,0x7f,0x88,0x8a,0xa1,0x17,0xd4,0x4a,0x8a,0x48,0xdd,0xf1, + 0x5f,0x98,0x26,0x4d,0xa7,0x10,0x92,0x2b,0xd4,0x69,0x52,0x47,0x9b,0xda,0xaa,0x29, + 0x74,0x9a,0xbf,0x03,0x27,0xaa,0x42,0x2f,0x58,0xcc,0xfe,0x22,0xad,0x19,0xf3,0xf3, + 0x4b,0x55,0x0d,0xb1,0x69,0x91,0xe8,0x26,0x58,0xf8,0x00,0xb4,0x8a,0x8a,0xc6,0x8c, + 0x9b,0x20,0x44,0xca,0x8e,0xdc,0xbb,0xb8,0xf2,0x05,0x4f,0x6b,0x96,0x3f,0xec,0x20, + 0x7c,0x92,0x99,0xf7,0x0b,0x49,0xdf,0x84,0x59,0x63,0xd3,0xd4,0xe9,0x2f,0x4a,0x77, + 0xea,0xb3,0xa2,0x05,0xc1,0x8e,0xad,0xf0,0x4d,0xee,0x78,0xd3,0xff,0xba,0xca,0x2a, + 0x25,0x99,0x2d,0x1b,0xe8,0x62,0xef,0xe3,0x69,0xd7,0x14,0x3d,0x12,0x5c,0xe8,0xf2, + 0x68,0x11,0x45,0xf9,0xa5,0x52,0x19,0xf1,0x2f,0x15,0x33,0xfc,0xa1,0xaa,0xb8,0x54, + 0xd0,0x64,0x36,0x33,0x4a,0xa1,0xa0,0x16,0x41,0x52,0x08,0x40,0x1b,0xfe,0x21,0x42, + 0x42,0x35,0xd5,0x40,0x6c,0x73,0xbc,0x7e,0x50,0x57,0x62,0x05,0x1e,0x08,0x49,0x41, + 0x0a,0xc1,0xcf,0x79,0x94,0x56,0x69,0x28,0x12,0x0c,0xde,0x8f,0x6e,0xf0,0x21,0x86, + 0xf4,0x3b,0x40,0x0c,0xd9,0xee,0x96,0x18,0x7e,0x96,0x29,0xe0,0xa4,0xab,0x20,0x51, + 0xad,0x1a,0x34,0x29,0x54,0x08,0x51,0xfe,0xc2,0xaa,0x28,0xe3,0xff,0x43,0x1d,0xfe, + 0xd0,0x78,0x39,0xf6,0x9f,0xa3,0x2a,0xd2,0x1d,0xcc,0x8e,0x72,0x9f,0xaa,0xda,0x0c, + 0x6a,0xdd,0xdd,0xd4,0x14,0x8c,0x53,0xaa,0xa9,0x0a,0x28,0x63,0x94,0xb2,0xeb,0x8a, + 0x86,0x46,0x0c,0x18,0x62,0xe6,0x57,0xf8,0x4f,0x2f,0xdb,0xfc,0x61,0x53,0x47,0xe4, + 0x47,0xf4,0xc6,0xef,0xdf,0xfd,0x67,0x91,0xce,0x8e,0x99,0xb4,0xa9,0xe2,0x33,0x0f, + 0x76,0x74,0x2e,0xfd,0x2b,0x76,0xe5,0x3b,0xd7,0x2c,0x5d,0x2d,0xb4,0xea,0x4d,0x57, + 0xef,0xa9,0x70,0x2e,0x08,0xbe,0x66,0x94,0x72,0x42,0x09,0xa5,0xec,0x7b,0x6a,0xd7, + 0x22,0x94,0x2d,0x31,0x6d,0x29,0xe0,0x40,0x69,0x59,0x59,0x99,0x85,0xae,0xcc,0x7f, + 0xf5,0x84,0x74,0xf3,0x55,0x58,0x2f,0x09,0x1d,0x7c,0xa8,0xf5,0x82,0x20,0xf3,0x75, + 0x5f,0x2f,0x77,0x2f,0x5b,0x66,0xbf,0x37,0xed,0x0d,0xee,0xc9,0xf2,0x0f,0x57,0xee, + 0x99,0xa4,0x90,0xf1,0x2f,0xfd,0xeb,0xc7,0xef,0x67,0xdc,0xbf,0xe4,0x4a,0xcb,0x64, + 0xe6,0xab,0xd8,0xee,0x7f,0xe3,0x0d,0xf3,0xfe,0xe7,0xde,0x37,0x8c,0xf7,0x5b,0xa6, + 0xf2,0x57,0xf7,0xb4,0x98,0xf7,0xdf,0xf3,0x07,0xf9,0xb7,0x67,0x5b,0x3e,0x4e,0xdd, + 0x66,0xfd,0x17,0x27,0x3f,0x9e,0xe2,0xfe,0x2b,0x0b,0x8c,0xd1,0xb5,0x5c,0x99,0x34, + 0x8c,0xeb,0x26,0xaf,0x64,0x3d,0xff,0x17,0x4b,0xc5,0xf5,0xda,0x29,0x65,0x11,0x14, + 0xf4,0x1b,0x46,0x59,0xf1,0x2f,0xc4,0x6f,0x68,0xb7,0x5a,0x46,0xfb,0x9f,0x48,0xc5, + 0xfa,0x42,0xeb,0xfe,0xcf,0x2e,0x93,0xbe,0x21,0xdc,0xaa,0x7d,0x99,0x05,0xff,0x02, + 0x66,0x2c,0xfd,0x72,0x45,0xf9,0x00,0x33,0xda,0xb4,0x56,0xa5,0x7c,0x40,0x60,0x57, + 0xc2,0x5f,0x56,0xca,0xf5,0xe9,0x26,0x5e,0x05,0x4a,0x04,0xb5,0xab,0x4d,0x2d,0x95, + 0xa5,0x88,0xa0,0xd2,0x94,0x51,0xc9,0x8c,0x3f,0x91,0xa5,0x7b,0xcd,0x2b,0xd6,0xf1, + 0x3e,0xb8,0xf4,0xd8,0x5e,0x75,0x35,0x5c,0x05,0xdb,0xa8,0x10,0x46,0x43,0x29,0xb8, + 0x57,0x08,0x0b,0xab,0xc9,0x55,0x15,0x05,0x54,0xb8,0xad,0x63,0xb5,0xf6,0x25,0x28, + 0xb0,0xdd,0xff,0xd9,0xd5,0x05,0x0d,0xc2,0xe7,0xe9,0x97,0x97,0x4a,0xdd,0x05,0xdf, + 0x14,0x6e,0xa5,0x5f,0x56,0xcb,0x13,0x05,0x77,0xa6,0x0c,0x21,0x75,0xc5,0xf6,0x3e, + 0xbf,0xd0,0xc2,0xaa,0x22,0x4b,0x84,0xb9,0x3e,0x08,0x43,0x05,0x14,0x82,0x60,0x19, + 0x5d,0x92,0x79,0x25,0x3d,0xde,0x5f,0x68,0xd2,0xed,0x42,0x05,0xbd,0x49,0x85,0x2d, + 0x92,0x4f,0x90,0xf5,0x90,0xaa,0x74,0x4b,0x6a,0x87,0x4c,0x43,0x41,0xe5,0x5e,0x49, + 0x65,0xce,0x93,0x5d,0xb1,0xdf,0xbf,0xbc,0xe0,0xe6,0x8e,0x5b,0x62,0xb7,0xf8,0x0b, + 0x5c,0x05,0xa1,0x8e,0xf6,0xf8,0x2d,0xfe,0x72,0x57,0xc1,0x52,0xda,0xce,0xae,0x94, + 0x93,0x02,0x8d,0xb6,0xab,0x65,0x4d,0xe5,0xb0,0x30,0x3d,0x3f,0xb3,0x84,0x69,0xda, + 0x9f,0xeb,0xe5,0xb7,0x48,0xb3,0x84,0x2f,0xc3,0x9f,0xeb,0xd3,0xd7,0x17,0xdc,0x2a, + 0x7c,0x11,0x6e,0xd1,0xcb,0x83,0xcc,0x10,0xd1,0x58,0x2c,0x59,0xf4,0x0f,0xbb,0xdf, + 0xcf,0x1c,0x47,0x29,0x48,0x54,0xc1,0xa6,0x37,0x4a,0x58,0x40,0x48,0x88,0x2e,0x90, + 0x85,0x11,0x89,0x7d,0x49,0x0a,0x95,0x14,0x16,0x10,0xd2,0xef,0xb3,0x96,0xc8,0x5a, + 0x04,0xd4,0xae,0x0a,0x95,0x30,0xd7,0x0f,0x95,0x54,0x36,0x0c,0x95,0x19,0x85,0x29, + 0x63,0x69,0xfa,0x7d,0x7e,0xd1,0x5e,0x50,0x2d,0xfc,0x37,0xf8,0x92,0x56,0x1e,0x2d, + 0x58,0x63,0x1a,0x61,0xe1,0x04,0x7c,0x09,0x52,0xc6,0xff,0x82,0x72,0xc7,0xfc,0x88, + 0x61,0x38,0xc1,0xfe,0x5e,0x05,0x94,0x1b,0x0d,0xd8,0x41,0xe7,0x76,0xf6,0x87,0xfb, + 0x5b,0x66,0x4c,0x63,0x06,0xbd,0x8a,0x19,0xb6,0xf5,0xc3,0x1c,0x5b,0x87,0x07,0x3d, + 0x53,0x44,0x52,0x3a,0x3c,0x95,0xad,0xb2,0x72,0x84,0x5d,0x91,0xd4,0x9b,0x98,0x01, + 0xc1,0x7e,0x4f,0x90,0x5d,0xd1,0xd3,0xef,0xc3,0xfe,0x05,0xd9,0x9e,0x4a,0xc4,0x95, + 0x91,0x32,0x74,0x6e,0x10,0x4c,0xb6,0x98,0x57,0x6c,0xf3,0x43,0x84,0x20,0x5d,0xa9, + 0xce,0x90,0xcb,0x22,0x29,0x43,0x3a,0x22,0x04,0xfb,0xb9,0xf1,0x22,0xf3,0xe7,0x2b, + 0xd5,0x2f,0xca,0x92,0xed,0xfe,0x5f,0x84,0x0a,0xc2,0x1d,0xab,0x55,0xb6,0xa8,0x22, + 0x86,0x21,0x97,0x33,0xa3,0x7f,0xb5,0x7a,0x95,0x5c,0xde,0x59,0xa0,0xf6,0xaf,0x0e, + 0xb2,0x2b,0xd4,0x36,0x3f,0x21,0x3e,0x73,0xd6,0x14,0xa6,0x0c,0x8f,0x1a,0x32,0x0d, + 0x36,0x34,0xfb,0x78,0x6f,0x96,0xc2,0x1d,0x15,0x95,0x37,0xb5,0xc1,0x43,0xcc,0xb8, + 0x9a,0x0d,0x73,0x7a,0x44,0x5a,0xc3,0x66,0xe0,0xa6,0xb6,0xe9,0x0f,0xb1,0x85,0xe4, + 0x51,0x5b,0xdb,0xa6,0xd3,0xe9,0x56,0xc8,0xf8,0x6c,0xb8,0x60,0xb5,0xf0,0x25,0xf8, + 0x2c,0x95,0x54,0x6e,0xfc,0x39,0x2d,0x0f,0x4b,0xab,0xe1,0x26,0x6e,0x08,0x15,0xcc, + 0x98,0x4e,0xcb,0x35,0xdb,0xf7,0x55,0x08,0x7f,0x46,0x6f,0x09,0x97,0x6f,0x97,0x0a, + 0x05,0xb6,0xcc,0xc2,0x65,0x15,0x05,0x68,0xdc,0x62,0x1a,0xfc,0x0a,0x0b,0x41,0xe6, + 0xfd,0xfd,0xa5,0x1c,0x56,0xdf,0xdc,0x06,0xa5,0xec,0x13,0x58,0x6a,0x7c,0x0b,0x12, + 0xba,0xf1,0x36,0x09,0xaf,0x70,0xc3,0xda,0xee,0x03,0x0c,0xdc,0x44,0xa6,0xd3,0xae, + 0xf0,0xd7,0x2a,0x2a,0x6e,0x12,0xff,0x8c,0xbe,0x1a,0xfe,0x4c,0x45,0x31,0x1a,0xdb, + 0xb8,0x31,0x6d,0xba,0x71,0x45,0x4b,0xcf,0x4f,0xd7,0x4d,0x05,0xdf,0xe8,0x40,0x27, + 0x70,0xed,0x0b,0x45,0x68,0xfc,0x49,0x45,0xf9,0x0b,0xec,0xca,0x29,0xed,0xcb,0x68, + 0xdc,0xd6,0x71,0x2a,0xfc,0xb7,0x15,0xe5,0x76,0x7f,0x72,0x93,0xf0,0x0d,0x7a,0x2a, + 0xbc,0xa8,0xa2,0xf8,0x05,0x11,0x8d,0x69,0x86,0x71,0xab,0x71,0xe5,0x36,0x8a,0x4f, + 0xb8,0x56,0x9f,0x6e,0xbb,0x5f,0xe2,0xcf,0x5f,0xdd,0xf6,0x42,0x41,0xfa,0xf9,0x1b, + 0x3d,0x61,0x7c,0x3e,0x2c,0xec,0xf0,0x84,0x5b,0x2b,0xec,0xdf,0x3b,0xe0,0x7a,0x40, + 0x27,0x03,0x86,0xff,0x69,0x37,0x1c,0xd1,0xad,0xa6,0x47,0xba,0x15,0x1d,0x11,0xb5, + 0xad,0xb6,0x42,0xe1,0x36,0xba,0x3a,0x7c,0x55,0x05,0xf3,0x4e,0x86,0xc1,0xfc,0x0f, + 0x73,0x3b,0x86,0x51,0xc9,0x8c,0x2f,0x55,0x94,0xdb,0xee,0xff,0xac,0x56,0x1e,0x14, + 0x56,0xc2,0x17,0x41,0xd2,0x0b,0xd6,0x0b,0xb7,0xc2,0x97,0xa1,0x3c,0x6d,0x08,0xc1, + 0x94,0x91,0x7e,0x9f,0xcf,0xb6,0x82,0x1a,0x93,0xfd,0x0c,0x4d,0x45,0x20,0x4c,0x2b, + 0xd8,0x27,0x28,0xa4,0x0d,0x49,0x35,0x0c,0x6a,0x1b,0xef,0x72,0x29,0xbc,0xa3,0x42, + 0xbd,0x89,0xdd,0x8f,0x6e,0x87,0x2d,0x33,0xc5,0x66,0x84,0x0d,0xc3,0x7e,0xbf,0x36, + 0xa7,0x7d,0xe9,0x2d,0xa5,0x7f,0x0e,0x5d,0xcc,0xdb,0x74,0xb4,0x57,0xde,0x22,0x73, + 0xb7,0xf3,0x67,0x2a,0x33,0xc4,0x82,0x76,0xf4,0x3f,0x72,0x01,0xd8,0xe6,0xc7,0x2d, + 0xb4,0x27,0x6e,0x09,0x96,0xcb,0x52,0xab,0xd0,0xae,0xdf,0xa2,0x96,0x7b,0x0a,0xb8, + 0x11,0x64,0x46,0xc8,0x30,0xe4,0x02,0xcd,0x36,0x3f,0xa0,0x85,0x15,0x45,0x92,0x04, + 0xc4,0x2f,0xa0,0x74,0x14,0x72,0x17,0xc8,0xb6,0x65,0xcc,0x17,0x02,0x5e,0xe1,0x46, + 0x1a,0x01,0x7d,0xb6,0xf5,0xff,0x69,0xef,0xfc,0x42,0xe3,0x38,0xee,0x38,0xfe,0x9b, + 0xbb,0xd9,0xf3,0x9e,0x7d,0x72,0x77,0xa5,0xbd,0x66,0xd5,0x08,0xb3,0xfa,0x53,0x4b, + 0xa6,0xa4,0xac,0x82,0x95,0xba,0x08,0xa2,0x39,0xdd,0x9d,0x7c,0x12,0x8e,0x7c,0x96, + 0x1c,0xc5,0x18,0x53,0xd6,0x46,0x34,0x26,0x50,0x90,0x0d,0xa5,0xee,0x43,0x9d,0x39, + 0xf5,0x9c,0xaa,0xc5,0x85,0x8b,0xac,0x62,0x19,0x04,0x3d,0x13,0xd5,0xf4,0x25,0xd0, + 0x42,0x8d,0xf3,0xd6,0x93,0x62,0xab,0x2e,0xf4,0xc1,0xa4,0xaa,0xc9,0x43,0xa9,0x6c, + 0xd0,0x4b,0xa1,0x26,0x2f,0x86,0xa2,0x16,0x45,0xfd,0xcd,0xec,0xdd,0xed,0xc8,0x0d, + 0x86,0xa4,0xd0,0x42,0x99,0xef,0xd3,0x97,0xd9,0xb9,0xd5,0x6f,0x67,0x67,0x7e,0xf3, + 0xf9,0xed,0xea,0xa4,0x58,0x17,0xe7,0x37,0xbd,0xc2,0xe2,0xac,0x04,0x54,0x30,0x05, + 0x52,0xf2,0x52,0x9f,0x87,0x26,0x21,0x5a,0xd0,0x28,0xf1,0xe4,0xd9,0x1e,0xcc,0xf6, + 0x30,0x15,0x4f,0x73,0x43,0x98,0x87,0x20,0x0c,0x7c,0x4c,0x31,0xff,0xe0,0x8e,0x50, + 0xcf,0x3f,0xd1,0xf5,0x5e,0x61,0x69,0xb1,0x4d,0xbc,0x12,0xff,0x29,0x8f,0x37,0xf3, + 0x4f,0x00,0x67,0xa8,0x30,0x7b,0x3c,0x1c,0xff,0x17,0xd0,0xa8,0xf1,0xcb,0xa4,0x91, + 0xa5,0x9c,0x3b,0x3e,0x49,0x89,0xd4,0x59,0xa3,0x3e,0x71,0x63,0xc2,0xe0,0xbc,0x17, + 0x2b,0x0c,0x4d,0x24,0x1a,0x26,0x19,0x86,0xc5,0x6e,0x3f,0xa4,0x82,0x78,0x11,0xd6, + 0xe1,0x30,0x62,0x2d,0xb6,0xac,0x83,0x40,0xdf,0x98,0xc8,0x48,0x4a,0x7f,0xa3,0x9f, + 0x1d,0x2b,0xb6,0x2d,0x94,0x7f,0x47,0xfa,0x6b,0xc7,0x58,0x9b,0x93,0xbb,0x47,0xfa, + 0x33,0xe3,0xc5,0x36,0x87,0xde,0x25,0x9d,0xb9,0x63,0xc5,0x49,0x8b,0xaa,0xfd,0xbb, + 0x8d,0xf3,0x2b,0xdf,0xf2,0xa7,0xe6,0xe8,0x7b,0x68,0x4e,0xfb,0x53,0x57,0xd3,0xd2, + 0x78,0xa1,0xa9,0xc9,0x16,0x35,0x7e,0x23,0xfc,0xf6,0x14,0x6b,0x14,0xdf,0x45,0x58, + 0xc0,0x18,0x65,0x3c,0x0b,0x8d,0x78,0x76,0x5d,0x6f,0x2e,0xb0,0x5d,0x3a,0x42,0x60, + 0x2e,0xdc,0xc8,0x7c,0x1b,0x8d,0xed,0x96,0xb3,0x9d,0x36,0x9f,0x3e,0x67,0xb9,0xe5, + 0x11,0x34,0x6a,0xff,0xb3,0x45,0x3b,0x47,0xf3,0xc4,0x61,0x46,0xd1,0x3e,0x49,0x5f, + 0x27,0xe9,0x5c,0xbe,0xe8,0x9d,0xa4,0x27,0x20,0x9d,0xbb,0x27,0x5a,0xd2,0x24,0xad, + 0xce,0x07,0xb3,0x53,0xa4,0x40,0xcb,0x2b,0x9b,0xa2,0xec,0x99,0x75,0xc4,0x7f,0x28, + 0x6e,0x98,0xce,0x09,0x57,0x98,0x2b,0xea,0xe9,0xf7,0x1a,0xb1,0x12,0x54,0xa1,0x0f, + 0xf6,0x92,0x18,0x67,0x55,0xab,0x8f,0xa2,0xa9,0x44,0xe6,0x16,0x1a,0xb5,0x7f,0x2a, + 0x31,0x49,0xca,0xb5,0x4e,0x1f,0x8e,0xc5,0x27,0x61,0xbd,0x36,0xe0,0xb7,0x44,0xe6, + 0xe0,0xa4,0x75,0xf2,0xee,0xc0,0xcb,0x2d,0x6a,0x3c,0x49,0xe3,0x62,0xe6,0x4c,0xe5, + 0x0d,0xcf,0xbe,0x4f,0x71,0xf7,0x9f,0x7d,0xc1,0x33,0xee,0x23,0x18,0xfc,0x39,0x04, + 0x83,0x8b,0xf1,0x25,0xfe,0x3d,0xef,0x67,0xea,0xf8,0xbf,0x38,0x36,0xfc,0xb0,0x72, + 0x7b,0xf9,0xa5,0xe4,0x3e,0x61,0x7e,0xb3,0xfc,0xd2,0xe8,0xbe,0x89,0xb1,0x07,0xf3, + 0xb7,0x7b,0xde,0x4f,0xee,0x1b,0x1e,0x5b,0x17,0xe6,0x90,0x1a,0xcf,0xe0,0xdb,0xe3, + 0x3b,0x7f,0xfc,0xed,0xd3,0x27,0x5b,0xd2,0xdc,0x79,0xfa,0xc9,0xd6,0xe0,0xa7,0xc7, + 0x37,0xae,0xed,0x6c,0x6e,0x6f,0x0d,0x5e,0x3e,0xbe,0x23,0xcc,0x36,0xfc,0x07,0x7a, + 0xf5,0x46,0xf2,0xe0,0xf0,0x68,0x65,0x7e,0x7a,0x68,0xeb,0x4b,0xb7,0xb2,0x3b,0x95, + 0x7f,0xfc,0xe0,0xd5,0x9f,0x8f,0xbe,0xfd,0xd1,0x68,0xe5,0xfa,0xf6,0xd0,0xce,0x68, + 0xef,0x47,0xa3,0x4f,0xaf,0x6f,0xaa,0xfd,0x87,0x2e,0x8f,0x6f,0x5c,0xbb,0xb3,0xf9, + 0x64,0x6b,0xa8,0x1e,0xc6,0xf6,0x90,0x0c,0x6c,0xf3,0x13,0xec,0x3f,0xbe,0x21,0x23, + 0x54,0xfb,0x77,0x1f,0x28,0x6c,0xcc,0x7f,0x63,0xf3,0xea,0xd9,0x41,0xf1,0xc1,0x5f, + 0xe3,0x07,0xd1,0xfc,0xa5,0xed,0x4e,0xf9,0xc9,0x56,0xb7,0x2b,0xcd,0xdf,0xbe,0xbf, + 0x2b,0xa0,0xec,0x0c,0x5b,0xb2,0x7a,0x5b,0x93,0xb5,0xae,0x99,0xcc,0x12,0xbc,0x49, + 0x5b,0x56,0x40,0xb6,0xd0,0xe4,0x4a,0x0c,0x8d,0xdf,0x4b,0x89,0x3a,0x9e,0x38,0xff, + 0x05,0x1f,0xba,0x20,0xb0,0x50,0x80,0xa2,0x7d,0x57,0x24,0x6a,0x34,0x98,0xa8,0x4f, + 0xc8,0x16,0x43,0xed,0x1f,0x23,0x81,0xc8,0xcf,0x2e,0x34,0xf9,0x70,0x95,0x78,0x20, + 0x8d,0xe4,0xc3,0xa0,0x75,0x77,0x7e,0x46,0xe6,0x11,0x90,0x16,0x2b,0x21,0xb6,0xc9, + 0xfd,0xb0,0xc4,0x43,0x6c,0x73,0x11,0xe4,0xce,0x72,0xc1,0x6f,0x27,0xd4,0xfe,0x66, + 0xee,0x62,0x32,0xc5,0xb3,0x06,0xcc,0x4d,0xbf,0x0c,0x1d,0xe5,0x3d,0xe1,0xc4,0xe8, + 0xe0,0x47,0x9b,0xa6,0xc7,0x56,0xe3,0x01,0x08,0xea,0x7c,0x88,0xd4,0xe5,0x5a,0x2a, + 0x1f,0x2a,0x26,0x52,0x12,0xb1,0x10,0x97,0x55,0x20,0xd6,0x97,0xfc,0x5a,0xa3,0x55, + 0xa1,0xbd,0x04,0xf9,0x30,0xb0,0x16,0xe9,0x41,0x92,0xe4,0xc3,0xc5,0x5d,0xcf,0xac, + 0x0e,0xd1,0xb1,0xd2,0x97,0xab,0xf9,0x0f,0xec,0x3e,0x7a,0xba,0xdc,0x7a,0x93,0xfe, + 0xd2,0xee,0x82,0xb1,0x52,0x6b,0x35,0xf7,0x81,0xfd,0x75,0x2a,0xcd,0x9c,0xf2,0x76, + 0xdc,0xac,0xb5,0x40,0x1b,0x38,0x0f,0x8c,0x8a,0x24,0x1d,0xa7,0x06,0xbf,0x92,0xbb, + 0x8d,0x53,0x33,0xfc,0xc8,0xb0,0xe8,0x03,0x35,0x8a,0xc9,0x17,0x2f,0x60,0x02,0xde, + 0x01,0x59,0xec,0x31,0x1c,0xa4,0x00,0xeb,0x3c,0x6a,0x92,0xb0,0xcc,0xa5,0xc8,0x8c, + 0x7e,0x74,0x7e,0xf1,0xf8,0x8e,0x5b,0x1e,0x16,0xeb,0x22,0x71,0x58,0xf2,0x81,0x1b, + 0x35,0xc5,0x93,0xbb,0x39,0xab,0x8b,0x9a,0xa5,0x18,0x1e,0xda,0xd5,0xbf,0x3e,0xec, + 0x32,0xd1,0xbb,0x98,0xf1,0x6d,0x9e,0x68,0x80,0x09,0x0d,0x4d,0x3b,0x6f,0xf6,0xb7, + 0x08,0x8b,0x05,0xe2,0x8b,0x32,0x82,0xcc,0x84,0xc1,0xd1,0xbb,0x0f,0xd3,0xa2,0x45, + 0xfc,0xea,0xf1,0x34,0xdc,0x80,0x83,0x1e,0x89,0x9e,0x28,0xb0,0x3a,0x1f,0x66,0x0b, + 0xb8,0xdf,0x49,0x50,0x2c,0xe0,0xb6,0xe8,0xff,0x58,0x80,0x62,0x65,0xb5,0x47,0x1e, + 0x32,0x2b,0xb5,0xe6,0xef,0x43,0x32,0xf8,0x77,0x3e,0xe4,0xac,0x81,0x85,0x4d,0xd3, + 0xfc,0x7b,0x11,0x0c,0xd3,0xa3,0x2f,0x21,0xcd,0x9a,0xad,0x1b,0xf8,0x90,0xd6,0xcd, + 0x6a,0xd8,0x92,0xb2,0x6a,0x56,0x14,0x0f,0x13,0xfc,0xe6,0x8d,0xe0,0x4d,0x17,0x06, + 0x90,0xdf,0x7e,0x28,0x2e,0xd3,0x93,0xd7,0xcb,0xf0,0xd0,0x04,0xb5,0x79,0x14,0x0f, + 0xf9,0x2c,0x3e,0xf4,0x9f,0x69,0xa9,0x35,0x2b,0xda,0x22,0x19,0x0e,0xcf,0x2f,0x78, + 0x38,0x34,0xb6,0xb8,0xf0,0xba,0x11,0x2d,0xb8,0xbf,0x47,0xf3,0x53,0xc4,0x53,0x24, + 0x0e,0xe4,0xd1,0xd7,0x8d,0x8d,0x37,0xb5,0x6e,0x1a,0x87,0x86,0x9b,0xfb,0x69,0x01, + 0x07,0x3c,0xc3,0x9d,0xc0,0x70,0x89,0x58,0x17,0x56,0x40,0x85,0xc9,0x3c,0x63,0xa2, + 0xe9,0x53,0x00,0x31,0xf3,0x4d,0x9c,0x05,0x8e,0x88,0x96,0xd5,0x6b,0xa5,0x72,0xc3, + 0x84,0x2d,0xa0,0xc4,0x33,0x85,0x34,0x58,0x0e,0x3a,0x4f,0xb9,0x53,0x08,0x8a,0x7f, + 0x0a,0xd2,0xae,0xd1,0x00,0xc5,0x54,0x93,0x18,0x15,0x5e,0x25,0x82,0xdf,0x3a,0x82, + 0xa3,0x96,0xb3,0x26,0xcd,0x9b,0x56,0xfb,0x5a,0xe2,0xbb,0x04,0x5b,0x8a,0xce,0x3a, + 0x96,0x96,0x1d,0xec,0xe8,0xa9,0x43,0xca,0xf5,0x92,0x84,0x73,0x81,0x77,0x04,0xbd, + 0x2e,0x59,0x8b,0x5d,0xe0,0x4b,0x68,0x92,0x6b,0x20,0x4c,0x1b,0x9a,0xd8,0x85,0x92, + 0x68,0x51,0xf2,0x49,0x31,0x3f,0x22,0xe9,0xf1,0x0d,0xd7,0x8c,0xf8,0x90,0x0e,0x94, + 0xcf,0x04,0x6d,0xa7,0xd2,0x0f,0xc9,0x85,0x2b,0x02,0x1d,0xed,0xd5,0x66,0x3c,0x0c, + 0xa1,0x57,0xa6,0x1d,0xe4,0x73,0x34,0xa3,0x21,0x16,0xce,0xf0,0xdd,0x15,0xab,0x12, + 0x0f,0xce,0x64,0x4c,0x32,0x41,0x62,0x11,0x6e,0xa1,0xf9,0x4a,0x80,0x69,0xe7,0x1d, + 0x2a,0x5b,0xd0,0x84,0x87,0x5c,0x75,0x3f,0xcd,0x07,0x70,0x89,0xec,0x87,0xec,0x2c, + 0x3c,0x2a,0x1f,0x21,0x07,0x20,0xcb,0xed,0x47,0xf4,0x12,0x9a,0xa3,0x68,0x7a,0x2e, + 0x81,0x34,0x11,0x1f,0x32,0x32,0x01,0xde,0x32,0xf2,0x21,0xc6,0xc3,0x3d,0xde,0xee, + 0xc7,0x10,0x0b,0xf9,0xb4,0xc0,0xc2,0x02,0x99,0xe7,0x41,0x68,0xb8,0x12,0x0f,0xce, + 0xb7,0x9b,0x72,0xfe,0xfc,0xa4,0x8c,0x34,0x58,0xc5,0x32,0x6a,0xb6,0xdc,0xe0,0xc3, + 0xb2,0x98,0x6f,0x82,0x0f,0xd5,0xf5,0x45,0x20,0xe3,0xb4,0x86,0xf3,0xa7,0x64,0x79, + 0x79,0x13,0x59,0x8a,0xa1,0xc9,0xa1,0xa1,0xa1,0xc9,0x44,0x3c,0xc6,0x18,0x96,0x94, + 0xf7,0x1d,0xdf,0x30,0x61,0x2f,0xae,0x23,0xa7,0x4a,0x52,0x24,0xeb,0x15,0x6b,0xd8, + 0x82,0x06,0xea,0x86,0x91,0x28,0x1e,0x93,0xfa,0xb6,0xe4,0x43,0xce,0xba,0x30,0xdb, + 0xc4,0x91,0x0f,0x59,0x1d,0x0b,0x9b,0x06,0x94,0xf5,0x35,0xec,0xb5,0x96,0x78,0xd5, + 0x33,0x17,0x63,0x5d,0x48,0x83,0x58,0x62,0x0b,0x3e,0x9c,0x43,0x12,0xdb,0x3b,0x87, + 0x09,0xa3,0x22,0xf8,0x70,0x0e,0x94,0xf5,0xc5,0xae,0xca,0x24,0x83,0x39,0xb7,0xec, + 0x49,0x53,0xc2,0xfc,0x63,0xbb,0xf0,0x6d,0x62,0xf3,0x3f,0x04,0x16,0xa2,0x4e,0xac, + 0x9d,0x37,0xd7,0x17,0xf6,0xe7,0xd3,0xd0,0x0e,0x89,0x8c,0x59,0xe1,0x01,0xdc,0x88, + 0x63,0x46,0xae,0xc0,0x4c,0x1f,0xe6,0x9f,0x18,0xa9,0xac,0x61,0x8e,0x46,0x53,0x52, + 0xd7,0x57,0xc0,0x8e,0xc0,0x7e,0x88,0xcf,0xd6,0xaa,0xfc,0x08,0xd9,0x4f,0xb2,0xbc, + 0xf2,0x88,0x9e,0x6f,0x11,0x77,0x90,0x3f,0x9a,0x3e,0x92,0xdc,0x1f,0xc7,0x3b,0xc8, + 0x9b,0xe3,0x53,0xc4,0xf2,0xfb,0x9b,0xc1,0xfe,0x53,0xf1,0x05,0xf8,0x05,0xf8,0x2c, + 0x65,0xc5,0x29,0x7c,0x88,0xb9,0x53,0x9a,0x95,0x46,0x8b,0x7a,0xbf,0x28,0x0c,0xb0, + 0x96,0x62,0x7c,0xa2,0xb2,0xc0,0xfb,0x59,0x4b,0x26,0xee,0xc0,0x3d,0xda,0x5f,0x48, + 0x15,0x43,0xc3,0x52,0x13,0x71,0xc7,0x5a,0x25,0x56,0x33,0x9e,0x2c,0x0d,0x56,0x5c, + 0x7f,0xc4,0x85,0x1f,0x95,0x99,0x30,0xa6,0x7d,0x2d,0x6c,0x49,0xd9,0xd7,0x21,0x58, + 0x29,0x08,0xc3,0x2d,0x65,0x7c,0xa0,0x1b,0xb3,0xb4,0xfa,0xf2,0xe4,0xee,0x67,0xbc, + 0xd7,0x8a,0xd6,0x57,0xa1,0xc1,0x87,0x3c,0x77,0x4e,0x98,0x4e,0xeb,0x63,0xe4,0x43, + 0x4b,0x60,0xe1,0x22,0x9c,0xb3,0xcd,0x90,0x0f,0x9b,0xe3,0x99,0x67,0xb9,0xd7,0xed, + 0xb4,0x93,0xcf,0xf3,0x13,0xd3,0x45,0xdb,0x31,0xf2,0xc4,0x62,0x0c,0xd3,0x8e,0x81, + 0xf9,0x27,0x07,0xd8,0x42,0xf3,0x40,0xa2,0xf5,0x8e,0xf3,0x21,0xac,0x8c,0xbb,0x64, + 0xe6,0xb3,0x66,0x0d,0x39,0x37,0x41,0x14,0x31,0xc4,0xac,0xd7,0x0b,0x25,0x88,0x78, + 0x5e,0xf0,0x21,0x87,0x2a,0x43,0x1a,0xa4,0xb1,0x32,0x43,0x50,0xa4,0x2a,0x28,0x86, + 0x26,0xea,0xcd,0xf2,0xaf,0x91,0x49,0x46,0x1f,0x9c,0x7d,0xc5,0x6d,0x49,0xb4,0xb1, + 0xf5,0x07,0x9d,0x87,0x53,0x2d,0xf1,0x49,0x34,0x03,0x87,0x8d,0xd7,0xea,0x46,0xc9, + 0x3f,0x78,0xbd,0x3d,0x17,0x33,0x4b,0xc8,0x87,0xef,0xfe,0xbe,0x47,0xec,0xfe,0x7b, + 0xbc,0x74,0x2d,0x31,0x23,0x79,0xa0,0xbd,0x01,0x06,0x4a,0xfe,0x01,0xf8,0xda,0x5b, + 0x23,0x0f,0xdf,0xbd,0xbd,0xfc,0x9d,0x1b,0x2f,0xbe,0x35,0x26,0xf8,0xf0,0xfd,0x3a, + 0x1f,0x2e,0x47,0x7c,0xb8,0xeb,0x19,0xf7,0x50,0xc4,0x87,0xc7,0x05,0x1f,0xee,0xd4, + 0xf9,0xf0,0x69,0xc4,0x87,0xbb,0x78,0xec,0xf3,0xea,0xab,0x02,0x0b,0xff,0x5a,0xd9, + 0xd9,0x1e,0xda,0xaa,0x83,0x22,0x12,0xe3,0x73,0xf8,0x50,0xfe,0xf4,0xbf,0x6f,0x62, + 0xff,0x4f,0x1b,0xa0,0x78,0xf9,0x79,0x7c,0x38,0xd8,0xe0,0xc3,0xee,0x03,0xe3,0x1b, + 0xf3,0xfd,0x9b,0x4f,0x1e,0x0f,0x5d,0x7a,0xa6,0xff,0xe3,0x2f,0x1e,0xbd,0x0f,0x1e, + 0x11,0x2f,0x28,0x7c,0xc8,0xa6,0xbe,0xf8,0x59,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4, + 0xb4,0xb4,0xb4,0xb4,0xfe,0xdf,0x25,0x6b,0x07,0xaa,0x6b,0x07,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0xad,0xe7,0x4b,0xd6,0x0e,0x09,0x5d,0x3b,0x68,0x69, + 0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x3d,0x5f,0xb2,0x76,0x30,0x65,0xed, + 0xf0,0xbf,0x0e,0x45,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0xeb,0xbf, + 0x28,0x5f,0xfc,0xd1,0x24,0xf8,0xe7,0x79,0x1f,0xb8,0xf8,0xce,0x53,0xdc,0x07,0xf6, + 0xb9,0xdf,0x27,0xd4,0x3f,0x6b,0xf8,0x50,0x25,0xd1,0x39,0x1f,0x9f,0x7e,0xb6,0xdf, + 0xbf,0x00,0x34,0x34,0xbf,0x69,0xee,0x33,0x01,0x00, diff --git a/board/hmi1001/hmi1001.c b/board/hmi1001/hmi1001.c index 8980209..fca11d0 100644 --- a/board/hmi1001/hmi1001.c +++ b/board/hmi1001/hmi1001.c @@ -170,3 +170,13 @@ int board_early_init_r (void) *(vu_long *)MPC5XXX_CS0_STOP = STOP_REG(CFG_FLASH_BASE, CFG_FLASH_SIZE); return 0; } +#ifdef CONFIG_PCI +static struct pci_controller hose; + +extern void pci_mpc5xxx_init(struct pci_controller *); + +void pci_init_board(void) +{ + pci_mpc5xxx_init(&hose); +} +#endif diff --git a/board/pm854/flash.c b/board/pm854/flash.c deleted file mode 100644 index d714589..0000000 --- a/board/pm854/flash.c +++ /dev/null @@ -1,541 +0,0 @@ -/* - * (C) Copyright 2003 Motorola Inc. - * Xianghua Xiao,(X.Xiao@motorola.com) - * - * (C) Copyright 2000-2005 - * Wolfgang Denk, DENX Software Engineering, wd@denx.de. - * - * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com - * Add support the Sharp chips on the mpc8260ads. - * I started with board/ip860/flash.c and made changes I found in - * the MTD project by David Schleef. - * - * See file CREDITS for list of people who contributed to this - * project. - * - * 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 <common.h> - -#if !defined(CFG_NO_FLASH) - -flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */ - -#if defined(CFG_ENV_IS_IN_FLASH) -# ifndef CFG_ENV_ADDR -# define CFG_ENV_ADDR (CFG_FLASH_BASE + CFG_ENV_OFFSET) -# endif -# ifndef CFG_ENV_SIZE -# define CFG_ENV_SIZE CFG_ENV_SECT_SIZE -# endif -# ifndef CFG_ENV_SECT_SIZE -# define CFG_ENV_SECT_SIZE CFG_ENV_SIZE -# endif -#endif - -#undef DEBUG - -/*----------------------------------------------------------------------- - * Functions - */ -static ulong flash_get_size (vu_long *addr, flash_info_t *info); -static int write_word (flash_info_t *info, ulong dest, ulong data); -static int clear_block_lock_bit(vu_long * addr); -/*----------------------------------------------------------------------- - */ - -unsigned long flash_init (void) -{ - unsigned long size; - int i; - - /* Init: enable write, - * or we cannot even write flash commands - */ - for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) { - flash_info[i].flash_id = FLASH_UNKNOWN; - - /* set the default sector offset */ - } - - /* Static FLASH Bank configuration here - FIXME XXX */ - - size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]); - - if (flash_info[0].flash_id == FLASH_UNKNOWN) { - printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n", - size, size<<20); - } - - /* Re-do sizing to get full correct info */ - size = flash_get_size((vu_long *)CFG_FLASH_BASE, &flash_info[0]); - - flash_info[0].size = size; - -#if CFG_MONITOR_BASE >= CFG_FLASH_BASE - /* monitor protection ON by default */ - flash_protect(FLAG_PROTECT_SET, - CFG_MONITOR_BASE, - CFG_MONITOR_BASE+monitor_flash_len-1, - &flash_info[0]); - -#ifdef CFG_ENV_IS_IN_FLASH - /* ENV protection ON by default */ - flash_protect(FLAG_PROTECT_SET, - CFG_ENV_ADDR, - CFG_ENV_ADDR+CFG_ENV_SECT_SIZE-1, - &flash_info[0]); -#endif -#endif - return (size); -} - -/*----------------------------------------------------------------------- - */ -void flash_print_info (flash_info_t *info) -{ - int i; - - if (info->flash_id == FLASH_UNKNOWN) { - printf ("missing or unknown FLASH type\n"); - return; - } - - switch (info->flash_id & FLASH_VENDMASK) { - case FLASH_MAN_INTEL: printf ("Intel "); break; - case FLASH_MAN_SHARP: printf ("Sharp "); break; - default: printf ("Unknown Vendor "); break; - } - - switch (info->flash_id & FLASH_TYPEMASK) { - case FLASH_28F016SV: printf ("28F016SV (16 Mbit, 32 x 64k)\n"); - break; - case FLASH_28F160S3: printf ("28F160S3 (16 Mbit, 32 x 512K)\n"); - break; - case FLASH_28F320S3: printf ("28F320S3 (32 Mbit, 64 x 512K)\n"); - break; - case FLASH_LH28F016SCT: printf ("28F016SC (16 Mbit, 32 x 64K)\n"); - break; - case FLASH_28F640J3A: printf ("28F640J3A (64 Mbit, 64 x 128K)\n"); - break; - case FLASH_28F128J3A: printf ("28F128J3A (128 Mbit, 128 x 128K)\n"); - break; - - default: printf ("Unknown Chip Type\n"); - break; - } - - printf (" Size: %ld MB in %d Sectors\n", - info->size >> 20, info->sector_count); - - printf (" Sector Start Addresses:"); - for (i=0; i<info->sector_count; ++i) { - if ((i % 5) == 0) - printf ("\n "); - printf (" %08lX%s", - info->start[i], - info->protect[i] ? " (RO)" : " " - ); - } - printf ("\n"); -} - -/* - * The following code cannot be run from FLASH! - */ - -static ulong flash_get_size (vu_long *addr, flash_info_t *info) -{ - short i; - ulong value; - ulong base = (ulong)addr; - ulong sector_offset; - -#ifdef DEBUG - printf("Check flash at 0x%08x\n",(uint)addr); -#endif - /* Write "Intelligent Identifier" command: read Manufacturer ID */ - *addr = 0x90909090; - udelay(20); - asm("sync"); - - value = addr[0] & 0x00FF00FF; - -#ifdef DEBUG - printf("manufacturer=0x%x\n",(uint)value); -#endif - switch (value) { - case MT_MANUFACT: /* SHARP, MT or => Intel */ - case INTEL_ALT_MANU: - info->flash_id = FLASH_MAN_INTEL; - break; - default: - printf("unknown manufacturer: %x\n", (unsigned int)value); - info->flash_id = FLASH_UNKNOWN; - info->sector_count = 0; - info->size = 0; - return (0); /* no or unknown flash */ - } - - value = addr[1] & 0x00FF00FF; /* device ID */ - -#ifdef DEBUG - printf("deviceID=0x%x\n",(uint)value); -#endif - switch (value) { - case (INTEL_ID_28F016S): - info->flash_id += FLASH_28F016SV; - info->sector_count = 32; - info->size = 0x00400000; - sector_offset = 0x20000; - break; /* => 2x2 MB */ - - case (INTEL_ID_28F160S3): - info->flash_id += FLASH_28F160S3; - info->sector_count = 32; - info->size = 0x00400000; - sector_offset = 0x20000; - break; /* => 2x2 MB */ - - case (INTEL_ID_28F320S3): - info->flash_id += FLASH_28F320S3; - info->sector_count = 64; - info->size = 0x00800000; - sector_offset = 0x20000; - break; /* => 2x4 MB */ - - case (INTEL_ID_28F640J3A): - info->flash_id += FLASH_28F640J3A; - info->sector_count = 64; - info->size = 0x01000000; - sector_offset = 0x40000; - break; /* => 2x8 MB */ - - case (INTEL_ID_28F128J3A): - info->flash_id += FLASH_28F128J3A; - info->sector_count = 128; - info->size = 0x02000000; - sector_offset = 0x40000; - break; /* => 2x16 MB */ - - - case SHARP_ID_28F016SCL: - case SHARP_ID_28F016SCZ: - info->flash_id = FLASH_MAN_SHARP | FLASH_LH28F016SCT; - info->sector_count = 32; - info->size = 0x00800000; - sector_offset = 0x40000; - break; /* => 4x2 MB */ - - - default: - info->flash_id = FLASH_UNKNOWN; - return (0); /* => no or unknown flash */ - - } - - /* set up sector start address table */ - for (i = 0; i < info->sector_count; i++) { - info->start[i] = base; - base += sector_offset; - /* don't know how to check sector protection */ - info->protect[i] = 0; - } - - /* - * Prevent writes to uninitialized FLASH. - */ - if (info->flash_id != FLASH_UNKNOWN) { - addr = (vu_long *)info->start[0]; - *addr = 0xFFFFFF; /* reset bank to read array mode */ - asm("sync"); - } - - return (info->size); -} - - -/*----------------------------------------------------------------------- - */ - -int flash_erase (flash_info_t *info, int s_first, int s_last) -{ - int flag, prot, sect; - ulong start, now, last; - - if ((s_first < 0) || (s_first > s_last)) { - if (info->flash_id == FLASH_UNKNOWN) { - printf ("- missing\n"); - } else { - printf ("- no sectors to erase\n"); - } - return 1; - } - - if ( ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) - && ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_SHARP) ) { - printf ("Can't erase unknown flash type %08lx - aborted\n", - info->flash_id); - return 1; - } - - prot = 0; - for (sect=s_first; sect<=s_last; ++sect) { - if (info->protect[sect]) { - prot++; - } - } - - if (prot) { - printf ("- Warning: %d protected sectors will not be erased!\n", - prot); - } else { - printf ("\n"); - } - -#ifdef DEBUG - printf("\nFlash Erase:\n"); -#endif - /* Make Sure Block Lock Bit is not set. */ - if(clear_block_lock_bit((vu_long *)(info->start[s_first]))){ - return 1; - } - - /* Start erase on unprotected sectors */ -#if defined(DEBUG) - printf("Begin to erase now,s_first=0x%x s_last=0x%x...\n",s_first,s_last); -#endif - for (sect = s_first; sect<=s_last; sect++) { - if (info->protect[sect] == 0) { /* not protected */ - vu_long *addr = (vu_long *)(info->start[sect]); - asm("sync"); - - last = start = get_timer (0); - - /* Disable interrupts which might cause a timeout here */ - flag = disable_interrupts(); - - /* Reset Array */ - *addr = 0xffffffff; - asm("sync"); - /* Clear Status Register */ - *addr = 0x50505050; - asm("sync"); - /* Single Block Erase Command */ - *addr = 0x20202020; - asm("sync"); - /* Confirm */ - *addr = 0xD0D0D0D0; - asm("sync"); - - if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) { - /* Resume Command, as per errata update */ - *addr = 0xD0D0D0D0; - asm("sync"); - } - - /* re-enable interrupts if necessary */ - if (flag) - enable_interrupts(); - - /* wait at least 80us - let's wait 1 ms */ - udelay (1000); - while ((*addr & 0x00800080) != 0x00800080) { - if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) { - printf ("Timeout\n"); - *addr = 0xFFFFFFFF; /* reset bank */ - asm("sync"); - return 1; - } - /* show that we're waiting */ - if ((now - last) > 1000) { /* every second */ - putc ('.'); - last = now; - } - } - - /* reset to read mode */ - *addr = 0xFFFFFFFF; - asm("sync"); - } - } - - printf ("flash erase done\n"); - return 0; -} - -/*----------------------------------------------------------------------- - * Copy memory to flash, returns: - * 0 - OK - * 1 - write timeout - * 2 - Flash not erased - */ - -int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) -{ - ulong cp, wp, data; - int i, l, rc; - - wp = (addr & ~3); /* get lower word aligned address */ - - /* - * handle unaligned start bytes - */ - if ((l = addr - wp) != 0) { - data = 0; - for (i=0, cp=wp; i<l; ++i, ++cp) { - data = (data << 8) | (*(uchar *)cp); - } - for (; i<4 && cnt>0; ++i) { - data = (data << 8) | *src++; - --cnt; - ++cp; - } - for (; cnt==0 && i<4; ++i, ++cp) { - data = (data << 8) | (*(uchar *)cp); - } - - if ((rc = write_word(info, wp, data)) != 0) { - return (rc); - } - wp += 4; - } - - /* - * handle word aligned part - */ - while (cnt >= 4) { - data = 0; - for (i=0; i<4; ++i) { - data = (data << 8) | *src++; - } - if ((rc = write_word(info, wp, data)) != 0) { - return (rc); - } - wp += 4; - cnt -= 4; - } - - if (cnt == 0) { - return (0); - } - - /* - * handle unaligned tail bytes - */ - data = 0; - for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) { - data = (data << 8) | *src++; - --cnt; - } - for (; i<4; ++i, ++cp) { - data = (data << 8) | (*(uchar *)cp); - } - - return (write_word(info, wp, data)); -} - -/*----------------------------------------------------------------------- - * Write a word to Flash, returns: - * 0 - OK - * 1 - write timeout - * 2 - Flash not erased - */ -static int write_word (flash_info_t *info, ulong dest, ulong data) -{ - vu_long *addr = (vu_long *)dest; - ulong start, csr; - int flag; - - /* Check if Flash is (sufficiently) erased */ - if ((*addr & data) != data) { - return (2); - } - /* Disable interrupts which might cause a timeout here */ - flag = disable_interrupts(); - - /* Write Command */ - *addr = 0x10101010; - asm("sync"); - - /* Write Data */ - *addr = data; - - /* re-enable interrupts if necessary */ - if (flag) - enable_interrupts(); - - /* data polling for D7 */ - start = get_timer (0); - flag = 0; - - while (((csr = *addr) & 0x00800080) != 0x00800080) { - if (get_timer(start) > CFG_FLASH_WRITE_TOUT) { - flag = 1; - break; - } - } - if (csr & 0x40404040) { - printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr); - flag = 1; - } - - /* Clear Status Registers Command */ - *addr = 0x50505050; - asm("sync"); - /* Reset to read array mode */ - *addr = 0xFFFFFFFF; - asm("sync"); - - return (flag); -} - -/*----------------------------------------------------------------------- - * Clear Block Lock Bit, returns: - * 0 - OK - * 1 - Timeout - */ - -static int clear_block_lock_bit(vu_long * addr) -{ - ulong start, now; - - /* Reset Array */ - *addr = 0xffffffff; - asm("sync"); - /* Clear Status Register */ - *addr = 0x50505050; - asm("sync"); - - *addr = 0x60606060; - asm("sync"); - *addr = 0xd0d0d0d0; - asm("sync"); - - start = get_timer (0); - while((*addr & 0x00800080) != 0x00800080){ - if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) { - printf ("Timeout on clearing Block Lock Bit\n"); - *addr = 0xFFFFFFFF; /* reset bank */ - asm("sync"); - return 1; - } - } - return 0; -} - -#endif /* !CFG_NO_FLASH */ diff --git a/board/sandburst/common/flash.c b/board/sandburst/common/flash.c new file mode 100644 index 0000000..762fb73 --- /dev/null +++ b/board/sandburst/common/flash.c @@ -0,0 +1,512 @@ +/* + * (C) Copyright 2002-2005 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * (C) Copyright 2002 Jun Gu <jung@artesyncp.com> + * Add support for Am29F016D and dynamic switch setting. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ +/* + * Ported from Ebony flash support + * Travis B. Sawyer + * Sandburst Corporation + */ +#include <common.h> +#include <ppc4xx.h> +#include <asm/processor.h> + + +#undef DEBUG +#ifdef DEBUG +#define DEBUGF(x...) printf(x) +#else +#define DEBUGF(x...) +#endif /* DEBUG */ + + +flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */ + +static unsigned long flash_addr_table[8][CFG_MAX_FLASH_BANKS] = { + {0xfff80000} /* Boot Flash */ +}; + +/*----------------------------------------------------------------------- + * Functions + */ +static ulong flash_get_size (vu_long *addr, flash_info_t *info); +static int write_word (flash_info_t *info, ulong dest, ulong data); + + +#define ADDR0 0x5555 +#define ADDR1 0x2aaa +#define FLASH_WORD_SIZE unsigned char + + +/*----------------------------------------------------------------------- + */ + +unsigned long flash_init (void) +{ + unsigned long total_b = 0; + unsigned long size_b[CFG_MAX_FLASH_BANKS]; + unsigned short index = 0; + int i; + + + DEBUGF("\n"); + DEBUGF("FLASH: Index: %d\n", index); + + /* Init: no FLASHes known */ + for (i=0; i<CFG_MAX_FLASH_BANKS; ++i) { + flash_info[i].flash_id = FLASH_UNKNOWN; + flash_info[i].sector_count = -1; + flash_info[i].size = 0; + + /* check whether the address is 0 */ + if (flash_addr_table[index][i] == 0) { + continue; + } + + /* call flash_get_size() to initialize sector address */ + size_b[i] = flash_get_size( + (vu_long *)flash_addr_table[index][i], &flash_info[i]); + flash_info[i].size = size_b[i]; + if (flash_info[i].flash_id == FLASH_UNKNOWN) { + printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n", + i, size_b[i], size_b[i]<<20); + flash_info[i].sector_count = -1; + flash_info[i].size = 0; + } + + total_b += flash_info[i].size; + } + + return total_b; +} + + +/*----------------------------------------------------------------------- + */ +void flash_print_info (flash_info_t *info) +{ + int i; + int k; + int size; + int erased; + volatile unsigned long *flash; + + if (info->flash_id == FLASH_UNKNOWN) { + printf ("missing or unknown FLASH type\n"); + return; + } + + switch (info->flash_id & FLASH_VENDMASK) { + case FLASH_MAN_AMD: printf ("AMD "); break; + default: printf ("Unknown Vendor "); break; + } + + switch (info->flash_id & FLASH_TYPEMASK) { + case FLASH_AM040: printf ("AM29F040 (512 Kbit, uniform sector size)\n"); + break; + default: printf ("Unknown Chip Type\n"); + break; + } + + printf (" Size: %ld KB in %d Sectors\n", + info->size >> 10, info->sector_count); + + printf (" Sector Start Addresses:"); + for (i=0; i<info->sector_count; ++i) { + /* + * Check if whole sector is erased + */ + if (i != (info->sector_count-1)) + size = info->start[i+1] - info->start[i]; + else + size = info->start[0] + info->size - info->start[i]; + erased = 1; + flash = (volatile unsigned long *)info->start[i]; + size = size >> 2; /* divide by 4 for longword access */ + for (k=0; k<size; k++) + { + if (*flash++ != 0xffffffff) + { + erased = 0; + break; + } + } + + if ((i % 5) == 0) + printf ("\n "); + printf (" %08lX%s%s", + info->start[i], + erased ? " E" : " ", + info->protect[i] ? "RO " : " " + ); + } + printf ("\n"); + return; + } + +/*----------------------------------------------------------------------- + */ + + +/*----------------------------------------------------------------------- + */ + +/* + * The following code cannot be run from FLASH! + */ +static ulong flash_get_size (vu_long *addr, flash_info_t *info) +{ + short i; + FLASH_WORD_SIZE value; + ulong base = (ulong)addr; + volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *)addr; + + DEBUGF("FLASH ADDR: %08x\n", (unsigned)addr ); + + /* Write auto select command: read Manufacturer ID */ + udelay(10000); + addr2[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; + udelay(1000); + addr2[ADDR1] = (FLASH_WORD_SIZE)0x00550055; + udelay(1000); + addr2[ADDR0] = (FLASH_WORD_SIZE)0x00900090; + udelay(1000); + + value = addr2[0]; + + DEBUGF("FLASH MANUFACT: %x\n", value); + + switch (value) { + case (FLASH_WORD_SIZE)AMD_MANUFACT: + info->flash_id = FLASH_MAN_AMD; + break; + default: + info->flash_id = FLASH_UNKNOWN; + info->sector_count = 0; + info->size = 0; + return (0); /* no or unknown flash */ + } + + value = addr2[1]; /* device ID */ + + DEBUGF("\nFLASH DEVICEID: %x\n", value); + + switch (value) { + case (FLASH_WORD_SIZE)AMD_ID_LV040B: + info->flash_id += FLASH_AM040; + info->sector_count = 8; + info->size = 0x00080000; /* => 512 kb */ + break; + + default: + info->flash_id = FLASH_UNKNOWN; + return (0); /* => no or unknown flash */ + + } + + /* set up sector start address table */ + if (info->flash_id == FLASH_AM040) { + for (i = 0; i < info->sector_count; i++) + info->start[i] = base + (i * 0x00010000); + } else { + if (info->flash_id & FLASH_BTYPE) { + /* set sector offsets for bottom boot block type */ + info->start[0] = base + 0x00000000; + info->start[1] = base + 0x00004000; + info->start[2] = base + 0x00006000; + info->start[3] = base + 0x00008000; + for (i = 4; i < info->sector_count; i++) { + info->start[i] = base + (i * 0x00010000) - 0x00030000; + } + } else { + /* set sector offsets for top boot block type */ + i = info->sector_count - 1; + info->start[i--] = base + info->size - 0x00004000; + info->start[i--] = base + info->size - 0x00006000; + info->start[i--] = base + info->size - 0x00008000; + for (; i >= 0; i--) { + info->start[i] = base + i * 0x00010000; + } + } + } + + /* check for protected sectors */ + for (i = 0; i < info->sector_count; i++) { + /* read sector protection at sector address, (A7 .. A0) = 0x02 */ + /* D0 = 1 if protected */ + addr2 = (volatile FLASH_WORD_SIZE *)(info->start[i]); + if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) + info->protect[i] = 0; + else + info->protect[i] = addr2[2] & 1; + } + + /* reset to return to reading data */ + addr2[0] = (FLASH_WORD_SIZE) 0x00F000F0; /* reset bank */ + + /* + * Prevent writes to uninitialized FLASH. + */ + if (info->flash_id != FLASH_UNKNOWN) { + addr2 = (FLASH_WORD_SIZE *)info->start[0]; + *addr2 = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */ + } + + return (info->size); +} + +int wait_for_DQ7(flash_info_t *info, int sect) +{ + ulong start, now, last; + volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[sect]); + + start = get_timer (0); + last = start; + while ((addr[0] & (FLASH_WORD_SIZE)0x00800080) != (FLASH_WORD_SIZE)0x00800080) { + if ((now = get_timer(start)) > CFG_FLASH_ERASE_TOUT) { + printf ("Timeout\n"); + return -1; + } + /* show that we're waiting */ + if ((now - last) > 1000) { /* every second */ + putc ('.'); + last = now; + } + } + return 0; +} + +/*----------------------------------------------------------------------- + */ + +int flash_erase (flash_info_t *info, int s_first, int s_last) +{ + volatile FLASH_WORD_SIZE *addr = (FLASH_WORD_SIZE *)(info->start[0]); + volatile FLASH_WORD_SIZE *addr2; + int flag, prot, sect, l_sect; + int i; + + if ((s_first < 0) || (s_first > s_last)) { + if (info->flash_id == FLASH_UNKNOWN) { + printf ("- missing\n"); + } else { + printf ("- no sectors to erase\n"); + } + return 1; + } + + if (info->flash_id == FLASH_UNKNOWN) { + printf ("Can't erase unknown flash type - aborted\n"); + return 1; + } + + prot = 0; + for (sect=s_first; sect<=s_last; ++sect) { + if (info->protect[sect]) { + prot++; + } + } + + if (prot) { + printf ("- Warning: %d protected sectors will not be erased!\n", + prot); + } else { + printf ("\n"); + } + + l_sect = -1; + + /* Disable interrupts which might cause a timeout here */ + flag = disable_interrupts(); + + /* Start erase on unprotected sectors */ + for (sect = s_first; sect<=s_last; sect++) { + if (info->protect[sect] == 0) { /* not protected */ + addr2 = (FLASH_WORD_SIZE *)(info->start[sect]); + DEBUGF("Erasing sector %p\n", addr2); + + if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) { + addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; + addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; + addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080; + addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; + addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; + addr2[0] = (FLASH_WORD_SIZE)0x00500050; /* block erase */ + for (i=0; i<50; i++) + udelay(1000); /* wait 1 ms */ + } else { + addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; + addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; + addr[ADDR0] = (FLASH_WORD_SIZE)0x00800080; + addr[ADDR0] = (FLASH_WORD_SIZE)0x00AA00AA; + addr[ADDR1] = (FLASH_WORD_SIZE)0x00550055; + addr2[0] = (FLASH_WORD_SIZE)0x00300030; /* sector erase */ + } + l_sect = sect; + /* + * Wait for each sector to complete, it's more + * reliable. According to AMD Spec, you must + * issue all erase commands within a specified + * timeout. This has been seen to fail, especially + * if printf()s are included (for debug)!! + */ + wait_for_DQ7(info, sect); + } + } + + /* re-enable interrupts if necessary */ + if (flag) + enable_interrupts(); + + /* wait at least 80us - let's wait 1 ms */ + udelay (1000); + + /* reset to read mode */ + addr = (FLASH_WORD_SIZE *)info->start[0]; + addr[0] = (FLASH_WORD_SIZE)0x00F000F0; /* reset bank */ + + printf (" done\n"); + return 0; +} + +/*----------------------------------------------------------------------- + * Copy memory to flash, returns: + * 0 - OK + * 1 - write timeout + * 2 - Flash not erased + */ + +int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt) +{ + ulong cp, wp, data; + int i, l, rc; + + wp = (addr & ~3); /* get lower word aligned address */ + + /* + * handle unaligned start bytes + */ + if ((l = addr - wp) != 0) { + data = 0; + for (i=0, cp=wp; i<l; ++i, ++cp) { + data = (data << 8) | (*(uchar *)cp); + } + for (; i<4 && cnt>0; ++i) { + data = (data << 8) | *src++; + --cnt; + ++cp; + } + for (; cnt==0 && i<4; ++i, ++cp) { + data = (data << 8) | (*(uchar *)cp); + } + + if ((rc = write_word(info, wp, data)) != 0) { + return (rc); + } + wp += 4; + } + + /* + * handle word aligned part + */ + while (cnt >= 4) { + data = 0; + for (i=0; i<4; ++i) { + data = (data << 8) | *src++; + } + if ((rc = write_word(info, wp, data)) != 0) { + return (rc); + } + wp += 4; + cnt -= 4; + } + + if (cnt == 0) { + return (0); + } + + /* + * handle unaligned tail bytes + */ + data = 0; + for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) { + data = (data << 8) | *src++; + --cnt; + } + for (; i<4; ++i, ++cp) { + data = (data << 8) | (*(uchar *)cp); + } + + return (write_word(info, wp, data)); +} + +/*----------------------------------------------------------------------- + * Write a word to Flash, returns: + * 0 - OK + * 1 - write timeout + * 2 - Flash not erased + */ +static int write_word (flash_info_t * info, ulong dest, ulong data) +{ + volatile FLASH_WORD_SIZE *addr2 = (FLASH_WORD_SIZE *) (info->start[0]); + volatile FLASH_WORD_SIZE *dest2 = (FLASH_WORD_SIZE *) dest; + volatile FLASH_WORD_SIZE *data2 = (FLASH_WORD_SIZE *) & data; + ulong start; + int i; + + /* Check if Flash is (sufficiently) erased */ + if ((*((volatile FLASH_WORD_SIZE *) dest) & + (FLASH_WORD_SIZE) data) != (FLASH_WORD_SIZE) data) { + return (2); + } + + for (i = 0; i < 4 / sizeof (FLASH_WORD_SIZE); i++) { + int flag; + + /* Disable interrupts which might cause a timeout here */ + flag = disable_interrupts (); + + addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00AA00AA; + addr2[ADDR1] = (FLASH_WORD_SIZE) 0x00550055; + addr2[ADDR0] = (FLASH_WORD_SIZE) 0x00A000A0; + + dest2[i] = data2[i]; + + /* re-enable interrupts if necessary */ + if (flag) + enable_interrupts (); + + /* data polling for D7 */ + start = get_timer (0); + while ((dest2[i] & (FLASH_WORD_SIZE) 0x00800080) != + (data2[i] & (FLASH_WORD_SIZE) 0x00800080)) { + + if (get_timer (start) > CFG_FLASH_WRITE_TOUT) { + return (1); + } + } + } + + return (0); +} diff --git a/board/sandburst/common/ppc440gx_i2c.c b/board/sandburst/common/ppc440gx_i2c.c new file mode 100644 index 0000000..858b38c --- /dev/null +++ b/board/sandburst/common/ppc440gx_i2c.c @@ -0,0 +1,512 @@ +/* + * Copyright (C) 2005 Sandburst Corporation + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +/* + * Ported from cpu/ppc4xx/i2c.c by AS HARNOIS by + * Travis B. Sawyer + * Sandburst Corporation. + */ +#include <common.h> +#include <ppc4xx.h> +#if defined(CONFIG_440) +# include <440_i2c.h> +#else +# include <405gp_i2c.h> +#endif +#include <i2c.h> +#include <440_i2c.h> +#include <command.h> +#include "ppc440gx_i2c.h" + +#ifdef CONFIG_I2C_BUS1 + +#define IIC_OK 0 +#define IIC_NOK 1 +#define IIC_NOK_LA 2 /* Lost arbitration */ +#define IIC_NOK_ICT 3 /* Incomplete transfer */ +#define IIC_NOK_XFRA 4 /* Transfer aborted */ +#define IIC_NOK_DATA 5 /* No data in buffer */ +#define IIC_NOK_TOUT 6 /* Transfer timeout */ + +#define IIC_TIMEOUT 1 /* 1 second */ +#if defined(CFG_I2C_NOPROBES) +static uchar i2c_no_probes[] = CFG_I2C_NOPROBES; +#endif + +static void _i2c_bus1_reset (void) +{ + int i, status; + + /* Reset status register */ + /* write 1 in SCMP and IRQA to clear these fields */ + out8 (IIC_STS1, 0x0A); + + /* write 1 in IRQP IRQD LA ICT XFRA to clear these fields */ + out8 (IIC_EXTSTS1, 0x8F); + __asm__ volatile ("eieio"); + + /* + * Get current state, reset bus + * only if no transfers are pending. + */ + i = 10; + do { + /* Get status */ + status = in8 (IIC_STS1); + udelay (500); /* 500us */ + i--; + } while ((status & IIC_STS_PT) && (i > 0)); + /* Soft reset controller */ + status = in8 (IIC_XTCNTLSS1); + out8 (IIC_XTCNTLSS1, (status | IIC_XTCNTLSS_SRST)); + __asm__ volatile ("eieio"); + + /* make sure where in initial state, data hi, clock hi */ + out8 (IIC_DIRECTCNTL1, 0xC); + for (i = 0; i < 10; i++) { + if ((in8 (IIC_DIRECTCNTL1) & 0x3) != 0x3) { + /* clock until we get to known state */ + out8 (IIC_DIRECTCNTL1, 0x8); /* clock lo */ + udelay (100); /* 100us */ + out8 (IIC_DIRECTCNTL1, 0xC); /* clock hi */ + udelay (100); /* 100us */ + } else { + break; + } + } + /* send start condition */ + out8 (IIC_DIRECTCNTL1, 0x4); + udelay (1000); /* 1ms */ + /* send stop condition */ + out8 (IIC_DIRECTCNTL1, 0xC); + udelay (1000); /* 1ms */ + /* Unreset controller */ + out8 (IIC_XTCNTLSS1, (status & ~IIC_XTCNTLSS_SRST)); + udelay (1000); /* 1ms */ +} + +void i2c1_init (int speed, int slaveadd) +{ + sys_info_t sysInfo; + unsigned long freqOPB; + int val, divisor; + +#ifdef CFG_I2C_INIT_BOARD + /* call board specific i2c bus reset routine before accessing the */ + /* environment, which might be in a chip on that bus. For details */ + /* about this problem see doc/I2C_Edge_Conditions. */ + i2c_init_board(); +#endif + + /* Handle possible failed I2C state */ + /* FIXME: put this into i2c_init_board()? */ + _i2c_bus1_reset (); + + /* clear lo master address */ + out8 (IIC_LMADR1, 0); + + /* clear hi master address */ + out8 (IIC_HMADR1, 0); + + /* clear lo slave address */ + out8 (IIC_LSADR1, 0); + + /* clear hi slave address */ + out8 (IIC_HSADR1, 0); + + /* Clock divide Register */ + /* get OPB frequency */ + get_sys_info (&sysInfo); + freqOPB = sysInfo.freqPLB / sysInfo.pllOpbDiv; + /* set divisor according to freqOPB */ + divisor = (freqOPB - 1) / 10000000; + if (divisor == 0) + divisor = 1; + out8 (IIC_CLKDIV1, divisor); + + /* no interrupts */ + out8 (IIC_INTRMSK1, 0); + + /* clear transfer count */ + out8 (IIC_XFRCNT1, 0); + + /* clear extended control & stat */ + /* write 1 in SRC SRS SWC SWS to clear these fields */ + out8 (IIC_XTCNTLSS1, 0xF0); + + /* Mode Control Register + Flush Slave/Master data buffer */ + out8 (IIC_MDCNTL1, IIC_MDCNTL_FSDB | IIC_MDCNTL_FMDB); + __asm__ volatile ("eieio"); + + + val = in8(IIC_MDCNTL1); + __asm__ volatile ("eieio"); + + /* Ignore General Call, slave transfers are ignored, + disable interrupts, exit unknown bus state, enable hold + SCL + 100kHz normaly or FastMode for 400kHz and above + */ + + val |= IIC_MDCNTL_EUBS|IIC_MDCNTL_HSCL; + if( speed >= 400000 ){ + val |= IIC_MDCNTL_FSM; + } + out8 (IIC_MDCNTL1, val); + + /* clear control reg */ + out8 (IIC_CNTL1, 0x00); + __asm__ volatile ("eieio"); + +} + +/* + This code tries to use the features of the 405GP i2c + controller. It will transfer up to 4 bytes in one pass + on the loop. It only does out8(lbz) to the buffer when it + is possible to do out16(lhz) transfers. + + cmd_type is 0 for write 1 for read. + + addr_len can take any value from 0-255, it is only limited + by the char, we could make it larger if needed. If it is + 0 we skip the address write cycle. + + Typical case is a Write of an addr followd by a Read. The + IBM FAQ does not cover this. On the last byte of the write + we don't set the creg CHT bit, and on the first bytes of the + read we set the RPST bit. + + It does not support address only transfers, there must be + a data part. If you want to write the address yourself, put + it in the data pointer. + + It does not support transfer to/from address 0. + + It does not check XFRCNT. +*/ +static +int i2c_transfer1(unsigned char cmd_type, + unsigned char chip, + unsigned char addr[], + unsigned char addr_len, + unsigned char data[], + unsigned short data_len ) +{ + unsigned char* ptr; + int reading; + int tran,cnt; + int result; + int status; + int i; + uchar creg; + + if( data == 0 || data_len == 0 ){ + /*Don't support data transfer of no length or to address 0*/ + printf( "i2c_transfer: bad call\n" ); + return IIC_NOK; + } + if( addr && addr_len ){ + ptr = addr; + cnt = addr_len; + reading = 0; + }else{ + ptr = data; + cnt = data_len; + reading = cmd_type; + } + + /*Clear Stop Complete Bit*/ + out8(IIC_STS1,IIC_STS_SCMP); + /* Check init */ + i=10; + do { + /* Get status */ + status = in8(IIC_STS1); + __asm__ volatile("eieio"); + i--; + } while ((status & IIC_STS_PT) && (i>0)); + + if (status & IIC_STS_PT) { + result = IIC_NOK_TOUT; + return(result); + } + /*flush the Master/Slave Databuffers*/ + out8(IIC_MDCNTL1, ((in8(IIC_MDCNTL1))|IIC_MDCNTL_FMDB|IIC_MDCNTL_FSDB)); + /*need to wait 4 OPB clocks? code below should take that long*/ + + /* 7-bit adressing */ + out8(IIC_HMADR1,0); + out8(IIC_LMADR1, chip); + __asm__ volatile("eieio"); + + tran = 0; + result = IIC_OK; + creg = 0; + + while ( tran != cnt && (result == IIC_OK)) { + int bc,j; + + /* Control register = + Normal transfer, 7-bits adressing, Transfer up to bc bytes, Normal start, + Transfer is a sequence of transfers + */ + creg |= IIC_CNTL_PT; + + bc = (cnt - tran) > 4 ? 4 : + cnt - tran; + creg |= (bc-1)<<4; + /* if the real cmd type is write continue trans*/ + if ( (!cmd_type && (ptr == addr)) || ((tran+bc) != cnt) ) + creg |= IIC_CNTL_CHT; + + if (reading) + creg |= IIC_CNTL_READ; + else { + for(j=0; j<bc; j++) { + /* Set buffer */ + out8(IIC_MDBUF1,ptr[tran+j]); + __asm__ volatile("eieio"); + } + } + out8(IIC_CNTL1, creg ); + __asm__ volatile("eieio"); + + /* Transfer is in progress + we have to wait for upto 5 bytes of data + 1 byte chip address+r/w bit then bc bytes + of data. + udelay(10) is 1 bit time at 100khz + Doubled for slop. 20 is too small. + */ + i=2*5*8; + do { + /* Get status */ + status = in8(IIC_STS1); + __asm__ volatile("eieio"); + udelay (10); + i--; + } while ((status & IIC_STS_PT) && !(status & IIC_STS_ERR) + && (i>0)); + + if (status & IIC_STS_ERR) { + result = IIC_NOK; + status = in8 (IIC_EXTSTS1); + /* Lost arbitration? */ + if (status & IIC_EXTSTS_LA) + result = IIC_NOK_LA; + /* Incomplete transfer? */ + if (status & IIC_EXTSTS_ICT) + result = IIC_NOK_ICT; + /* Transfer aborted? */ + if (status & IIC_EXTSTS_XFRA) + result = IIC_NOK_XFRA; + } else if ( status & IIC_STS_PT) { + result = IIC_NOK_TOUT; + } + /* Command is reading => get buffer */ + if ((reading) && (result == IIC_OK)) { + /* Are there data in buffer */ + if (status & IIC_STS_MDBS) { + /* + even if we have data we have to wait 4OPB clocks + for it to hit the front of the FIFO, after that + we can just read. We should check XFCNT here and + if the FIFO is full there is no need to wait. + */ + udelay (1); + for(j=0;j<bc;j++) { + ptr[tran+j] = in8(IIC_MDBUF1); + __asm__ volatile("eieio"); + } + } else + result = IIC_NOK_DATA; + } + creg = 0; + tran+=bc; + if( ptr == addr && tran == cnt ) { + ptr = data; + cnt = data_len; + tran = 0; + reading = cmd_type; + if( reading ) + creg = IIC_CNTL_RPST; + } + } + return (result); +} + +int i2c_probe1 (uchar chip) +{ + uchar buf[1]; + + buf[0] = 0; + + /* + * What is needed is to send the chip address and verify that the + * address was <ACK>ed (i.e. there was a chip at that address which + * drove the data line low). + */ + return(i2c_transfer1 (1, chip << 1, 0,0, buf, 1) != 0); +} + + +int i2c_read1 (uchar chip, uint addr, int alen, uchar * buffer, int len) +{ + uchar xaddr[4]; + int ret; + + if ( alen > 4 ) { + printf ("I2C read: addr len %d not supported\n", alen); + return 1; + } + + if ( alen > 0 ) { + xaddr[0] = (addr >> 24) & 0xFF; + xaddr[1] = (addr >> 16) & 0xFF; + xaddr[2] = (addr >> 8) & 0xFF; + xaddr[3] = addr & 0xFF; + } + + +#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW + /* + * EEPROM chips that implement "address overflow" are ones + * like Catalyst 24WC04/08/16 which has 9/10/11 bits of + * address and the extra bits end up in the "chip address" + * bit slots. This makes a 24WC08 (1Kbyte) chip look like + * four 256 byte chips. + * + * Note that we consider the length of the address field to + * still be one byte because the extra address bits are + * hidden in the chip address. + */ + if( alen > 0 ) + chip |= ((addr >> (alen * 8)) & CFG_I2C_EEPROM_ADDR_OVERFLOW); +#endif + if( (ret = i2c_transfer1( 1, chip<<1, &xaddr[4-alen], alen, buffer, len )) != 0) { + printf( "I2c read: failed %d\n", ret); + return 1; + } + return 0; +} + +int i2c_write1 (uchar chip, uint addr, int alen, uchar * buffer, int len) +{ + uchar xaddr[4]; + + if ( alen > 4 ) { + printf ("I2C write: addr len %d not supported\n", alen); + return 1; + + } + if ( alen > 0 ) { + xaddr[0] = (addr >> 24) & 0xFF; + xaddr[1] = (addr >> 16) & 0xFF; + xaddr[2] = (addr >> 8) & 0xFF; + xaddr[3] = addr & 0xFF; + } + +#ifdef CFG_I2C_EEPROM_ADDR_OVERFLOW + /* + * EEPROM chips that implement "address overflow" are ones + * like Catalyst 24WC04/08/16 which has 9/10/11 bits of + * address and the extra bits end up in the "chip address" + * bit slots. This makes a 24WC08 (1Kbyte) chip look like + * four 256 byte chips. + * + * Note that we consider the length of the address field to + * still be one byte because the extra address bits are + * hidden in the chip address. + */ + if( alen > 0 ) + chip |= ((addr >> (alen * 8)) & CFG_I2C_EEPROM_ADDR_OVERFLOW); +#endif + + return (i2c_transfer1( 0, chip<<1, &xaddr[4-alen], alen, buffer, len ) != 0); +} + +/*----------------------------------------------------------------------- + * Read a register + */ +uchar i2c_reg_read1(uchar i2c_addr, uchar reg) +{ + char buf; + + i2c_read1(i2c_addr, reg, 1, &buf, 1); + + return(buf); +} + +/*----------------------------------------------------------------------- + * Write a register + */ +void i2c_reg_write1(uchar i2c_addr, uchar reg, uchar val) +{ + i2c_write1(i2c_addr, reg, 1, &val, 1); +} + + +int do_i2c1_probe(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + int j; +#if defined(CFG_I2C_NOPROBES) + int k, skip; +#endif + + puts ("Valid chip addresses:"); + for(j = 0; j < 128; j++) { +#if defined(CFG_I2C_NOPROBES) + skip = 0; + for (k = 0; k < sizeof(i2c_no_probes); k++){ + if (j == i2c_no_probes[k]){ + skip = 1; + break; + } + } + if (skip) + continue; +#endif + if(i2c_probe1(j) == 0) { + printf(" %02X", j); + } + } + putc ('\n'); + +#if defined(CFG_I2C_NOPROBES) + puts ("Excluded chip addresses:"); + for( k = 0; k < sizeof(i2c_no_probes); k++ ) + printf(" %02X", i2c_no_probes[k] ); + putc ('\n'); +#endif + + return 0; +} + +U_BOOT_CMD( + iprobe1, 1, 1, do_i2c1_probe, + "iprobe1 - probe to discover valid I2C chip addresses\n", + "\n -discover valid I2C chip addresses\n" +); + +#endif /* CONFIG_I2C_BUS1 */ diff --git a/board/sandburst/common/ppc440gx_i2c.h b/board/sandburst/common/ppc440gx_i2c.h new file mode 100644 index 0000000..cd4fc86 --- /dev/null +++ b/board/sandburst/common/ppc440gx_i2c.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2005 Sandburst Corporation + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +/* + * Ported from i2c driver for ppc4xx by AS HARNOIS by + * Travis B. Sawyer + * Sandburst Corporation + */ +#include <common.h> +#include <ppc4xx.h> +#if defined(CONFIG_440) +# include <440_i2c.h> +#else +# include <405gp_i2c.h> +#endif +#include <i2c.h> + +#ifdef CONFIG_HARD_I2C + +#define I2C_BUS1_BASE_ADDR (CFG_PERIPHERAL_BASE + 0x00000500) +#define I2C_REGISTERS_BUS1_BASE_ADDRESS I2C_BUS1_BASE_ADDR +#define IIC_MDBUF1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICMDBUF) +#define IIC_SDBUF1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICSDBUF) +#define IIC_LMADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICLMADR) +#define IIC_HMADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICHMADR) +#define IIC_CNTL1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICCNTL) +#define IIC_MDCNTL1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICMDCNTL) +#define IIC_STS1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICSTS) +#define IIC_EXTSTS1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICEXTSTS) +#define IIC_LSADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICLSADR) +#define IIC_HSADR1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICHSADR) +#define IIC_CLKDIV1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICCLKDIV) +#define IIC_INTRMSK1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICINTRMSK) +#define IIC_XFRCNT1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICXFRCNT) +#define IIC_XTCNTLSS1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICXTCNTLSS) +#define IIC_DIRECTCNTL1 (I2C_REGISTERS_BUS1_BASE_ADDRESS+IICDIRECTCNTL) + +void i2c1_init (int speed, int slaveadd); +int i2c_probe1 (uchar chip); +int i2c_read1 (uchar chip, uint addr, int alen, uchar * buffer, int len); +int i2c_write1 (uchar chip, uint addr, int alen, uchar * buffer, int len); +uchar i2c_reg_read1(uchar i2c_addr, uchar reg); +void i2c_reg_write1(uchar i2c_addr, uchar reg, uchar val); + +#endif /* CONFIG_HARD_I2C */ diff --git a/board/sandburst/common/sb_common.c b/board/sandburst/common/sb_common.c new file mode 100644 index 0000000..3530416 --- /dev/null +++ b/board/sandburst/common/sb_common.c @@ -0,0 +1,451 @@ +/* + * Copyright (C) 2005 Sandburst Corporation + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 <config.h> +#include <common.h> +#include <command.h> +#include <asm/processor.h> +#include <asm/io.h> +#include <spd_sdram.h> +#include <i2c.h> +#include "ppc440gx_i2c.h" +#include "sb_common.h" + +long int fixed_sdram (void); + +/************************************************************************* + * metrobox_get_master + * + * PRI_N - active low signal. If the GPIO pin is low we are the master + * + ************************************************************************/ +int sbcommon_get_master(void) +{ + ppc440_gpio_regs_t *gpio_regs; + + gpio_regs = (ppc440_gpio_regs_t *)CFG_GPIO_BASE; + + if (gpio_regs->in & SBCOMMON_GPIO_PRI_N) { + return 0; + } + else { + return 1; + } +} + +/************************************************************************* + * metrobox_secondary_present + * + * Figure out if secondary/slave board is present + * + ************************************************************************/ +int sbcommon_secondary_present(void) +{ + ppc440_gpio_regs_t *gpio_regs; + + gpio_regs = (ppc440_gpio_regs_t *)CFG_GPIO_BASE; + + if (gpio_regs->in & SBCOMMON_GPIO_SEC_PRES) + return 0; + else + return 1; +} + +/************************************************************************* + * sbcommon_get_serial_number + * + * Retrieve the board serial number via the mac address in eeprom + * + ************************************************************************/ +unsigned short sbcommon_get_serial_number(void) +{ + unsigned char buff[0x100]; + unsigned short sernum; + + /* Get the board serial number from eeprom */ + /* Initialize I2C */ + i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); + + /* Read 256 bytes in EEPROM */ + i2c_read (0x50, 0, 1, buff, 0x100); + + memcpy(&sernum, &buff[0xF4], 2); + sernum /= 32; + + return (sernum); +} + +/************************************************************************* + * sbcommon_fans + * + * Spin up fans 2 & 3 to get some air moving. OS will take care + * of the rest. This is mostly a precaution... + * + * Assumes i2c bus 1 is ready. + * + ************************************************************************/ +void sbcommon_fans(void) +{ + /* + * Attempt to turn on 2 of the fans... + * Need to go through the bridge + */ + puts ("FANS: "); + + /* select fan4 through the bridge */ + i2c_reg_write1(0x73, /* addr */ + 0x00, /* reg */ + 0x08); /* val = bus 4 */ + + /* Turn on FAN 4 */ + i2c_reg_write1(0x2e, + 1, + 0x80); + + i2c_reg_write1(0x2e, + 0, + 0x19); + + /* Deselect bus 4 on the bridge */ + i2c_reg_write1(0x73, + 0x00, + 0x00); + + /* select fan3 through the bridge */ + i2c_reg_write1(0x73, /* addr */ + 0x00, /* reg */ + 0x04); /* val = bus 3 */ + + /* Turn on FAN 3 */ + i2c_reg_write1(0x2e, + 1, + 0x80); + + i2c_reg_write1(0x2e, + 0, + 0x19); + + /* Deselect bus 3 on the bridge */ + i2c_reg_write1(0x73, + 0x00, + 0x00); + + /* select fan2 through the bridge */ + i2c_reg_write1(0x73, /* addr */ + 0x00, /* reg */ + 0x02); /* val = bus 4 */ + + /* Turn on FAN 2 */ + i2c_reg_write1(0x2e, + 1, + 0x80); + + i2c_reg_write1(0x2e, + 0, + 0x19); + + /* Deselect bus 2 on the bridge */ + i2c_reg_write1(0x73, + 0x00, + 0x00); + + /* select fan1 through the bridge */ + i2c_reg_write1(0x73, /* addr */ + 0x00, /* reg */ + 0x01); /* val = bus 0 */ + + /* Turn on FAN 1 */ + i2c_reg_write1(0x2e, + 1, + 0x80); + + i2c_reg_write1(0x2e, + 0, + 0x19); + + /* Deselect bus 1 on the bridge */ + i2c_reg_write1(0x73, + 0x00, + 0x00); + + puts ("on\n"); + + return; + +} + +/************************************************************************* + * initdram + * + * Initialize sdram + * + ************************************************************************/ +long int initdram (int board_type) +{ + long dram_size = 0; + +#if defined(CONFIG_SPD_EEPROM) + dram_size = spd_sdram (0); +#else + dram_size = fixed_sdram (); +#endif + return dram_size; +} + + +/************************************************************************* + * testdram + * + * + ************************************************************************/ +#if defined(CFG_DRAM_TEST) +int testdram (void) +{ + uint *pstart = (uint *) CFG_MEMTEST_START; + uint *pend = (uint *) CFG_MEMTEST_END; + uint *p; + + printf("Testing SDRAM: "); + for (p = pstart; p < pend; p++) + *p = 0xaaaaaaaa; + + for (p = pstart; p < pend; p++) { + if (*p != 0xaaaaaaaa) { + printf ("SDRAM test fails at: %08x\n", (uint) p); + return 1; + } + } + + for (p = pstart; p < pend; p++) + *p = 0x55555555; + + for (p = pstart; p < pend; p++) { + if (*p != 0x55555555) { + printf ("SDRAM test fails at: %08x\n", (uint) p); + return 1; + } + } + + printf("OK\n"); + return 0; +} +#endif + +#if !defined(CONFIG_SPD_EEPROM) +/************************************************************************* + * fixed sdram init -- doesn't use serial presence detect. + * + * Assumes: 128 MB, non-ECC, non-registered + * PLB @ 133 MHz + * + ************************************************************************/ +long int fixed_sdram (void) +{ + uint reg; + + /*-------------------------------------------------------------------- + * Setup some default + *------------------------------------------------------------------*/ + mtsdram (mem_uabba, 0x00000000); /* ubba=0 (default) */ + mtsdram (mem_slio, 0x00000000); /* rdre=0 wrre=0 rarw=0 */ + mtsdram (mem_devopt, 0x00000000); /* dll=0 ds=0 (normal) */ + mtsdram (mem_wddctr, 0x00000000); /* wrcp=0 dcd=0 */ + mtsdram (mem_clktr, 0x40000000); /* clkp=1 (90 deg wr) dcdt=0 */ + + /*-------------------------------------------------------------------- + * Setup for board-specific specific mem + *------------------------------------------------------------------*/ + /* + * Following for CAS Latency = 2.5 @ 133 MHz PLB + */ + mtsdram (mem_b0cr, 0x000a4001); /* SDBA=0x000 128MB, Mode 3, enabled */ + mtsdram (mem_tr0, 0x410a4012); /* WR=2 WD=1 CL=2.5 PA=3 CP=4 LD=2 */ + /* RA=10 RD=3 */ + mtsdram (mem_tr1, 0x8080082f); /* SS=T2 SL=STAGE 3 CD=1 CT=0x02f */ + mtsdram (mem_rtr, 0x08200000); /* Rate 15.625 ns @ 133 MHz PLB */ + mtsdram (mem_cfg1, 0x00000000); /* Self-refresh exit, disable PM */ + udelay (400); /* Delay 200 usecs (min) */ + + /*-------------------------------------------------------------------- + * Enable the controller, then wait for DCEN to complete + *------------------------------------------------------------------*/ + mtsdram (mem_cfg0, 0x86000000); /* DCEN=1, PMUD=1, 64-bit */ + for (;;) { + mfsdram (mem_mcsts, reg); + if (reg & 0x80000000) + break; + } + + return (128 * 1024 * 1024); /* 128 MB */ +} +#endif /* !defined(CONFIG_SPD_EEPROM) */ + + +/************************************************************************* + * pci_pre_init + * + * This routine is called just prior to registering the hose and gives + * the board the opportunity to check things. Returning a value of zero + * indicates that things are bad & PCI initialization should be aborted. + * + * Different boards may wish to customize the pci controller structure + * (add regions, override default access routines, etc) or perform + * certain pre-initialization actions. + * + ************************************************************************/ +#if defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) +int pci_pre_init(struct pci_controller * hose ) +{ + unsigned long strap; + + /*--------------------------------------------------------------------------+ + * The metrobox is always configured as the host & requires the + * PCI arbiter to be enabled. + *--------------------------------------------------------------------------*/ + mfsdr(sdr_sdstp1, strap); + if( (strap & SDR0_SDSTP1_PAE_MASK) == 0 ){ + printf("PCI: SDR0_STRP1[%08lX] - PCI Arbiter disabled.\n",strap); + return 0; + } + + return 1; +} +#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_PRE_INIT) */ + +/************************************************************************* + * pci_target_init + * + * The bootstrap configuration provides default settings for the pci + * inbound map (PIM). But the bootstrap config choices are limited and + * may not be sufficient for a given board. + * + ************************************************************************/ +#if defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) +void pci_target_init(struct pci_controller * hose ) +{ + DECLARE_GLOBAL_DATA_PTR; + + /*--------------------------------------------------------------------------+ + * Disable everything + *--------------------------------------------------------------------------*/ + out32r( PCIX0_PIM0SA, 0 ); /* disable */ + out32r( PCIX0_PIM1SA, 0 ); /* disable */ + out32r( PCIX0_PIM2SA, 0 ); /* disable */ + out32r( PCIX0_EROMBA, 0 ); /* disable expansion rom */ + + /*--------------------------------------------------------------------------+ + * Map all of SDRAM to PCI address 0x0000_0000. Note that the 440 strapping + * options to not support sizes such as 128/256 MB. + *--------------------------------------------------------------------------*/ + out32r( PCIX0_PIM0LAL, CFG_SDRAM_BASE ); + out32r( PCIX0_PIM0LAH, 0 ); + out32r( PCIX0_PIM0SA, ~(gd->ram_size - 1) | 1 ); + + out32r( PCIX0_BAR0, 0 ); + + /*--------------------------------------------------------------------------+ + * Program the board's subsystem id/vendor id + *--------------------------------------------------------------------------*/ + out16r( PCIX0_SBSYSVID, CFG_PCI_SUBSYS_VENDORID ); + out16r( PCIX0_SBSYSID, CFG_PCI_SUBSYS_DEVICEID ); + + out16r( PCIX0_CMD, in16r(PCIX0_CMD) | PCI_COMMAND_MEMORY ); +} +#endif /* defined(CONFIG_PCI) && defined(CFG_PCI_TARGET_INIT) */ + + +/************************************************************************* + * is_pci_host + * + * + ************************************************************************/ +#if defined(CONFIG_PCI) +int is_pci_host(struct pci_controller *hose) +{ + /* The metrobox is always configured as host. */ + return(1); +} +#endif /* defined(CONFIG_PCI) */ + +/************************************************************************* + * board_get_enetaddr + * + * Get the ethernet MAC address for the management ethernet from the + * strap EEPROM. Note that is the BASE address for the range of + * external ethernet MACs on the board. The base + 31 is the actual + * mgmt mac address. + * + ************************************************************************/ +static int macaddr_idx = 0; + +void board_get_enetaddr (uchar * enet) +{ + int i; + unsigned short tmp; + unsigned char buff[0x100], *cp; + + if (0 == macaddr_idx) { + + /* Initialize I2C */ + i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); + + /* Read 256 bytes in EEPROM */ + i2c_read (0x50, 0, 1, buff, 0x100); + + cp = &buff[0xF0]; + + for (i = 0; i < 6; i++,cp++) + enet[i] = *cp; + + memcpy(&tmp, &enet[4], 2); + tmp += 31; + memcpy(&enet[4], &tmp, 2); + + macaddr_idx++; + } else { + enet[0] = 0x02; + enet[1] = 0x00; + enet[2] = 0x00; + enet[3] = 0x00; + enet[4] = 0x00; + if (1 == sbcommon_get_master() ) { + /* Master/Primary card */ + enet[5] = 0x01; + } else { + /* Slave/Secondary card */ + enet [5] = 0x02; + } + } + + return; +} + +#ifdef CONFIG_POST +/* + * Returns 1 if keys pressed to start the power-on long-running tests + * Called from board_init_f(). + */ +int post_hotkeys_pressed(void) +{ + + return (ctrlc()); +} +#endif diff --git a/board/sandburst/common/sb_common.h b/board/sandburst/common/sb_common.h new file mode 100644 index 0000000..888e4f0 --- /dev/null +++ b/board/sandburst/common/sb_common.h @@ -0,0 +1,76 @@ +#ifndef __SBCOMMON_H__ +#define __SBCOMMON_H__ +/* + * Copyright (C) 2005 Sandburst Corporation + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 <config.h> +#include <common.h> +#include <command.h> +#include <asm/processor.h> +#include <asm/io.h> +#include <spd_sdram.h> +#include <i2c.h> +#include "ppc440gx_i2c.h" + +/* + * GPIO Settings + */ +/* Chassis settings */ +#define SBCOMMON_GPIO_PRI_N 0x00001000 /* 0 = Chassis Master, 1 = Slave */ +#define SBCOMMON_GPIO_SEC_PRES 0x00000800 /* 1 = Other board present */ + +/* Debug LEDs */ +#define SBCOMMON_GPIO_DBGLED_0 0x00000400 +#define SBCOMMON_GPIO_DBGLED_1 0x00000200 +#define SBCOMMON_GPIO_DBGLED_2 0x00100000 +#define SBCOMMON_GPIO_DBGLED_3 0x00000100 + +#define SBCOMMON_GPIO_DBGLEDS (SBCOMMON_GPIO_DBGLED_0 | \ + SBCOMMON_GPIO_DBGLED_1 | \ + SBCOMMON_GPIO_DBGLED_2 | \ + SBCOMMON_GPIO_DBGLED_3) + +#define SBCOMMON_GPIO_SYS_FAULT 0x00000080 +#define SBCOMMON_GPIO_SYS_OTEMP 0x00000040 +#define SBCOMMON_GPIO_SYS_STATUS 0x00000020 + +#define SBCOMMON_GPIO_SYS_LEDS (SBCOMMON_GPIO_SYS_STATUS) + +#define SBCOMMON_GPIO_LEDS (SBCOMMON_GPIO_DBGLED_0 | \ + SBCOMMON_GPIO_DBGLED_1 | \ + SBCOMMON_GPIO_DBGLED_2 | \ + SBCOMMON_GPIO_DBGLED_3 | \ + SBCOMMON_GPIO_SYS_STATUS) + +typedef struct ppc440_gpio_regs { + volatile unsigned long out; + volatile unsigned long tri_state; + volatile unsigned long dummy[4]; + volatile unsigned long open_drain; + volatile unsigned long in; +} __attribute__((packed)) ppc440_gpio_regs_t; + +int sbcommon_get_master(void); +int sbcommon_secondary_present(void); +unsigned short sbcommon_get_serial_number(void); +void sbcommon_fans(void); + +#endif /* __SBCOMMON_H__ */ diff --git a/board/sandburst/karef/Makefile b/board/sandburst/karef/Makefile new file mode 100644 index 0000000..8b3173c --- /dev/null +++ b/board/sandburst/karef/Makefile @@ -0,0 +1,59 @@ +# +# (C) Copyright 2005 +# Sandburst Corporation +# Travis B. Sawyer +# +# See file CREDITS for list of people who contributed to this +# project. +# +# 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 $(TOPDIR)/config.mk + +# TBS: add for debugging purposes +BUILDUSER := $(shell whoami) +FORCEBUILD := $(shell rm -f $(LIB) $(BOARD).o) + +CFLAGS += -DBUILDUSER='"$(BUILDUSER)"' +# TBS: end debugging + + +LIB = lib$(BOARD).a + +OBJS = $(BOARD).o ../common/flash.o ../common/ppc440gx_i2c.o \ + ../common/sb_common.o + +SOBJS = init.o + + +$(LIB): $(OBJS) $(SOBJS) + $(AR) crv $@ $(OBJS) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak .depend *~ + +######################################################################### + +.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) + $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff --git a/board/sandburst/karef/config.mk b/board/sandburst/karef/config.mk new file mode 100644 index 0000000..65c1e48 --- /dev/null +++ b/board/sandburst/karef/config.mk @@ -0,0 +1,43 @@ +# +# (C) Copyright 2005 +# Sandburst Corporation +# +# See file CREDITS for list of people who contributed to this +# project. +# +# 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 +# + +# +# Sandburst Corporation Metrobox Reference Design +# Travis B. Sawyer +# + +ifeq ($(ramsym),1) +TEXT_BASE = 0x07FD0000 +else +TEXT_BASE = 0xFFF80000 +endif + +PLATFORM_CPPFLAGS += -DCONFIG_440=1 + +ifeq ($(debug),1) +PLATFORM_CPPFLAGS += -DDEBUG +endif + +ifeq ($(dbcr),1) +PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000 +endif diff --git a/board/sandburst/karef/hal_ka_of_auto.h b/board/sandburst/karef/hal_ka_of_auto.h new file mode 100644 index 0000000..cc501c9 --- /dev/null +++ b/board/sandburst/karef/hal_ka_of_auto.h @@ -0,0 +1,324 @@ +/* **************************************************************** + * Common defs for reg spec for chip ka_of + * Auto-generated by trex2: DO NOT HAND-EDIT!! + * **************************************************************** + */ + +#ifndef HAL_KA_OF_AUTO_H +#define HAL_KA_OF_AUTO_H + + +/* ---------------------------------------------------------------- + * For block: 'ofem' + */ + +/* ---- Block instance addressing (for block-select) */ +#define OFEM_BLOCK_ADDR_BIT_L 6 +#define OFEM_BLOCK_ADDR_BIT_H 9 +#define OFEM_BLOCK_ADDR_WIDTH 4 + +#define OFEM_ADDR 0x0 + +/* ---- Reg addressing (within block) */ +#define OFEM_REG_ADDR_BIT_L 2 +#define OFEM_REG_ADDR_BIT_H 5 +#define OFEM_REG_ADDR_WIDTH 4 + + +/* ================================================================ + * ---- Register KA_OF_OFEM_REVISION */ +#define SAND_HAL_KA_OF_OFEM_REVISION_OFFSET 0x000 +#ifndef SAND_HAL_KA_OF_OFEM_REVISION_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_REVISION_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_REVISION_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_REVISION_MSB 31 +#define SAND_HAL_KA_OF_OFEM_REVISION_LSB 0 + +/* ================================================================ + * ---- Register KA_OF_OFEM_RESET */ +#define SAND_HAL_KA_OF_OFEM_RESET_OFFSET 0x004 +#ifndef SAND_HAL_KA_OF_OFEM_RESET_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_RESET_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_RESET_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_RESET_MSB 31 +#define SAND_HAL_KA_OF_OFEM_RESET_LSB 0 + +/* ================================================================ + * ---- Register KA_OF_OFEM_CNTL */ +#define SAND_HAL_KA_OF_OFEM_CNTL_OFFSET 0x018 +#ifndef SAND_HAL_KA_OF_OFEM_CNTL_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_CNTL_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_CNTL_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_CNTL_MSB 31 +#define SAND_HAL_KA_OF_OFEM_CNTL_LSB 0 + +/* ================================================================ + * ---- Register KA_OF_OFEM_MAC_FLOW_CTL */ +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_OFFSET 0x01c +#ifndef SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MSB 31 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_LSB 0 + +/* ================================================================ + * ---- Register KA_OF_OFEM_INTERRUPT */ +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_OFFSET 0x008 +#ifndef SAND_HAL_KA_OF_OFEM_INTERRUPT_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MSB 31 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_LSB 0 + +/* ================================================================ + * ---- Register KA_OF_OFEM_INTERRUPT_MASK */ +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_OFFSET 0x00c +#ifndef SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MSB 31 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_LSB 0 + +/* ================================================================ + * ---- Register KA_OF_OFEM_SCRATCH */ +#define SAND_HAL_KA_OF_OFEM_SCRATCH_OFFSET 0x010 +#ifndef SAND_HAL_KA_OF_OFEM_SCRATCH_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_SCRATCH_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MSB 31 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_LSB 0 + +/* ================================================================ + * ---- Register KA_OF_OFEM_SCRATCH_MASK */ +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_OFFSET 0x014 +#ifndef SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_NO_TEST_MASK +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_MSB 31 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_LSB 0 + +/* ================================================================ + * Field info for register KA_OF_OFEM_REVISION */ +#define SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_MASK 0x0000ff00 +#define SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_SHIFT 8 +#define SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_MSB 15 +#define SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_LSB 8 +#define SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_DEFAULT 0x00000024 +#define SAND_HAL_KA_OF_OFEM_REVISION_REVISION_MASK 0x000000ff +#define SAND_HAL_KA_OF_OFEM_REVISION_REVISION_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_REVISION_REVISION_MSB 7 +#define SAND_HAL_KA_OF_OFEM_REVISION_REVISION_LSB 0 +#define SAND_HAL_KA_OF_OFEM_REVISION_REVISION_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_REVISION_REVISION_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_OF_OFEM_RESET */ +#define SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_MASK 0x00000004 +#define SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_SHIFT 2 +#define SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_MSB 2 +#define SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_LSB 2 +#define SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_MASK 0x00000002 +#define SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_SHIFT 1 +#define SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_MSB 1 +#define SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_LSB 1 +#define SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_MASK 0x00000001 +#define SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_MSB 0 +#define SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_LSB 0 +#define SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_OF_OFEM_CNTL */ +#define SAND_HAL_KA_OF_OFEM_CNTL_TEMP_LED_MASK 0x000000c0 +#define SAND_HAL_KA_OF_OFEM_CNTL_TEMP_LED_SHIFT 6 +#define SAND_HAL_KA_OF_OFEM_CNTL_TEMP_LED_MSB 7 +#define SAND_HAL_KA_OF_OFEM_CNTL_TEMP_LED_LSB 6 +#define SAND_HAL_KA_OF_OFEM_CNTL_TEMP_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_CNTL_TEMP_LED_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_MASK 0x00000030 +#define SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_SHIFT 4 +#define SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_MSB 5 +#define SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_LSB 4 +#define SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_R_LED_MASK 0x0000000c +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_R_LED_SHIFT 2 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_R_LED_MSB 3 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_R_LED_LSB 2 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_R_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_R_LED_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_L_LED_MASK 0x00000003 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_L_LED_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_L_LED_MSB 1 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_L_LED_LSB 0 +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_L_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_CNTL_RS232_L_LED_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_OF_OFEM_MAC_FLOW_CTL */ +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_LOCH_APS_SEL_MASK 0x00000100 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_LOCH_APS_SEL_SHIFT 8 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_LOCH_APS_SEL_MSB 8 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_LOCH_APS_SEL_LSB 8 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_LOCH_APS_SEL_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_LOCH_APS_SEL_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_FR_MASK 0x00000010 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_FR_SHIFT 4 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_FR_MSB 4 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_FR_LSB 4 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_FR_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_FR_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_MASK 0x0000000f +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_MSB 3 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_LSB 0 +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_OF_OFEM_INTERRUPT */ +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC_TIMEOUT_MASK 0x00000100 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC_TIMEOUT_SHIFT 8 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC_TIMEOUT_MSB 8 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC_TIMEOUT_LSB 8 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC_TIMEOUT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC_TIMEOUT_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_A_LOSOUT_N_MASK 0x00000080 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_A_LOSOUT_N_SHIFT 7 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_A_LOSOUT_N_MSB 7 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_A_LOSOUT_N_LSB 7 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_A_LOSOUT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_A_LOSOUT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_B_LOSOUT_N_MASK 0x00000040 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_B_LOSOUT_N_SHIFT 6 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_B_LOSOUT_N_MSB 6 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_B_LOSOUT_N_LSB 6 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_B_LOSOUT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_QK_B_LOSOUT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_NR_MASK 0x00000020 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_NR_SHIFT 5 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_NR_MSB 5 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_NR_LSB 5 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_NR_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_NR_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_NR_MASK 0x00000010 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_NR_SHIFT 4 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_NR_MSB 4 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_NR_LSB 4 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_NR_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_NR_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_INT_N_MASK 0x00000008 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_INT_N_SHIFT 3 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_INT_N_MSB 3 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_INT_N_LSB 3 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_A_INT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_INT_N_MASK 0x00000004 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_INT_N_SHIFT 2 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_INT_N_MSB 2 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_INT_N_LSB 2 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_XFP_B_INT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC1_INT_N_MASK 0x00000002 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC1_INT_N_SHIFT 1 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC1_INT_N_MSB 1 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC1_INT_N_LSB 1 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC1_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC1_INT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC0_INT_N_MASK 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC0_INT_N_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC0_INT_N_MSB 0 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC0_INT_N_LSB 0 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC0_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MAC0_INT_N_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_OF_OFEM_INTERRUPT_MASK */ +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_MASK 0x00000100 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_SHIFT 8 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_MSB 8 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_LSB 8 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_MASK 0x00000080 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_SHIFT 7 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_MSB 7 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_LSB 7 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_MASK 0x00000040 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_SHIFT 6 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_MSB 6 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_LSB 6 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_NR_DISINT_MASK 0x00000020 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_NR_DISINT_SHIFT 5 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_NR_DISINT_MSB 5 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_NR_DISINT_LSB 5 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_NR_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_NR_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_NR_DISINT_MASK 0x00000010 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_NR_DISINT_SHIFT 4 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_NR_DISINT_MSB 4 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_NR_DISINT_LSB 4 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_NR_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_NR_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_INT_N_DISINT_MASK 0x00000008 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_INT_N_DISINT_SHIFT 3 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_INT_N_DISINT_MSB 3 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_INT_N_DISINT_LSB 3 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_A_INT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_INT_N_DISINT_MASK 0x00000004 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_INT_N_DISINT_SHIFT 2 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_INT_N_DISINT_MSB 2 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_INT_N_DISINT_LSB 2 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_XFP_B_INT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC1_INT_N_DISINT_MASK 0x00000002 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC1_INT_N_DISINT_SHIFT 1 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC1_INT_N_DISINT_MSB 1 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC1_INT_N_DISINT_LSB 1 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC1_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC1_INT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC0_INT_N_DISINT_MASK 0x00000001 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC0_INT_N_DISINT_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC0_INT_N_DISINT_MSB 0 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC0_INT_N_DISINT_LSB 0 +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC0_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_INTERRUPT_MASK_MAC0_INT_N_DISINT_DEFAULT 0x00000001 + +/* ================================================================ + * Field info for register KA_OF_OFEM_SCRATCH */ +#define SAND_HAL_KA_OF_OFEM_SCRATCH_TEST_BITS_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_SCRATCH_TEST_BITS_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_TEST_BITS_MSB 31 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_TEST_BITS_LSB 0 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_TEST_BITS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_SCRATCH_TEST_BITS_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_OF_OFEM_SCRATCH_MASK */ +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_TEST_BITS_DISINT_MASK 0xffffffff +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_TEST_BITS_DISINT_SHIFT 0 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_TEST_BITS_DISINT_MSB 31 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_TEST_BITS_DISINT_LSB 0 +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_TEST_BITS_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_OF_OFEM_SCRATCH_MASK_TEST_BITS_DISINT_DEFAULT 0xffffffff + +#endif /* matches #ifndef HAL_KA_OF_AUTO_H */ diff --git a/board/sandburst/karef/hal_ka_sc_auto.h b/board/sandburst/karef/hal_ka_sc_auto.h new file mode 100644 index 0000000..db1cec2 --- /dev/null +++ b/board/sandburst/karef/hal_ka_sc_auto.h @@ -0,0 +1,836 @@ +/* **************************************************************** + * Common defs for reg spec for chip ka_sc + * Auto-generated by trex2: DO NOT HAND-EDIT!! + * **************************************************************** + */ + +#ifndef HAL_KA_SC_AUTO_H +#define HAL_KA_SC_AUTO_H + + +/* ---------------------------------------------------------------- + * For block: 'scan' + */ + +/* ---- Block instance addressing (for block-select) */ +#define SCAN_BLOCK_ADDR_BIT_L 7 +#define SCAN_BLOCK_ADDR_BIT_H 9 +#define SCAN_BLOCK_ADDR_WIDTH 3 + +#define SCAN_ADDR 0x0 + +/* ---- Reg addressing (within block) */ +#define SCAN_REG_ADDR_BIT_L 2 +#define SCAN_REG_ADDR_BIT_H 6 +#define SCAN_REG_ADDR_WIDTH 5 + + +/* ================================================================ + * ---- Register KA_SC_SCAN_REVISION */ +#define SAND_HAL_KA_SC_SCAN_REVISION_OFFSET 0x000 +#ifndef SAND_HAL_KA_SC_SCAN_REVISION_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_REVISION_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_REVISION_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_REVISION_MSB 31 +#define SAND_HAL_KA_SC_SCAN_REVISION_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_RESET */ +#define SAND_HAL_KA_SC_SCAN_RESET_OFFSET 0x004 +#ifndef SAND_HAL_KA_SC_SCAN_RESET_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_RESET_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_RESET_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_RESET_MSB 31 +#define SAND_HAL_KA_SC_SCAN_RESET_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_STATUS */ +#define SAND_HAL_KA_SC_SCAN_STATUS_OFFSET 0x008 +#ifndef SAND_HAL_KA_SC_SCAN_STATUS_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_STATUS_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_STATUS_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_STATUS_MSB 31 +#define SAND_HAL_KA_SC_SCAN_STATUS_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_CNTL */ +#define SAND_HAL_KA_SC_SCAN_CNTL_OFFSET 0x01c +#ifndef SAND_HAL_KA_SC_SCAN_CNTL_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_CNTL_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_CNTL_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_CNTL_MSB 31 +#define SAND_HAL_KA_SC_SCAN_CNTL_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_BRD_INFO */ +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_OFFSET 0x020 +#ifndef SAND_HAL_KA_SC_SCAN_BRD_INFO_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_MSB 31 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SCAN_FROM_0 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_OFFSET 0x024 +#ifndef SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SCAN_FROM_1 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_OFFSET 0x028 +#ifndef SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SCAN_TO_0 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_OFFSET 0x02c +#ifndef SAND_HAL_KA_SC_SCAN_SCAN_TO_0_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SCAN_TO_1 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_OFFSET 0x030 +#ifndef SAND_HAL_KA_SC_SCAN_SCAN_TO_1_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SCAN_CTRL */ +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_OFFSET 0x034 +#ifndef SAND_HAL_KA_SC_SCAN_SCAN_CTRL_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_PLL_CTRL */ +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_OFFSET 0x038 +#ifndef SAND_HAL_KA_SC_SCAN_PLL_CTRL_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_MSB 31 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_CORE_CLK_COUNT */ +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_OFFSET 0x03c +#ifndef SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_MSB 31 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_DR_CLK_COUNT */ +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_OFFSET 0x040 +#ifndef SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_MSB 31 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SPI_CLK_COUNT */ +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_OFFSET 0x044 +#ifndef SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_BRD_BRD_OUT_DATA */ +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_OFFSET 0x048 +#ifndef SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_MSB 31 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_BRD_BRD_OUT_ENABLE */ +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_OFFSET 0x04c +#ifndef SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_MSB 31 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_BRD_BRD_IN */ +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_OFFSET 0x050 +#ifndef SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_MSB 31 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_MISC */ +#define SAND_HAL_KA_SC_SCAN_MISC_OFFSET 0x054 +#ifndef SAND_HAL_KA_SC_SCAN_MISC_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_MISC_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_MISC_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_MISC_MSB 31 +#define SAND_HAL_KA_SC_SCAN_MISC_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_INTERRUPT */ +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OFFSET 0x00c +#ifndef SAND_HAL_KA_SC_SCAN_INTERRUPT_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MSB 31 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_INTERRUPT_MASK */ +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OFFSET 0x010 +#ifndef SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_MSB 31 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SCRATCH */ +#define SAND_HAL_KA_SC_SCAN_SCRATCH_OFFSET 0x014 +#ifndef SAND_HAL_KA_SC_SCAN_SCRATCH_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SCRATCH_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_LSB 0 + +/* ================================================================ + * ---- Register KA_SC_SCAN_SCRATCH_MASK */ +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_OFFSET 0x018 +#ifndef SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_NO_TEST_MASK +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_LSB 0 + +/* ================================================================ + * Field info for register KA_SC_SCAN_REVISION */ +#define SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_MASK 0x0000ff00 +#define SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_SHIFT 8 +#define SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_MSB 15 +#define SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_LSB 8 +#define SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_DEFAULT 0x00000023 +#define SAND_HAL_KA_SC_SCAN_REVISION_REVISION_MASK 0x000000ff +#define SAND_HAL_KA_SC_SCAN_REVISION_REVISION_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_REVISION_REVISION_MSB 7 +#define SAND_HAL_KA_SC_SCAN_REVISION_REVISION_LSB 0 +#define SAND_HAL_KA_SC_SCAN_REVISION_REVISION_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_REVISION_REVISION_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_RESET */ +#define SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MASK 0x00000200 +#define SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_SHIFT 9 +#define SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MSB 9 +#define SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_LSB 9 +#define SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_MASK 0x00000100 +#define SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_SHIFT 8 +#define SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_MSB 8 +#define SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_LSB 8 +#define SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_MASK 0x00000080 +#define SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_SHIFT 7 +#define SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_MSB 7 +#define SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_LSB 7 +#define SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_MASK 0x00000040 +#define SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_SHIFT 6 +#define SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_MSB 6 +#define SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_LSB 6 +#define SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_MASK 0x00000020 +#define SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_SHIFT 5 +#define SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_MSB 5 +#define SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_LSB 5 +#define SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_MASK 0x00000010 +#define SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_SHIFT 4 +#define SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_MSB 4 +#define SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_LSB 4 +#define SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_MASK 0x00000008 +#define SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_SHIFT 3 +#define SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_MSB 3 +#define SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_LSB 3 +#define SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_MASK 0x00000002 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_SHIFT 1 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_MSB 1 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_LSB 1 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_MASK 0x00000001 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_MSB 0 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_LSB 0 +#define SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_STATUS */ +#define SAND_HAL_KA_SC_SCAN_STATUS_SPI_LOCK_MASK 0x00000040 +#define SAND_HAL_KA_SC_SCAN_STATUS_SPI_LOCK_SHIFT 6 +#define SAND_HAL_KA_SC_SCAN_STATUS_SPI_LOCK_MSB 6 +#define SAND_HAL_KA_SC_SCAN_STATUS_SPI_LOCK_LSB 6 +#define SAND_HAL_KA_SC_SCAN_STATUS_SPI_LOCK_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_STATUS_SPI_LOCK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_STATUS_DR_LOCK_MASK 0x00000020 +#define SAND_HAL_KA_SC_SCAN_STATUS_DR_LOCK_SHIFT 5 +#define SAND_HAL_KA_SC_SCAN_STATUS_DR_LOCK_MSB 5 +#define SAND_HAL_KA_SC_SCAN_STATUS_DR_LOCK_LSB 5 +#define SAND_HAL_KA_SC_SCAN_STATUS_DR_LOCK_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_STATUS_DR_LOCK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_STATUS_CORE_LOCK_MASK 0x00000010 +#define SAND_HAL_KA_SC_SCAN_STATUS_CORE_LOCK_SHIFT 4 +#define SAND_HAL_KA_SC_SCAN_STATUS_CORE_LOCK_MSB 4 +#define SAND_HAL_KA_SC_SCAN_STATUS_CORE_LOCK_LSB 4 +#define SAND_HAL_KA_SC_SCAN_STATUS_CORE_LOCK_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_STATUS_CORE_LOCK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_STATUS_OFEM_DONE_MASK 0x00000008 +#define SAND_HAL_KA_SC_SCAN_STATUS_OFEM_DONE_SHIFT 3 +#define SAND_HAL_KA_SC_SCAN_STATUS_OFEM_DONE_MSB 3 +#define SAND_HAL_KA_SC_SCAN_STATUS_OFEM_DONE_LSB 3 +#define SAND_HAL_KA_SC_SCAN_STATUS_OFEM_DONE_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_STATUS_OFEM_DONE_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_A_PRES_N_MASK 0x00000004 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_A_PRES_N_SHIFT 2 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_A_PRES_N_MSB 2 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_A_PRES_N_LSB 2 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_A_PRES_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_A_PRES_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_B_PRES_N_MASK 0x00000002 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_B_PRES_N_SHIFT 1 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_B_PRES_N_MSB 1 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_B_PRES_N_LSB 1 +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_B_PRES_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_STATUS_PS_B_PRES_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_STATUS_ALL_GOOD_MASK 0x00000001 +#define SAND_HAL_KA_SC_SCAN_STATUS_ALL_GOOD_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_STATUS_ALL_GOOD_MSB 0 +#define SAND_HAL_KA_SC_SCAN_STATUS_ALL_GOOD_LSB 0 +#define SAND_HAL_KA_SC_SCAN_STATUS_ALL_GOOD_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_STATUS_ALL_GOOD_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_CNTL */ +#define SAND_HAL_KA_SC_SCAN_CNTL_SW_PWR_DOWN_MASK 0x00000400 +#define SAND_HAL_KA_SC_SCAN_CNTL_SW_PWR_DOWN_SHIFT 10 +#define SAND_HAL_KA_SC_SCAN_CNTL_SW_PWR_DOWN_MSB 10 +#define SAND_HAL_KA_SC_SCAN_CNTL_SW_PWR_DOWN_LSB 10 +#define SAND_HAL_KA_SC_SCAN_CNTL_SW_PWR_DOWN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CNTL_SW_PWR_DOWN_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_CNTL_CORE_CLK_50_EN_MASK 0x00000200 +#define SAND_HAL_KA_SC_SCAN_CNTL_CORE_CLK_50_EN_SHIFT 9 +#define SAND_HAL_KA_SC_SCAN_CNTL_CORE_CLK_50_EN_MSB 9 +#define SAND_HAL_KA_SC_SCAN_CNTL_CORE_CLK_50_EN_LSB 9 +#define SAND_HAL_KA_SC_SCAN_CNTL_CORE_CLK_50_EN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CNTL_CORE_CLK_50_EN_DEFAULT 0x00000001 +#define SAND_HAL_KA_SC_SCAN_CNTL_PCI_CLK_EN_MASK 0x00000100 +#define SAND_HAL_KA_SC_SCAN_CNTL_PCI_CLK_EN_SHIFT 8 +#define SAND_HAL_KA_SC_SCAN_CNTL_PCI_CLK_EN_MSB 8 +#define SAND_HAL_KA_SC_SCAN_CNTL_PCI_CLK_EN_LSB 8 +#define SAND_HAL_KA_SC_SCAN_CNTL_PCI_CLK_EN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CNTL_PCI_CLK_EN_DEFAULT 0x00000001 +#define SAND_HAL_KA_SC_SCAN_CNTL_TEMP_LED_MASK 0x000000c0 +#define SAND_HAL_KA_SC_SCAN_CNTL_TEMP_LED_SHIFT 6 +#define SAND_HAL_KA_SC_SCAN_CNTL_TEMP_LED_MSB 7 +#define SAND_HAL_KA_SC_SCAN_CNTL_TEMP_LED_LSB 6 +#define SAND_HAL_KA_SC_SCAN_CNTL_TEMP_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CNTL_TEMP_LED_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_MASK 0x00000030 +#define SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_SHIFT 4 +#define SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_MSB 5 +#define SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_LSB 4 +#define SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_R_LED_MASK 0x0000000c +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_R_LED_SHIFT 2 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_R_LED_MSB 3 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_R_LED_LSB 2 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_R_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_R_LED_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_L_LED_MASK 0x00000003 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_L_LED_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_L_LED_MSB 1 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_L_LED_LSB 0 +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_L_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CNTL_RS232_L_LED_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_BRD_INFO */ +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_MASK 0x0000f000 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_SHIFT 12 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_MSB 15 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_LSB 12 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_MASK 0x00000300 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_SHIFT 8 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_MSB 9 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_LSB 8 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_MASK 0x000000f0 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_SHIFT 4 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_MSB 7 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_LSB 4 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_MASK 0x00000003 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_MSB 1 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_LSB 0 +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SCAN_FROM_0 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_SCAN_OUT_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_SCAN_OUT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_SCAN_OUT_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_SCAN_OUT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_SCAN_OUT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_0_SCAN_OUT_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SCAN_FROM_1 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_SCAN_OUT_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_SCAN_OUT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_SCAN_OUT_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_SCAN_OUT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_SCAN_OUT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_SCAN_FROM_1_SCAN_OUT_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SCAN_TO_0 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_SCAN_IN_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_SCAN_IN_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_SCAN_IN_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_SCAN_IN_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_SCAN_IN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_0_SCAN_IN_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SCAN_TO_1 */ +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_SCAN_IN_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_SCAN_IN_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_SCAN_IN_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_SCAN_IN_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_SCAN_IN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_TO_1_SCAN_IN_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SCAN_CTRL */ +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCI_SEL_BM_MASK 0x04000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCI_SEL_BM_SHIFT 26 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCI_SEL_BM_MSB 26 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCI_SEL_BM_LSB 26 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCI_SEL_BM_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCI_SEL_BM_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_TEST_MODE_MASK 0x03000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_TEST_MODE_SHIFT 24 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_TEST_MODE_MSB 25 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_TEST_MODE_LSB 24 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_TEST_MODE_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_TEST_MODE_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_TEST_EN_MASK 0x00100000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_TEST_EN_SHIFT 20 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_TEST_EN_MSB 20 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_TEST_EN_LSB 20 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_TEST_EN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_TEST_EN_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PO_MASK 0x00080000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PO_SHIFT 19 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PO_MSB 19 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PO_LSB 19 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PO_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PO_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PI_MASK 0x00040000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PI_SHIFT 18 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PI_MSB 18 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PI_LSB 18 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PI_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_PI_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_CLK_MASK 0x00020000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_CLK_SHIFT 17 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_CLK_MSB 17 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_CLK_LSB 17 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_CLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_CLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_MASK 0x00010000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_SHIFT 16 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_MSB 16 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_LSB 16 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_KA_SCAN_EN_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_ENABLE_DRIVERS_MASK 0x00001000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_ENABLE_DRIVERS_SHIFT 12 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_ENABLE_DRIVERS_MSB 12 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_ENABLE_DRIVERS_LSB 12 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_ENABLE_DRIVERS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_ENABLE_DRIVERS_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_MASK 0x00000800 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_SHIFT 11 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_MSB 11 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_LSB 11 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_MASK 0x00000400 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_SHIFT 10 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_MSB 10 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_LSB 10 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_MASK 0x00000200 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_SHIFT 9 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_MSB 9 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_LSB 9 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_MASK 0x00000100 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_SHIFT 8 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_MSB 8 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_LSB 8 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_SEL_MASK 0x00000018 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_SEL_SHIFT 3 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_SEL_MSB 4 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_SEL_LSB 3 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_SEL_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_REF_CLK_SEL_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_SEL_MASK 0x00000004 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_SEL_SHIFT 2 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_SEL_MSB 2 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_SEL_LSB 2 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_SEL_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_SPI_CLK_SEL_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_SEL_MASK 0x00000002 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_SEL_SHIFT 1 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_SEL_MSB 1 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_SEL_LSB 1 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_SEL_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_DR_CLK_SEL_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_SEL_MASK 0x00000001 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_SEL_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_SEL_MSB 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_SEL_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_SEL_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCAN_CTRL_CORE_CLK_SEL_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_PLL_CTRL */ +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RIPPLE_RESET_MASK 0x00002000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RIPPLE_RESET_SHIFT 13 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RIPPLE_RESET_MSB 13 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RIPPLE_RESET_LSB 13 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RIPPLE_RESET_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RIPPLE_RESET_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RESET_MASK 0x00001000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RESET_SHIFT 12 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RESET_MSB 12 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RESET_LSB 12 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RESET_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_RESET_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_BYPASS_MASK 0x00000800 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_BYPASS_SHIFT 11 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_BYPASS_MSB 11 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_BYPASS_LSB 11 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_BYPASS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_BYPASS_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_ACBYPASS_MASK 0x00000400 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_ACBYPASS_SHIFT 10 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_ACBYPASS_MSB 10 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_ACBYPASS_LSB 10 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_ACBYPASS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_ACBYPASS_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_EXTCLK_MASK 0x00000200 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_EXTCLK_SHIFT 9 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_EXTCLK_MSB 9 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_EXTCLK_LSB 9 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_EXTCLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_SPI_EXTCLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_BYPASS_MASK 0x00000100 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_BYPASS_SHIFT 8 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_BYPASS_MSB 8 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_BYPASS_LSB 8 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_BYPASS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_BYPASS_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_ACBYPASS_MASK 0x00000080 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_ACBYPASS_SHIFT 7 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_ACBYPASS_MSB 7 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_ACBYPASS_LSB 7 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_ACBYPASS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_ACBYPASS_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_EXTCLK_MASK 0x00000040 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_EXTCLK_SHIFT 6 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_EXTCLK_MSB 6 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_EXTCLK_LSB 6 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_EXTCLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_DR_EXTCLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_BYPASS_MASK 0x00000020 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_BYPASS_SHIFT 5 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_BYPASS_MSB 5 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_BYPASS_LSB 5 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_BYPASS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_BYPASS_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_ACBYPASS_MASK 0x00000010 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_ACBYPASS_SHIFT 4 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_ACBYPASS_MSB 4 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_ACBYPASS_LSB 4 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_ACBYPASS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_ACBYPASS_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_EXTCLK_MASK 0x00000008 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_EXTCLK_SHIFT 3 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_EXTCLK_MSB 3 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_EXTCLK_LSB 3 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_EXTCLK_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_EXTCLK_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_M_N_SEL_MASK 0x00000007 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_M_N_SEL_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_M_N_SEL_MSB 2 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_M_N_SEL_LSB 0 +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_M_N_SEL_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_PLL_CTRL_KA_PLL_CORE_M_N_SEL_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_CORE_CLK_COUNT */ +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_CLEAR_RIPPLE_CNT_N_MASK 0x02000000 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_CLEAR_RIPPLE_CNT_N_SHIFT 25 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_CLEAR_RIPPLE_CNT_N_MSB 25 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_CLEAR_RIPPLE_CNT_N_LSB 25 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_CLEAR_RIPPLE_CNT_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_CLEAR_RIPPLE_CNT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_ENABLE_RIPPLE_CNT_MASK 0x01000000 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_ENABLE_RIPPLE_CNT_SHIFT 24 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_ENABLE_RIPPLE_CNT_MSB 24 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_ENABLE_RIPPLE_CNT_LSB 24 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_ENABLE_RIPPLE_CNT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_ENABLE_RIPPLE_CNT_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_RIPPLE_COUNT_MASK 0x00ffffff +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_RIPPLE_COUNT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_RIPPLE_COUNT_MSB 23 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_RIPPLE_COUNT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_RIPPLE_COUNT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_CORE_CLK_COUNT_RIPPLE_COUNT_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_DR_CLK_COUNT */ +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_CLEAR_RIPPLE_CNT_N_MASK 0x02000000 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_CLEAR_RIPPLE_CNT_N_SHIFT 25 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_CLEAR_RIPPLE_CNT_N_MSB 25 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_CLEAR_RIPPLE_CNT_N_LSB 25 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_CLEAR_RIPPLE_CNT_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_CLEAR_RIPPLE_CNT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_ENABLE_RIPPLE_CNT_MASK 0x01000000 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_ENABLE_RIPPLE_CNT_SHIFT 24 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_ENABLE_RIPPLE_CNT_MSB 24 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_ENABLE_RIPPLE_CNT_LSB 24 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_ENABLE_RIPPLE_CNT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_ENABLE_RIPPLE_CNT_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_RIPPLE_COUNT_MASK 0x00ffffff +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_RIPPLE_COUNT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_RIPPLE_COUNT_MSB 23 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_RIPPLE_COUNT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_RIPPLE_COUNT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_DR_CLK_COUNT_RIPPLE_COUNT_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SPI_CLK_COUNT */ +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_CLEAR_RIPPLE_CNT_N_MASK 0x02000000 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_CLEAR_RIPPLE_CNT_N_SHIFT 25 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_CLEAR_RIPPLE_CNT_N_MSB 25 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_CLEAR_RIPPLE_CNT_N_LSB 25 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_CLEAR_RIPPLE_CNT_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_CLEAR_RIPPLE_CNT_N_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_ENABLE_RIPPLE_CNT_MASK 0x01000000 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_ENABLE_RIPPLE_CNT_SHIFT 24 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_ENABLE_RIPPLE_CNT_MSB 24 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_ENABLE_RIPPLE_CNT_LSB 24 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_ENABLE_RIPPLE_CNT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_ENABLE_RIPPLE_CNT_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_RIPPLE_COUNT_MASK 0x00ffffff +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_RIPPLE_COUNT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_RIPPLE_COUNT_MSB 23 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_RIPPLE_COUNT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_RIPPLE_COUNT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_SPI_CLK_COUNT_RIPPLE_COUNT_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_BRD_BRD_OUT_DATA */ +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_BRD_OUT_MASK 0x001fffff +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_BRD_OUT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_BRD_OUT_MSB 20 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_BRD_OUT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_BRD_OUT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_DATA_BRD_OUT_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_BRD_BRD_OUT_ENABLE */ +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_BRD_OUT_EN_MASK 0x001fffff +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_BRD_OUT_EN_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_BRD_OUT_EN_MSB 20 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_BRD_OUT_EN_LSB 0 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_BRD_OUT_EN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_OUT_ENABLE_BRD_OUT_EN_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_BRD_BRD_IN */ +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_BRD_IN_MASK 0x001fffff +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_BRD_IN_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_BRD_IN_MSB 20 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_BRD_IN_LSB 0 +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_BRD_IN_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_BRD_BRD_IN_BRD_IN_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_MISC */ +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_START_MASK 0x00000002 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_START_SHIFT 1 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_START_MSB 1 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_START_LSB 1 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_START_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_START_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_READY_MASK 0x00000001 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_READY_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_READY_MSB 0 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_READY_LSB 0 +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_READY_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_MISC_MARG_READY_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_INTERRUPT */ +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_BME_TIMEOUT_MASK 0x00000010 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_BME_TIMEOUT_SHIFT 4 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_BME_TIMEOUT_MSB 4 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_BME_TIMEOUT_LSB 4 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_BME_TIMEOUT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_BME_TIMEOUT_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_A_MASK 0x00000008 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_A_SHIFT 3 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_A_MSB 3 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_A_LSB 3 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_A_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_A_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_B_MASK 0x00000004 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_B_SHIFT 2 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_B_MSB 2 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_B_LSB 2 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_B_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_OVER_TEMP_B_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_A_MASK 0x00000002 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_A_SHIFT 1 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_A_MSB 1 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_A_LSB 1 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_A_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_A_DEFAULT 0x00000000 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_B_MASK 0x00000001 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_B_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_B_MSB 0 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_B_LSB 0 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_B_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_POWER_FAIL_B_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_INTERRUPT_MASK */ +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_BME_TIMEOUT_DISINT_MASK 0x00000010 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_BME_TIMEOUT_DISINT_SHIFT 4 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_BME_TIMEOUT_DISINT_MSB 4 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_BME_TIMEOUT_DISINT_LSB 4 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_BME_TIMEOUT_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_BME_TIMEOUT_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_A_DISINT_MASK 0x00000008 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_A_DISINT_SHIFT 3 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_A_DISINT_MSB 3 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_A_DISINT_LSB 3 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_A_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_A_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_B_DISINT_MASK 0x00000004 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_B_DISINT_SHIFT 2 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_B_DISINT_MSB 2 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_B_DISINT_LSB 2 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_B_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_OVER_TEMP_B_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_A_DISINT_MASK 0x00000002 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_A_DISINT_SHIFT 1 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_A_DISINT_MSB 1 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_A_DISINT_LSB 1 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_A_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_A_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_B_DISINT_MASK 0x00000001 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_B_DISINT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_B_DISINT_MSB 0 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_B_DISINT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_B_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_INTERRUPT_MASK_POWER_FAIL_B_DISINT_DEFAULT 0x00000001 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SCRATCH */ +#define SAND_HAL_KA_SC_SCAN_SCRATCH_TEST_BITS_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCRATCH_TEST_BITS_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_TEST_BITS_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_TEST_BITS_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_TEST_BITS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCRATCH_TEST_BITS_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register KA_SC_SCAN_SCRATCH_MASK */ +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_TEST_BITS_DISINT_MASK 0xffffffff +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_TEST_BITS_DISINT_SHIFT 0 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_TEST_BITS_DISINT_MSB 31 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_TEST_BITS_DISINT_LSB 0 +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_TEST_BITS_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_KA_SC_SCAN_SCRATCH_MASK_TEST_BITS_DISINT_DEFAULT 0xffffffff + +#endif /* matches #ifndef HAL_KA_SC_AUTO_H */ diff --git a/board/sandburst/karef/init.S b/board/sandburst/karef/init.S new file mode 100644 index 0000000..b1d47a4 --- /dev/null +++ b/board/sandburst/karef/init.S @@ -0,0 +1,101 @@ +/* +* Copyright (C) 2005 Sandburst Corporation +* +* See file CREDITS for list of people who contributed to this +* project. +* +* 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 +*/ +/* + * Ported from Ebony init.S by Travis B. Sawyer + */ + +#include <ppc_asm.tmpl> +#include <config.h> + +/* General */ +#define TLB_VALID 0x00000200 + +/* Supported page sizes */ + +#define SZ_1K 0x00000000 +#define SZ_4K 0x00000010 +#define SZ_16K 0x00000020 +#define SZ_64K 0x00000030 +#define SZ_256K 0x00000040 +#define SZ_1M 0x00000050 +#define SZ_16M 0x00000070 +#define SZ_256M 0x00000090 + +/* Storage attributes */ +#define SA_W 0x00000800 /* Write-through */ +#define SA_I 0x00000400 /* Caching inhibited */ +#define SA_M 0x00000200 /* Memory coherence */ +#define SA_G 0x00000100 /* Guarded */ +#define SA_E 0x00000080 /* Endian */ + +/* Access control */ +#define AC_X 0x00000024 /* Execute */ +#define AC_W 0x00000012 /* Write */ +#define AC_R 0x00000009 /* Read */ + +/* Some handy macros */ + +#define EPN(e) ((e) & 0xfffffc00) +#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) ) +#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) ) +#define TLB2(a) ( (a)&0x00000fbf ) + +#define tlbtab_start\ + mflr r1 ;\ + bl 0f ; + +#define tlbtab_end\ + .long 0, 0, 0 ; \ +0: mflr r0 ; \ + mtlr r1 ; \ + blr ; + +#define tlbentry(epn,sz,rpn,erpn,attr)\ + .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr) + + +/************************************************************************** + * TLB TABLE + * + * This table is used by the cpu boot code to setup the initial tlb + * entries. Rather than make broad assumptions in the cpu source tree, + * this table lets each board set things up however they like. + * + * Pointer to the table is returned in r1 + * + *************************************************************************/ + + .section .bootpg,"ax" + .globl tlbtab + +tlbtab: + tlbtab_start + tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I) + tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I) + tlbentry( CFG_ISRAM_BASE, SZ_256K, 0x80000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I) + tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_SDRAM_BASE+0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_SDRAM_BASE+0x20000000, SZ_256M, 0x20000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_SDRAM_BASE+0x30000000, SZ_256M, 0x30000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I ) + tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_R|AC_W|SA_G|SA_I ) + tlbtab_end diff --git a/board/sandburst/karef/karef.c b/board/sandburst/karef/karef.c new file mode 100644 index 0000000..3856a39 --- /dev/null +++ b/board/sandburst/karef/karef.c @@ -0,0 +1,577 @@ +/* + * Copyright (C) 2005 Sandburst Corporation + * Travis B. Sawyer + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 <config.h> +#include <common.h> +#include <command.h> +#include "karef.h" +#include "karef_version.h" +#include <asm/processor.h> +#include <asm/io.h> +#include <spd_sdram.h> +#include <i2c.h> +#include "../common/sb_common.h" +#include "../common/ppc440gx_i2c.h" + +void fpga_init (void); + +KAREF_BOARD_ID_ST board_id_as[] = +{ + {"Undefined"}, /* Not specified */ + {"Kamino Reference Design"}, + {"Reserved"}, /* Reserved for future use */ + {"Reserved"}, /* Reserved for future use */ +}; + +KAREF_BOARD_ID_ST ofem_board_id_as[] = +{ + {"Undefined"}, + {"1x10 + 10x2"}, + {"Reserved"}, + {"Reserved"}, +}; + +/************************************************************************* + * board_early_init_f + * + * Setup chip selects, initialize the Opto-FPGA, initialize + * interrupt polarity and triggers. + ************************************************************************/ +int board_early_init_f (void) +{ + ppc440_gpio_regs_t *gpio_regs; + + /* Enable GPIO interrupts */ + mtsdr(sdr_pfc0, 0x00103E00); + + /* Setup access for LEDs, and system topology info */ + gpio_regs = (ppc440_gpio_regs_t *)CFG_GPIO_BASE; + gpio_regs->open_drain = SBCOMMON_GPIO_SYS_LEDS; + gpio_regs->tri_state = SBCOMMON_GPIO_DBGLEDS; + + /* Turn on all the leds for now */ + gpio_regs->out = SBCOMMON_GPIO_LEDS; + + /*--------------------------------------------------------------------+ + | Initialize EBC CONFIG + +-------------------------------------------------------------------*/ + mtebc(xbcfg, + EBC_CFG_LE_UNLOCK | EBC_CFG_PTD_ENABLE | + EBC_CFG_RTC_64PERCLK | EBC_CFG_ATC_PREVIOUS | + EBC_CFG_DTC_PREVIOUS | EBC_CFG_CTC_PREVIOUS | + EBC_CFG_EMC_DEFAULT | EBC_CFG_PME_DISABLE | + EBC_CFG_PR_32); + + /*--------------------------------------------------------------------+ + | 1/2 MB FLASH. Initialize bank 0 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb0ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(1)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb0cr, EBC_BXCR_BAS_ENCODE(CFG_FLASH_BASE) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_8BIT); + /*--------------------------------------------------------------------+ + | 8KB NVRAM/RTC. Initialize bank 1 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb1ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(10) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(1)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb1cr, EBC_BXCR_BAS_ENCODE(0x48000000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_8BIT); + + /*--------------------------------------------------------------------+ + | Compact Flash, uses 2 Chip Selects (2 & 6) + +-------------------------------------------------------------------*/ + mtebc(pb2ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(0)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb2cr, EBC_BXCR_BAS_ENCODE(0xF0000000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_16BIT); + + /*--------------------------------------------------------------------+ + | KaRef Scan FPGA. Initialize bank 3 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb5ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + mtebc(pb5cr, EBC_BXCR_BAS_ENCODE(0x48200000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + /*--------------------------------------------------------------------+ + | MAC A & B for Kamino. OFEM FPGA decodes the addresses + | Initialize bank 4 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb4ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + mtebc(pb4cr, EBC_BXCR_BAS_ENCODE(0x48600000) | + EBC_BXCR_BS_2MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + /*--------------------------------------------------------------------+ + | OFEM FPGA Initialize bank 5 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb3ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + + mtebc(pb3cr, EBC_BXCR_BAS_ENCODE(0x48400000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + + /*--------------------------------------------------------------------+ + | Compact Flash, uses 2 Chip Selects (2 & 6) + +-------------------------------------------------------------------*/ + mtebc(pb6ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(0)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb6cr, EBC_BXCR_BAS_ENCODE(0xF0100000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_16BIT); + + /*--------------------------------------------------------------------+ + | BME-32. Initialize bank 7 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb7ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + mtebc(pb7cr, EBC_BXCR_BAS_ENCODE(0x48500000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + /*--------------------------------------------------------------------+ + * Setup the interrupt controller polarities, triggers, etc. + +-------------------------------------------------------------------*/ + mtdcr (uic0sr, 0xffffffff); /* clear all */ + mtdcr (uic0er, 0x00000000); /* disable all */ + mtdcr (uic0cr, 0x00000000); /* all non- critical */ + mtdcr (uic0pr, 0xfffffe03); /* polarity */ + mtdcr (uic0tr, 0x01c00000); /* trigger edge vs level */ + mtdcr (uic0vr, 0x00000001); /* int31 highest, base=0x000 */ + mtdcr (uic0sr, 0xffffffff); /* clear all */ + + mtdcr (uic1sr, 0xffffffff); /* clear all */ + mtdcr (uic1er, 0x00000000); /* disable all */ + mtdcr (uic1cr, 0x00000000); /* all non-critical */ + mtdcr (uic1pr, 0xffffc8ff); /* polarity */ + mtdcr (uic1tr, 0x00ff0000); /* trigger edge vs level */ + mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */ + mtdcr (uic1sr, 0xffffffff); /* clear all */ + + mtdcr (uic2sr, 0xffffffff); /* clear all */ + mtdcr (uic2er, 0x00000000); /* disable all */ + mtdcr (uic2cr, 0x00000000); /* all non-critical */ + mtdcr (uic2pr, 0xffff83ff); /* polarity */ + mtdcr (uic2tr, 0x00ff8c0f); /* trigger edge vs level */ + mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */ + mtdcr (uic2sr, 0xffffffff); /* clear all */ + + mtdcr (uicb0sr, 0xfc000000); /* clear all */ + mtdcr (uicb0er, 0x00000000); /* disable all */ + mtdcr (uicb0cr, 0x00000000); /* all non-critical */ + mtdcr (uicb0pr, 0xfc000000); + mtdcr (uicb0tr, 0x00000000); + mtdcr (uicb0vr, 0x00000001); + + fpga_init(); + + return 0; +} + + +/************************************************************************* + * checkboard + * + * Dump pertinent info to the console + ************************************************************************/ +int checkboard (void) +{ + sys_info_t sysinfo; + unsigned char brd_rev, brd_id; + unsigned short sernum; + unsigned char scan_rev, scan_id, ofem_rev, ofem_id; + unsigned char ofem_brd_rev, ofem_brd_id; + KAREF_FPGA_REGS_ST *karef_ps; + OFEM_FPGA_REGS_ST *ofem_ps; + + karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE; + ofem_ps = (OFEM_FPGA_REGS_ST *)CFG_OFEM_FPGA_BASE; + + scan_id = (unsigned char)((karef_ps->revision_ul & + SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_MASK) + >> SAND_HAL_KA_SC_SCAN_REVISION_IDENTIFICATION_SHIFT); + + scan_rev = (unsigned char)((karef_ps->revision_ul & SAND_HAL_KA_SC_SCAN_REVISION_REVISION_MASK) + >> SAND_HAL_KA_SC_SCAN_REVISION_REVISION_SHIFT); + + brd_rev = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_MASK) + >> SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_REV_SHIFT); + + brd_id = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_MASK) + >> SAND_HAL_KA_SC_SCAN_BRD_INFO_BRD_ID_SHIFT); + + ofem_brd_id = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_MASK) + >> SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_SHIFT); + + ofem_brd_rev = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_MASK) + >> SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_REV_SHIFT); + + if (0xF != ofem_brd_id) { + ofem_id = (unsigned char)((ofem_ps->revision_ul & + SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_MASK) + >> SAND_HAL_KA_OF_OFEM_REVISION_IDENTIFICATION_SHIFT); + + ofem_rev = (unsigned char)((ofem_ps->revision_ul & + SAND_HAL_KA_OF_OFEM_REVISION_REVISION_MASK) + >> SAND_HAL_KA_OF_OFEM_REVISION_REVISION_SHIFT); + } + + get_sys_info (&sysinfo); + + sernum = sbcommon_get_serial_number(); + + printf ("Board: Sandburst Corporation Kamino Reference Design " + "Serial Number: %d\n", sernum); + printf ("%s\n", KAREF_U_BOOT_REL_STR); + + printf ("Built %s %s by %s\n", __DATE__, __TIME__, BUILDUSER); + if (sbcommon_get_master()) { + printf("Slot 0 - Master\nSlave board"); + if (sbcommon_secondary_present()) + printf(" present\n"); + else + printf(" not detected\n"); + } else { + printf("Slot 1 - Slave\n\n"); + } + + printf ("ScanFPGA ID:\t0x%02X\tRev: 0x%02X\n", scan_id, scan_rev); + printf ("Board Rev:\t0x%02X\tID: 0x%02X\n", brd_rev, brd_id); + if(0xF != ofem_brd_id) { + printf("OFemFPGA ID:\t0x%02X\tRev: 0x%02X\n", ofem_id, ofem_rev); + printf("OFEM Board Rev:\t0x%02X\tID: 0x%02X\n", ofem_brd_id, ofem_brd_rev); + } + + printf ("\tVCO: %lu MHz\n", sysinfo.freqVCOMhz / 1000000); + printf ("\tCPU: %lu MHz\n", sysinfo.freqProcessor / 1000000); + printf ("\tPLB: %lu MHz\n", sysinfo.freqPLB / 1000000); + printf ("\tOPB: %lu MHz\n", sysinfo.freqOPB / 1000000); + printf ("\tEPB: %lu MHz\n", sysinfo.freqEPB / 1000000); + + /* Fix the ack in the bme 32 */ + udelay(5000); + out32(CFG_BME32_BASE + 0x0000000C, 0x00000001); + asm("eieio"); + + + return (0); +} + +/************************************************************************* + * misc_init_f + * + * Initialize I2C bus one to gain access to the fans + ************************************************************************/ +int misc_init_f (void) +{ + /* Turn on i2c bus 1 */ + puts ("I2C1: "); + i2c1_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); + puts ("ready\n"); + + /* Turn on fans 3 & 4 */ + sbcommon_fans(); + + return (0); +} + +/************************************************************************* + * misc_init_r + * + * Do nothing. + ************************************************************************/ +int misc_init_r (void) +{ + unsigned short sernum; + char envstr[255]; + KAREF_FPGA_REGS_ST *karef_ps; + OFEM_FPGA_REGS_ST *ofem_ps; + unsigned char ofem_id; + + if(NULL != getenv("secondserial")) { + puts("secondserial is set, switching to second serial port\n"); + setenv("stderr", "serial1"); + setenv("stdout", "serial1"); + setenv("stdin", "serial1"); + } + + setenv("ubrelver", KAREF_U_BOOT_REL_STR); + + memset(envstr, 0, 255); + sprintf (envstr, "Built %s %s by %s", __DATE__, __TIME__, BUILDUSER); + setenv("bldstr", envstr); + saveenv(); + + if( getenv("autorecover")) { + setenv("autorecover", NULL); + saveenv(); + sernum = sbcommon_get_serial_number(); + + printf("\nSetting up environment for automatic filesystem recovery\n"); + /* + * Setup default bootargs + */ + memset(envstr, 0, 255); + + sprintf(envstr, "console=ttyS0,9600 root=/dev/ram0 " + "rw ip=10.100.70.%d:::255.255.0.0:karef%d:eth0:none idebus=33", + sernum, sernum); + setenv("bootargs", envstr); + + /* + * Setup Default boot command + */ + setenv("bootcmd", "fatload ide 0 8000000 uimage.karef;" + "fatload ide 0 8100000 pramdisk;" + "bootm 8000000 8100000"); + + printf("Done. Please type allow the system to continue to boot\n"); + } + + if( getenv("fakeled")) { + karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE; + ofem_ps = (OFEM_FPGA_REGS_ST *)CFG_OFEM_FPGA_BASE; + ofem_ps->control_ul &= ~SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_MASK; + karef_ps->control_ul &= ~SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_MASK; + setenv("bootdelay", "-1"); + saveenv(); + printf("fakeled is set. use 'setenv fakeled ; setenv bootdelay 5 ; saveenv' to recover\n"); + } + + return (0); +} + +/************************************************************************* + * ide_set_reset + ************************************************************************/ +#ifdef CONFIG_IDE_RESET +void ide_set_reset(int on) +{ + KAREF_FPGA_REGS_ST *karef_ps; + /* TODO: ide reset */ + karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE; + + if (on) { + karef_ps->reset_ul &= ~SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MASK; + } else { + karef_ps->reset_ul |= SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MASK; + } +} +#endif /* CONFIG_IDE_RESET */ + +/************************************************************************* + * fpga_init + ************************************************************************/ +void fpga_init(void) +{ + KAREF_FPGA_REGS_ST *karef_ps; + OFEM_FPGA_REGS_ST *ofem_ps; + unsigned char ofem_id; + unsigned long tmp; + + /* Ensure we have power all around */ + udelay(500); + + karef_ps = (KAREF_FPGA_REGS_ST *)CFG_KAREF_FPGA_BASE; + tmp = + SAND_HAL_KA_SC_SCAN_RESET_CF_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_BME_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_KA_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_SLAVE_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_OFEM_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_IFE_A_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_I2C_MUX1_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_PHY0_RESET_N_MASK | + SAND_HAL_KA_SC_SCAN_RESET_PHY1_RESET_N_MASK; + + karef_ps->reset_ul = tmp; + + /* + * Wait a bit to allow the ofem fpga to get its brains + */ + udelay(5000); + + /* + * Check to see if the ofem is there + */ + ofem_id = (unsigned char)((karef_ps->boardinfo_ul & SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_MASK) + >> SAND_HAL_KA_SC_SCAN_BRD_INFO_FEM_ID_SHIFT); + if(0xF != ofem_id) { + tmp = + SAND_HAL_KA_OF_OFEM_RESET_I2C_MUX0_RESET_N_MASK | + SAND_HAL_KA_OF_OFEM_RESET_LOCH0_RESET_N_MASK | + SAND_HAL_KA_OF_OFEM_RESET_MAC0_RESET_N_MASK; + + ofem_ps = (OFEM_FPGA_REGS_ST *)CFG_OFEM_FPGA_BASE; + ofem_ps->reset_ul = tmp; + + ofem_ps->control_ul |= 1 < SAND_HAL_KA_OF_OFEM_CNTL_FAULT_LED_SHIFT; + } + + karef_ps->control_ul |= 1 << SAND_HAL_KA_SC_SCAN_CNTL_FAULT_LED_SHIFT; + + asm("eieio"); + + return; +} + +int karefSetupVars(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + unsigned short sernum; + char envstr[255]; + + sernum = sbcommon_get_serial_number(); + + memset(envstr, 0, 255); + /* + * Setup our ip address + */ + sprintf(envstr, "10.100.70.%d", sernum); + + setenv("ipaddr", envstr); + /* + * Setup the host ip address + */ + setenv("serverip", "10.100.17.10"); + + /* + * Setup default bootargs + */ + memset(envstr, 0, 255); + + sprintf(envstr, "console=ttyS0,9600 root=/dev/nfs " + "rw nfsroot=10.100.17.10:/home/metrobox/mbc70.%d " + "nfsaddrs=10.100.70.%d:10.100.17.10:10.100.1.1:" + "255.255.0.0:karef%d.sandburst.com:eth0:none idebus=33", + sernum, sernum, sernum); + + setenv("bootargs_nfs", envstr); + setenv("bootargs", envstr); + + /* + * Setup CF bootargs + */ + memset(envstr, 0, 255); + + sprintf(envstr, "console=ttyS0,9600 root=/dev/hda2 " + "rw ip=10.100.70.%d:::255.255.0.0:karef%d:eth0:none idebus=33", + sernum, sernum); + + setenv("bootargs_cf", envstr); + + /* + * Setup Default boot command + */ + setenv("bootcmd_tftp", "tftp 8000000 uImage.karef;bootm 8000000"); + setenv("bootcmd", "tftp 8000000 uImage.karef;bootm 8000000"); + + /* + * Setup compact flash boot command + */ + setenv("bootcmd_cf", "fatload ide 0 8000000 uimage.karef;bootm 8000000"); + + saveenv(); + + return(1); +} + +int karefRecover(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + unsigned short sernum; + char envstr[255]; + + sernum = sbcommon_get_serial_number(); + + printf("\nSetting up environment for filesystem recovery\n"); + /* + * Setup default bootargs + */ + memset(envstr, 0, 255); + + sprintf(envstr, "console=ttyS0,9600 root=/dev/ram0 " + "rw ip=10.100.70.%d:::255.255.0.0:karef%d:eth0:none", + sernum, sernum); + setenv("bootargs", envstr); + + /* + * Setup Default boot command + */ + + setenv("bootcmd", "fatload ide 0 8000000 uimage.karef;" + "fatload ide 0 8100000 pramdisk;" + "bootm 8000000 8100000"); + + printf("Done. Please type boot<cr>.\nWhen the kernel has booted" + " please type fsrecover.sh<cr>\n"); + + return(1); +} + +U_BOOT_CMD(kasetup, 1, 1, karefSetupVars, + "kasetup - Set environment to factory defaults\n", NULL); + +U_BOOT_CMD(karecover, 1, 1, karefRecover, + "karecover - Set environment to allow for fs recovery\n", NULL); diff --git a/board/sandburst/karef/karef.h b/board/sandburst/karef/karef.h new file mode 100644 index 0000000..7790819 --- /dev/null +++ b/board/sandburst/karef/karef.h @@ -0,0 +1,76 @@ +#ifndef __KAREF_H__ +#define __KAREF_H__ +/* + * (C) Copyright 2005 + * Sandburst Corporation + * Travis B. Sawyer + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +/* Ka Reference Design OFEM FPGA Registers & definitions */ +#include "hal_ka_sc_auto.h" +#include "hal_ka_of_auto.h" + +typedef struct karef_board_id_s { + const char name[40]; +} KAREF_BOARD_ID_ST, *KAREF_BOARD_ID_PST; + +/* SCAN FPGA */ +typedef struct karef_fpga_regs_s +{ + volatile unsigned long revision_ul; /* Read Only */ + volatile unsigned long reset_ul; /* Read/Write */ + volatile unsigned long interrupt_ul; /* Read Only */ + volatile unsigned long mask_ul; /* Read/Write */ + volatile unsigned long scratch_ul; /* Read/Write */ + volatile unsigned long scrmask_ul; /* Read/Write */ + volatile unsigned long status_ul; /* Read Only */ + volatile unsigned long control_ul; /* Read/Write */ + volatile unsigned long boardinfo_ul; /* Read Only */ + volatile unsigned long scan_from0_ul; /* Read Only */ + volatile unsigned long scan_from1_ul; /* Read Only */ + volatile unsigned long scan_to0_ul; /* Read/Write */ + volatile unsigned long scan_to1_ul; /* Read/Write */ + volatile unsigned long scan_control_ul; /* Read/Write */ + volatile unsigned long pll_control_ul; /* Read/Write */ + volatile unsigned long core_clock_cnt_ul; /* Read/Write */ + volatile unsigned long dr_clock_cnt_ul; /* Read/Write */ + volatile unsigned long spi_clock_cnt_ul; /* Read/Write */ + volatile unsigned long brdout_data_ul; /* Read/Write */ + volatile unsigned long brdout_enable_ul; /* Read/Write */ + volatile unsigned long brdin_data_ul; /* Read Only */ + volatile unsigned long misc_ul; /* Read/Write */ +} KAREF_FPGA_REGS_ST __attribute__((packed)), * KAREF_FPGA_REGS_PST; + +/* OFEM FPGA */ +typedef struct ofem_fpga_regs_s +{ + volatile unsigned long revision_ul; /* Read Only */ + volatile unsigned long reset_ul; /* Read/Write */ + volatile unsigned long interrupt_ul; /* Read Only */ + volatile unsigned long mask_ul; /* Read/Write */ + volatile unsigned long scratch_ul; /* Read/Write */ + volatile unsigned long scrmask_ul; /* Read/Write */ + volatile unsigned long control_ul; /* Read/Write */ + volatile unsigned long mac_flow_ctrl_ul; /* Read/Write */ +} OFEM_FPGA_REGS_ST __attribute__((packed)), * OFEM_FPGA_REGS_PST; + + +#endif /* __KAREF_H__ */ diff --git a/board/sandburst/karef/karef_version.h b/board/sandburst/karef/karef_version.h new file mode 100644 index 0000000..9960b9a --- /dev/null +++ b/board/sandburst/karef/karef_version.h @@ -0,0 +1,26 @@ +#ifndef _KAREF_VERSION_H_ +#define _KAREF_VERSION_H_ +/* + * Copyright (C) 2005 Sandburst Corporation + * Travis B. Sawyer + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ +#define KAREF_U_BOOT_REL_STR "Release 0.0.7" +#endif diff --git a/board/sandburst/karef/u-boot.lds b/board/sandburst/karef/u-boot.lds new file mode 100644 index 0000000..ff8658f --- /dev/null +++ b/board/sandburst/karef/u-boot.lds @@ -0,0 +1,156 @@ +/* + * (C) Copyright 2005 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +SECTIONS +{ + .resetvec 0xFFFFFFFC : + { + *(.resetvec) + } = 0xffff + + .bootpg 0xFFFFF000 : + { + cpu/ppc4xx/start.o (.bootpg) + } = 0xffff + + /* Read-only sections, merged into text segment: */ + . = + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } + .plt : { *(.plt) } + .text : + { + /* WARNING - the following is hand-optimized to fit within */ + /* the sector layout of our flash chips! XXX FIXME XXX */ + + cpu/ppc4xx/start.o (.text) + board/sandburst/karef/init.o (.text) + cpu/ppc4xx/kgdb.o (.text) + cpu/ppc4xx/traps.o (.text) + cpu/ppc4xx/interrupts.o (.text) + cpu/ppc4xx/serial.o (.text) + cpu/ppc4xx/cpu_init.o (.text) + cpu/ppc4xx/speed.o (.text) + cpu/ppc4xx/440gx_enet.o (.text) + common/dlmalloc.o (.text) + lib_generic/crc32.o (.text) + lib_ppc/extable.o (.text) + lib_generic/zlib.o (.text) + +/* . = env_offset;*/ +/* common/environment.o(.text)*/ + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + *(.rodata.str1.4) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x00FF) & 0xFFFFFF00; + _erotext = .; + PROVIDE (erotext = .); + .reloc : + { + *(.got) + _GOT2_TABLE_ = .; + *(.got2) + _FIXUP_TABLE_ = .; + *(.fixup) + } + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; + __fixup_entries = (. - _FIXUP_TABLE_)>>2; + + .data : + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.dynamic) + CONSTRUCTORS + } + _edata = .; + PROVIDE (edata = .); + + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); +} diff --git a/board/sandburst/karef/u-boot.lds.debug b/board/sandburst/karef/u-boot.lds.debug new file mode 100644 index 0000000..c6522b9 --- /dev/null +++ b/board/sandburst/karef/u-boot.lds.debug @@ -0,0 +1,145 @@ +/* + * (C) Copyright 2002-2005 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } + .plt : { *(.plt) } + .text : + { + /* WARNING - the following is hand-optimized to fit within */ + /* the sector layout of our flash chips! XXX FIXME XXX */ + + cpu/ppc4xx/start.o (.text) + board/sandburst/karef/init.o (.text) + cpu/ppc4xx/kgdb.o (.text) + cpu/ppc4xx/traps.o (.text) + cpu/ppc4xx/interrupts.o (.text) + cpu/ppc4xx/serial.o (.text) + cpu/ppc4xx/cpu_init.o (.text) + cpu/ppc4xx/speed.o (.text) + cpu/ppc4xx/440gx_enet.o (.text) + common/dlmalloc.o (.text) + lib_generic/crc32.o (.text) + lib_ppc/extable.o (.text) + lib_generic/zlib.o (.text) + +/* common/environment.o(.text) */ + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + *(.rodata.str1.4) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x0FFF) & 0xFFFFF000; + _erotext = .; + PROVIDE (erotext = .); + .reloc : + { + *(.got) + _GOT2_TABLE_ = .; + *(.got2) + _FIXUP_TABLE_ = .; + *(.fixup) + } + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; + __fixup_entries = (. - _FIXUP_TABLE_)>>2; + + .data : + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.dynamic) + CONSTRUCTORS + } + _edata = .; + PROVIDE (edata = .); + + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); +} diff --git a/board/sandburst/metrobox/Makefile b/board/sandburst/metrobox/Makefile new file mode 100644 index 0000000..06a9a22 --- /dev/null +++ b/board/sandburst/metrobox/Makefile @@ -0,0 +1,57 @@ +# +# (C) Copyright 2005 +# Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com +# +# See file CREDITS for list of people who contributed to this +# project. +# +# 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 $(TOPDIR)/config.mk + +# TBS: add for debugging purposes +BUILDUSER := $(shell whoami) +FORCEBUILD := $(shell rm -f $(LIB) $(BOARD).o) + +CFLAGS += -DBUILDUSER='"$(BUILDUSER)"' +# TBS: end debugging + + +LIB = lib$(BOARD).a + +OBJS = $(BOARD).o ../common/flash.o ../common/ppc440gx_i2c.o \ + ../common/sb_common.o +SOBJS = init.o + + +$(LIB): $(OBJS) $(SOBJS) + $(AR) crv $@ $(OBJS) + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak .depend *~ + +######################################################################### + +.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) + $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff --git a/board/sandburst/metrobox/config.mk b/board/sandburst/metrobox/config.mk new file mode 100644 index 0000000..91aee2f --- /dev/null +++ b/board/sandburst/metrobox/config.mk @@ -0,0 +1,38 @@ +# +# (C) Copyright 2005 +# Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com +# +# See file CREDITS for list of people who contributed to this +# project. +# +# 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 +# + +ifeq ($(ramsym),1) +TEXT_BASE = 0x07FD0000 +else +TEXT_BASE = 0xFFF80000 +endif + +PLATFORM_CPPFLAGS += -DCONFIG_440=1 + +ifeq ($(debug),1) +PLATFORM_CPPFLAGS += -DDEBUG +endif + +ifeq ($(dbcr),1) +PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000 +endif diff --git a/board/sandburst/metrobox/hal_xc_auto.h b/board/sandburst/metrobox/hal_xc_auto.h new file mode 100644 index 0000000..c99b38c --- /dev/null +++ b/board/sandburst/metrobox/hal_xc_auto.h @@ -0,0 +1,553 @@ +/* **************************************************************** + * Common defs for reg spec for chip xc + * Auto-generated by trex2: DO NOT HAND-EDIT!! + * **************************************************************** + */ + +#ifndef HAL_XC_AUTO_H +#define HAL_XC_AUTO_H + +/* ---------------------------------------------------------------- + * For block: 'xcvr_cntl' + */ + +/* ---- Block instance addressing (for block-select) */ +#define XCVR_CNTL_BLOCK_ADDR_BIT_L 6 +#define XCVR_CNTL_BLOCK_ADDR_BIT_H 9 +#define XCVR_CNTL_BLOCK_ADDR_WIDTH 4 + +#define XCVR_CNTL_ADDR 0x0 + +/* ---- Reg addressing (within block) */ +#define XCVR_CNTL_REG_ADDR_BIT_L 2 +#define XCVR_CNTL_REG_ADDR_BIT_H 5 +#define XCVR_CNTL_REG_ADDR_WIDTH 4 + + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_REVISION */ +#define SAND_HAL_XC_XCVR_CNTL_REVISION_OFFSET 0x000 +#ifndef SAND_HAL_XC_XCVR_CNTL_REVISION_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_REVISION_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_REVISION_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_REVISION_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_RESET */ +#define SAND_HAL_XC_XCVR_CNTL_RESET_OFFSET 0x004 +#ifndef SAND_HAL_XC_XCVR_CNTL_RESET_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_RESET_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_RESET_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_RESET_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_STATUS */ +#define SAND_HAL_XC_XCVR_CNTL_STATUS_OFFSET 0x008 +#ifndef SAND_HAL_XC_XCVR_CNTL_STATUS_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_STATUS_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_STATUS_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_STATUS_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_CNTL */ +#define SAND_HAL_XC_XCVR_CNTL_CNTL_OFFSET 0x01c +#ifndef SAND_HAL_XC_XCVR_CNTL_CNTL_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_CNTL_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_CNTL_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_CNTL_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_BRD_INFO */ +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_OFFSET 0x020 +#ifndef SAND_HAL_XC_XCVR_CNTL_BRD_INFO_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_MAC_FLOW_CTL */ +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_OFFSET 0x024 +#ifndef SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_INTERRUPT */ +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OFFSET 0x00c +#ifndef SAND_HAL_XC_XCVR_CNTL_INTERRUPT_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_INTERRUPT_MASK */ +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OFFSET 0x010 +#ifndef SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_SCRATCH */ +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_OFFSET 0x014 +#ifndef SAND_HAL_XC_XCVR_CNTL_SCRATCH_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_LSB 0 + +/* ================================================================ + * ---- Register XC_XCVR_CNTL_SCRATCH_MASK */ +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_OFFSET 0x018 +#ifndef SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_NO_TEST_MASK +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_NO_TEST_MASK 0x000 +#endif +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_LSB 0 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_REVISION */ +#define SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_MASK 0x0000ff00 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_SHIFT 8 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_MSB 15 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_LSB 8 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_MASK 0x000000ff +#define SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_MSB 7 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_RESET */ +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_MASK 0x00020000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_SHIFT 17 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_MSB 17 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_LSB 17 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_MASK 0x00010000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_SHIFT 16 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_MSB 16 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_LSB 16 +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_MASK 0x00008000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_SHIFT 15 +#define SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_MSB 15 +#define SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_LSB 15 +#define SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_MASK 0x00004000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_SHIFT 14 +#define SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_MSB 14 +#define SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_LSB 14 +#define SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_MASK 0x00002000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_SHIFT 13 +#define SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_MSB 13 +#define SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_LSB 13 +#define SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MASK 0x00001000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_SHIFT 12 +#define SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MSB 12 +#define SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_LSB 12 +#define SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_MASK 0x00000800 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_SHIFT 11 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_MSB 11 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_LSB 11 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_MASK 0x00000400 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_SHIFT 10 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_MSB 10 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_LSB 10 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_MASK 0x00000200 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_SHIFT 9 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_MSB 9 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_LSB 9 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_MASK 0x00000100 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_SHIFT 8 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_MSB 8 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_LSB 8 +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_MASK 0x00000080 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_SHIFT 7 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_MSB 7 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_LSB 7 +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_MASK 0x00000040 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_SHIFT 6 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_MSB 6 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_LSB 6 +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_MASK 0x00000020 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_SHIFT 5 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_MSB 5 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_LSB 5 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_MASK 0x00000010 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_SHIFT 4 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_MSB 4 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_LSB 4 +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_MASK 0x00000008 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_SHIFT 3 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_MSB 3 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_LSB 3 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_MASK 0x00000004 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_SHIFT 2 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_MSB 2 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_LSB 2 +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_MASK 0x00000002 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_SHIFT 1 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_MSB 1 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_LSB 1 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_MASK 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_MSB 0 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_STATUS */ +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_A_PRES_N_MASK 0x00000004 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_A_PRES_N_SHIFT 2 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_A_PRES_N_MSB 2 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_A_PRES_N_LSB 2 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_A_PRES_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_A_PRES_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_B_PRES_N_MASK 0x00000002 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_B_PRES_N_SHIFT 1 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_B_PRES_N_MSB 1 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_B_PRES_N_LSB 1 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_B_PRES_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_STATUS_PS_B_PRES_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_ALL_GOOD_MASK 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_ALL_GOOD_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_ALL_GOOD_MSB 0 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_ALL_GOOD_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_STATUS_ALL_GOOD_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_STATUS_ALL_GOOD_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_CNTL */ +#define SAND_HAL_XC_XCVR_CNTL_CNTL_SW_PWR_DOWN_MASK 0x00000400 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_SW_PWR_DOWN_SHIFT 10 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_SW_PWR_DOWN_MSB 10 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_SW_PWR_DOWN_LSB 10 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_SW_PWR_DOWN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_CNTL_SW_PWR_DOWN_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_OVER_TEMP_LED_MASK 0x00000300 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_OVER_TEMP_LED_SHIFT 8 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_OVER_TEMP_LED_MSB 9 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_OVER_TEMP_LED_LSB 8 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_OVER_TEMP_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_CNTL_OVER_TEMP_LED_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_MASK 0x000000c0 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_SHIFT 6 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_MSB 7 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_LSB 6 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_R_LED_MASK 0x00000030 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_R_LED_SHIFT 4 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_R_LED_MSB 5 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_R_LED_LSB 4 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_R_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_R_LED_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_L_LED_MASK 0x0000000c +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_L_LED_SHIFT 2 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_L_LED_MSB 3 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_L_LED_LSB 2 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_L_LED_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_CNTL_RS232_L_LED_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_CORE_CLK_50_EN_MASK 0x00000002 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_CORE_CLK_50_EN_SHIFT 1 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_CORE_CLK_50_EN_MSB 1 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_CORE_CLK_50_EN_LSB 1 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_CORE_CLK_50_EN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_CNTL_CORE_CLK_50_EN_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_PCI_CLK_EN_MASK 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_PCI_CLK_EN_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_PCI_CLK_EN_MSB 0 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_PCI_CLK_EN_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_CNTL_PCI_CLK_EN_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_CNTL_PCI_CLK_EN_DEFAULT 0x00000001 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_BRD_INFO */ +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_MASK 0x000000f0 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_SHIFT 4 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_MSB 7 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_LSB 4 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_MASK 0x00000003 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_MSB 1 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_MAC_FLOW_CTL */ +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_FR_MASK 0x00001000 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_FR_SHIFT 12 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_FR_MSB 12 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_FR_LSB 12 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_FR_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_FR_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_ADDR_MASK 0x00000f00 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_ADDR_SHIFT 8 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_ADDR_MSB 11 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_ADDR_LSB 8 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_ADDR_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACB_TXPAUSE_ADDR_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_FR_MASK 0x00000010 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_FR_SHIFT 4 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_FR_MSB 4 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_FR_LSB 4 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_FR_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_FR_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_MASK 0x0000000f +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_MSB 3 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_MAC_FLOW_CTL_MACA_TXPAUSE_ADDR_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_INTERRUPT */ +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_BME_TIMEOUT_MASK 0x00002000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_BME_TIMEOUT_SHIFT 13 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_BME_TIMEOUT_MSB 13 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_BME_TIMEOUT_LSB 13 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_BME_TIMEOUT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_BME_TIMEOUT_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC_TIMEOUT_MASK 0x00001000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC_TIMEOUT_SHIFT 12 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC_TIMEOUT_MSB 12 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC_TIMEOUT_LSB 12 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC_TIMEOUT_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC_TIMEOUT_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_A_LOSOUT_N_MASK 0x00000800 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_A_LOSOUT_N_SHIFT 11 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_A_LOSOUT_N_MSB 11 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_A_LOSOUT_N_LSB 11 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_A_LOSOUT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_A_LOSOUT_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_B_LOSOUT_N_MASK 0x00000400 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_B_LOSOUT_N_SHIFT 10 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_B_LOSOUT_N_MSB 10 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_B_LOSOUT_N_LSB 10 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_B_LOSOUT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_QK_B_LOSOUT_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_NR_MASK 0x00000200 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_NR_SHIFT 9 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_NR_MSB 9 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_NR_LSB 9 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_NR_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_NR_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_NR_MASK 0x00000100 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_NR_SHIFT 8 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_NR_MSB 8 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_NR_LSB 8 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_NR_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_NR_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_INT_N_MASK 0x00000080 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_INT_N_SHIFT 7 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_INT_N_MSB 7 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_INT_N_LSB 7 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_A_INT_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_INT_N_MASK 0x00000040 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_INT_N_SHIFT 6 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_INT_N_MSB 6 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_INT_N_LSB 6 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_XFP_B_INT_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_A_MASK 0x00000020 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_A_SHIFT 5 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_A_MSB 5 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_A_LSB 5 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_A_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_A_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_B_MASK 0x00000010 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_B_SHIFT 4 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_B_MSB 4 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_B_LSB 4 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_B_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_OVER_TEMP_B_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_A_MASK 0x00000008 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_A_SHIFT 3 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_A_MSB 3 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_A_LSB 3 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_A_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_A_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_B_MASK 0x00000004 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_B_SHIFT 2 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_B_MSB 2 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_B_LSB 2 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_B_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_POWER_FAIL_B_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC1_INT_N_MASK 0x00000002 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC1_INT_N_SHIFT 1 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC1_INT_N_MSB 1 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC1_INT_N_LSB 1 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC1_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC1_INT_N_DEFAULT 0x00000000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC0_INT_N_MASK 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC0_INT_N_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC0_INT_N_MSB 0 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC0_INT_N_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC0_INT_N_TYPE (SAND_HAL_TYPE_READ) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MAC0_INT_N_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_INTERRUPT_MASK */ +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_BME_TIMEOUT_DISINT_MASK 0x00002000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_BME_TIMEOUT_DISINT_SHIFT 13 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_BME_TIMEOUT_DISINT_MSB 13 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_BME_TIMEOUT_DISINT_LSB 13 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_BME_TIMEOUT_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_BME_TIMEOUT_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_MASK 0x00001000 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_SHIFT 12 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_MSB 12 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_LSB 12 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC_TIMEOUT_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_MASK 0x00000800 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_SHIFT 11 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_MSB 11 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_LSB 11 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_A_LOSOUT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_MASK 0x00000400 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_SHIFT 10 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_MSB 10 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_LSB 10 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_QK_B_LOSOUT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_NR_DISINT_MASK 0x00000200 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_NR_DISINT_SHIFT 9 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_NR_DISINT_MSB 9 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_NR_DISINT_LSB 9 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_NR_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_NR_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_NR_DISINT_MASK 0x00000100 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_NR_DISINT_SHIFT 8 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_NR_DISINT_MSB 8 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_NR_DISINT_LSB 8 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_NR_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_NR_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_INT_N_DISINT_MASK 0x00000080 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_INT_N_DISINT_SHIFT 7 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_INT_N_DISINT_MSB 7 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_INT_N_DISINT_LSB 7 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_A_INT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_INT_N_DISINT_MASK 0x00000040 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_INT_N_DISINT_SHIFT 6 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_INT_N_DISINT_MSB 6 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_INT_N_DISINT_LSB 6 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_XFP_B_INT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_A_DISINT_MASK 0x00000020 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_A_DISINT_SHIFT 5 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_A_DISINT_MSB 5 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_A_DISINT_LSB 5 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_A_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_A_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_B_DISINT_MASK 0x00000010 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_B_DISINT_SHIFT 4 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_B_DISINT_MSB 4 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_B_DISINT_LSB 4 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_B_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_OVER_TEMP_B_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_A_DISINT_MASK 0x00000008 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_A_DISINT_SHIFT 3 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_A_DISINT_MSB 3 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_A_DISINT_LSB 3 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_A_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_A_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_B_DISINT_MASK 0x00000004 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_B_DISINT_SHIFT 2 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_B_DISINT_MSB 2 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_B_DISINT_LSB 2 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_B_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_POWER_FAIL_B_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC1_INT_N_DISINT_MASK 0x00000002 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC1_INT_N_DISINT_SHIFT 1 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC1_INT_N_DISINT_MSB 1 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC1_INT_N_DISINT_LSB 1 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC1_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC1_INT_N_DISINT_DEFAULT 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC0_INT_N_DISINT_MASK 0x00000001 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC0_INT_N_DISINT_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC0_INT_N_DISINT_MSB 0 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC0_INT_N_DISINT_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC0_INT_N_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_INTERRUPT_MASK_MAC0_INT_N_DISINT_DEFAULT 0x00000001 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_SCRATCH */ +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_TEST_BITS_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_TEST_BITS_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_TEST_BITS_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_TEST_BITS_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_TEST_BITS_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_TEST_BITS_DEFAULT 0x00000000 + +/* ================================================================ + * Field info for register XC_XCVR_CNTL_SCRATCH_MASK */ +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_TEST_BITS_DISINT_MASK 0xffffffff +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_TEST_BITS_DISINT_SHIFT 0 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_TEST_BITS_DISINT_MSB 31 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_TEST_BITS_DISINT_LSB 0 +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_TEST_BITS_DISINT_TYPE (SAND_HAL_TYPE_WRITE) +#define SAND_HAL_XC_XCVR_CNTL_SCRATCH_MASK_TEST_BITS_DISINT_DEFAULT 0xffffffff + +#endif /* matches #ifndef HAL_XC_AUTO_H */ diff --git a/board/sandburst/metrobox/init.S b/board/sandburst/metrobox/init.S new file mode 100644 index 0000000..e398f00 --- /dev/null +++ b/board/sandburst/metrobox/init.S @@ -0,0 +1,99 @@ +/* +* Copyright (C) 2005 +* Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com +* +* See file CREDITS for list of people who contributed to this +* project. +* +* 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 <ppc_asm.tmpl> +#include <config.h> + +/* General */ +#define TLB_VALID 0x00000200 + +/* Supported page sizes */ + +#define SZ_1K 0x00000000 +#define SZ_4K 0x00000010 +#define SZ_16K 0x00000020 +#define SZ_64K 0x00000030 +#define SZ_256K 0x00000040 +#define SZ_1M 0x00000050 +#define SZ_16M 0x00000070 +#define SZ_256M 0x00000090 + +/* Storage attributes */ +#define SA_W 0x00000800 /* Write-through */ +#define SA_I 0x00000400 /* Caching inhibited */ +#define SA_M 0x00000200 /* Memory coherence */ +#define SA_G 0x00000100 /* Guarded */ +#define SA_E 0x00000080 /* Endian */ + +/* Access control */ +#define AC_X 0x00000024 /* Execute */ +#define AC_W 0x00000012 /* Write */ +#define AC_R 0x00000009 /* Read */ + +/* Some handy macros */ + +#define EPN(e) ((e) & 0xfffffc00) +#define TLB0(epn,sz) ( (EPN((epn)) | (sz) | TLB_VALID ) ) +#define TLB1(rpn,erpn) ( ((rpn)&0xfffffc00) | (erpn) ) +#define TLB2(a) ( (a)&0x00000fbf ) + +#define tlbtab_start\ + mflr r1 ;\ + bl 0f ; + +#define tlbtab_end\ + .long 0, 0, 0 ; \ +0: mflr r0 ; \ + mtlr r1 ; \ + blr ; + +#define tlbentry(epn,sz,rpn,erpn,attr)\ + .long TLB0(epn,sz),TLB1(rpn,erpn),TLB2(attr) + + +/************************************************************************** + * TLB TABLE + * + * This table is used by the cpu boot code to setup the initial tlb + * entries. Rather than make broad assumptions in the cpu source tree, + * this table lets each board set things up however they like. + * + * Pointer to the table is returned in r1 + * + *************************************************************************/ + + .section .bootpg,"ax" + .globl tlbtab + +tlbtab: + tlbtab_start + tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_R|AC_W|AC_X|SA_G|SA_I) + tlbentry( CFG_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_R|AC_W|SA_G|SA_I) + tlbentry( CFG_ISRAM_BASE, SZ_256K, 0x80000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I) + tlbentry( CFG_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_SDRAM_BASE+0x10000000, SZ_256M, 0x10000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_SDRAM_BASE+0x20000000, SZ_256M, 0x20000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_SDRAM_BASE+0x30000000, SZ_256M, 0x30000000, 0, AC_R|AC_W|AC_X|SA_G|SA_I ) + tlbentry( CFG_PCI_BASE, SZ_256M, 0x00000000, 2, AC_R|AC_W|SA_G|SA_I ) + tlbentry( CFG_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_R|AC_W|SA_G|SA_I ) + tlbtab_end diff --git a/board/sandburst/metrobox/metrobox.c b/board/sandburst/metrobox/metrobox.c new file mode 100644 index 0000000..869367d --- /dev/null +++ b/board/sandburst/metrobox/metrobox.c @@ -0,0 +1,543 @@ +/* + * Copyright (c) 2005 + * Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 <config.h> +#include <common.h> +#include <command.h> +#include "metrobox.h" +#include "metrobox_version.h" +#include <asm/processor.h> +#include <asm/io.h> +#include <spd_sdram.h> +#include <i2c.h> +#include "../common/ppc440gx_i2c.h" +#include "../common/sb_common.h" + +void fpga_init (void); + +METROBOX_BOARD_ID_ST board_id_as[] = +{ {"Undefined"}, /* Not specified */ + {"2x10Gb"}, /* 2 ports, 10 GbE */ + {"20x1Gb"}, /* 20 ports, 1 GbE */ + {"Reserved"}, /* Reserved for future use */ +}; + +/************************************************************************* + * board_early_init_f + * + * Setup chip selects, initialize the Opto-FPGA, initialize + * interrupt polarity and triggers. + ************************************************************************/ +int board_early_init_f (void) +{ + ppc440_gpio_regs_t *gpio_regs; + + /* Enable GPIO interrupts */ + mtsdr(sdr_pfc0, 0x00103E00); + + /* Setup access for LEDs, and system topology info */ + gpio_regs = (ppc440_gpio_regs_t *)CFG_GPIO_BASE; + gpio_regs->open_drain = SBCOMMON_GPIO_SYS_LEDS; + gpio_regs->tri_state = SBCOMMON_GPIO_DBGLEDS; + + /* Turn on all the leds for now */ + gpio_regs->out = SBCOMMON_GPIO_LEDS; + + /*--------------------------------------------------------------------+ + | Initialize EBC CONFIG + +-------------------------------------------------------------------*/ + mtebc(xbcfg, + EBC_CFG_LE_UNLOCK | EBC_CFG_PTD_ENABLE | + EBC_CFG_RTC_64PERCLK | EBC_CFG_ATC_PREVIOUS | + EBC_CFG_DTC_PREVIOUS | EBC_CFG_CTC_PREVIOUS | + EBC_CFG_EMC_DEFAULT | EBC_CFG_PME_DISABLE | + EBC_CFG_PR_32); + + /*--------------------------------------------------------------------+ + | 1/2 MB FLASH. Initialize bank 0 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb0ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(1)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb0cr, EBC_BXCR_BAS_ENCODE(CFG_FLASH_BASE) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_8BIT); + /*--------------------------------------------------------------------+ + | 8KB NVRAM/RTC. Initialize bank 1 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb1ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(10) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(1)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb1cr, EBC_BXCR_BAS_ENCODE(0x48000000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_8BIT); + + /*--------------------------------------------------------------------+ + | Compact Flash, uses 2 Chip Selects (2 & 6) + +-------------------------------------------------------------------*/ + mtebc(pb2ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(0)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb2cr, EBC_BXCR_BAS_ENCODE(0xF0000000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_16BIT); + + /*--------------------------------------------------------------------+ + | OPTO & OFEM FPGA. Initialize bank 3 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb3ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + mtebc(pb3cr, EBC_BXCR_BAS_ENCODE(0x48200000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + /*--------------------------------------------------------------------+ + | MAC A for metrobox + | MAC A & B for Kamino. OFEM FPGA decodes the addresses + | Initialize bank 4 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb4ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + mtebc(pb4cr, EBC_BXCR_BAS_ENCODE(0x48600000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + /*--------------------------------------------------------------------+ + | Metrobox MAC B Initialize bank 5 with default values. + | KA REF FPGA Initialize bank 5 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb5ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + mtebc(pb5cr, EBC_BXCR_BAS_ENCODE(0x48700000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + /*--------------------------------------------------------------------+ + | Compact Flash, uses 2 Chip Selects (2 & 6) + +-------------------------------------------------------------------*/ + mtebc(pb6ap, + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(8) | + EBC_BXAP_BCE_DISABLE | EBC_BXAP_CSN_ENCODE(1) | + EBC_BXAP_OEN_ENCODE(1)| EBC_BXAP_WBN_ENCODE(1) | + EBC_BXAP_WBF_ENCODE(0)| EBC_BXAP_TH_ENCODE(1) | + EBC_BXAP_RE_DISABLED | EBC_BXAP_BEM_WRITEONLY | + EBC_BXAP_PEN_DISABLED); + + mtebc(pb6cr, EBC_BXCR_BAS_ENCODE(0xF0100000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_16BIT); + + /*--------------------------------------------------------------------+ + | BME-32. Initialize bank 7 with default values. + +-------------------------------------------------------------------*/ + mtebc(pb7ap, + EBC_BXAP_RE_ENABLED | EBC_BXAP_SOR_NONDELAYED | + EBC_BXAP_BME_DISABLED | EBC_BXAP_TWT_ENCODE(3) | + EBC_BXAP_TH_ENCODE(1) | EBC_BXAP_WBF_ENCODE(0) | + EBC_BXAP_CSN_ENCODE(1) | EBC_BXAP_PEN_DISABLED | + EBC_BXAP_OEN_ENCODE(1) | EBC_BXAP_BEM_RW); + + mtebc(pb7cr, EBC_BXCR_BAS_ENCODE(0x48500000) | + EBC_BXCR_BS_1MB | EBC_BXCR_BU_RW | EBC_BXCR_BW_32BIT); + + /*--------------------------------------------------------------------+ + * Setup the interrupt controller polarities, triggers, etc. + +-------------------------------------------------------------------*/ + mtdcr (uic0sr, 0xffffffff); /* clear all */ + mtdcr (uic0er, 0x00000000); /* disable all */ + mtdcr (uic0cr, 0x00000000); /* all non- critical */ + mtdcr (uic0pr, 0xfffffe03); /* polarity */ + mtdcr (uic0tr, 0x01c00000); /* trigger edge vs level */ + mtdcr (uic0vr, 0x00000001); /* int31 highest, base=0x000 */ + mtdcr (uic0sr, 0xffffffff); /* clear all */ + + mtdcr (uic1sr, 0xffffffff); /* clear all */ + mtdcr (uic1er, 0x00000000); /* disable all */ + mtdcr (uic1cr, 0x00000000); /* all non-critical */ + mtdcr (uic1pr, 0xffffc8ff); /* polarity */ + mtdcr (uic1tr, 0x00ff0000); /* trigger edge vs level */ + mtdcr (uic1vr, 0x00000001); /* int31 highest, base=0x000 */ + mtdcr (uic1sr, 0xffffffff); /* clear all */ + + mtdcr (uic2sr, 0xffffffff); /* clear all */ + mtdcr (uic2er, 0x00000000); /* disable all */ + mtdcr (uic2cr, 0x00000000); /* all non-critical */ + mtdcr (uic2pr, 0xffff83ff); /* polarity */ + mtdcr (uic2tr, 0x00ff8c0f); /* trigger edge vs level */ + mtdcr (uic2vr, 0x00000001); /* int31 highest, base=0x000 */ + mtdcr (uic2sr, 0xffffffff); /* clear all */ + + mtdcr (uicb0sr, 0xfc000000); /* clear all */ + mtdcr (uicb0er, 0x00000000); /* disable all */ + mtdcr (uicb0cr, 0x00000000); /* all non-critical */ + mtdcr (uicb0pr, 0xfc000000); + mtdcr (uicb0tr, 0x00000000); + mtdcr (uicb0vr, 0x00000001); + + fpga_init(); + + return 0; +} + +/************************************************************************* + * checkboard + * + * Dump pertinent info to the console + ************************************************************************/ +int checkboard (void) +{ + sys_info_t sysinfo; + unsigned char brd_rev, brd_id; + unsigned short sernum; + unsigned char opto_rev, opto_id; + OPTO_FPGA_REGS_ST *opto_ps; + + opto_ps = (OPTO_FPGA_REGS_ST *)CFG_FPGA_BASE; + + opto_rev = (unsigned char)((opto_ps->revision_ul & + SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_MASK) + >> SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_SHIFT); + + opto_id = (unsigned char)((opto_ps->revision_ul & + SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_MASK) + >> SAND_HAL_XC_XCVR_CNTL_REVISION_IDENTIFICATION_SHIFT); + + brd_rev = (unsigned char)((opto_ps->boardinfo_ul & + SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_MASK) + >> SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_REV_SHIFT); + + brd_id = (unsigned char)((opto_ps->boardinfo_ul & + SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_MASK) + >> SAND_HAL_XC_XCVR_CNTL_BRD_INFO_BRD_ID_SHIFT); + + get_sys_info (&sysinfo); + + sernum = sbcommon_get_serial_number(); + printf ("Board: Sandburst Corporation MetroBox Serial Number: %d\n", sernum); + printf ("%s\n", METROBOX_U_BOOT_REL_STR); + + printf ("Built %s %s by %s\n", __DATE__, __TIME__, BUILDUSER); + if (sbcommon_get_master()) { + printf("Slot 0 - Master\nSlave board"); + if (sbcommon_secondary_present()) + printf(" present\n"); + else + printf(" not detected\n"); + } else { + printf("Slot 1 - Slave\n\n"); + } + + printf ("OptoFPGA ID:\t0x%02X\tRev: 0x%02X\n", opto_id, opto_rev); + printf ("Board Rev:\t0x%02X\tID: %s\n", brd_rev, board_id_as[brd_id]); + + printf ("\tVCO: %lu MHz\n", sysinfo.freqVCOMhz / 1000000); + printf ("\tCPU: %lu MHz\n", sysinfo.freqProcessor / 1000000); + printf ("\tPLB: %lu MHz\n", sysinfo.freqPLB / 1000000); + printf ("\tOPB: %lu MHz\n", sysinfo.freqOPB / 1000000); + printf ("\tEPB: %lu MHz\n", sysinfo.freqEPB / 1000000); + + + /* Fix the ack in the bme 32 */ + udelay(5000); + out32(CFG_BME32_BASE + 0x0000000C, 0x00000001); + asm("eieio"); + + + return (0); +} + +/************************************************************************* + * misc_init_f + * + * Initialize I2C bus one to gain access to the fans + ************************************************************************/ +int misc_init_f (void) +{ + /* Turn on i2c bus 1 */ + puts ("I2C1: "); + i2c1_init (CFG_I2C_SPEED, CFG_I2C_SLAVE); + puts ("ready\n"); + + /* Turn on fans */ + sbcommon_fans(); + + return (0); +} + +/************************************************************************* + * misc_init_r + * + * Do nothing. + ************************************************************************/ +int misc_init_r (void) +{ + unsigned short sernum; + char envstr[255]; + unsigned char opto_rev; + OPTO_FPGA_REGS_ST *opto_ps; + + opto_ps = (OPTO_FPGA_REGS_ST *)CFG_FPGA_BASE; + + if(NULL != getenv("secondserial")) { + puts("secondserial is set, switching to second serial port\n"); + setenv("stderr", "serial1"); + setenv("stdout", "serial1"); + setenv("stdin", "serial1"); + } + + setenv("ubrelver", METROBOX_U_BOOT_REL_STR); + + memset(envstr, 0, 255); + sprintf (envstr, "Built %s %s by %s", __DATE__, __TIME__, BUILDUSER); + setenv("bldstr", envstr); + saveenv(); + + if( getenv("autorecover")) { + setenv("autorecover", NULL); + saveenv(); + sernum = sbcommon_get_serial_number(); + + printf("\nSetting up environment for automatic filesystem recovery\n"); + /* + * Setup default bootargs + */ + memset(envstr, 0, 255); + sprintf(envstr, "console=ttyS0,9600 root=/dev/ram0 " + "rw ip=10.100.60.%d:::255.255.0.0:metrobox%d:eth0:none idebus=33", + sernum, sernum); + setenv("bootargs", envstr); + + /* + * Setup Default boot command + */ + setenv("bootcmd", "fatload ide 0 8000000 pimage.metrobox;" + "fatload ide 0 8100000 pramdisk;" + "bootm 8000000 8100000"); + + printf("Done. Please type allow the system to continue to boot\n"); + } + + if( getenv("fakeled")) { + setenv("bootdelay", "-1"); + saveenv(); + printf("fakeled is set. use 'setenv fakeled ; setenv bootdelay 5 ; saveenv' to recover\n"); + opto_rev = (unsigned char)((opto_ps->revision_ul & + SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_MASK) + >> SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_SHIFT); + + if(0x12 <= opto_rev) { + opto_ps->control_ul &= ~ SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_MASK; + } + } + + return (0); +} + +/************************************************************************* + * ide_set_reset + ************************************************************************/ +#ifdef CONFIG_IDE_RESET +void ide_set_reset(int on) +{ + OPTO_FPGA_REGS_ST *opto_ps; + opto_ps = (OPTO_FPGA_REGS_ST *)CFG_FPGA_BASE; + + if (on) { /* assert RESET */ + opto_ps->reset_ul &= ~SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MASK; + } else { /* release RESET */ + opto_ps->reset_ul |= SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MASK; + } +} +#endif /* CONFIG_IDE_RESET */ + +/************************************************************************* + * fpga_init + ************************************************************************/ +void fpga_init(void) +{ + OPTO_FPGA_REGS_ST *opto_ps; + unsigned char opto_rev; + unsigned long tmp; + + /* Ensure we have power all around */ + udelay(500); + + /* + * Take appropriate hw bits out of reset + */ + opto_ps = (OPTO_FPGA_REGS_ST *)CFG_FPGA_BASE; + + tmp = + SAND_HAL_XC_XCVR_CNTL_RESET_MAC1_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_MAC0_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_BME_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_ACE_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_CF_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_QE_A_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_IFE_A_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_EFE_A_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_QE_B_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_IFE_B_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_EFE_B_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_LOCK1_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_LOCK0_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX1_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_I2C_MUX0_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_PHY0_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_PHY1_RESET_N_MASK | + SAND_HAL_XC_XCVR_CNTL_RESET_SLAVE_RESET_N_MASK; + opto_ps->reset_ul = tmp; + /* + * Turn on the 'Slow Blink' for the System Error Led. + * Ensure FPGA rev is up to at least rev 0x12 + */ + opto_rev = (unsigned char)((opto_ps->revision_ul & + SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_MASK) + >> SAND_HAL_XC_XCVR_CNTL_REVISION_REVISION_SHIFT); + if(0x12 <= opto_rev) { + opto_ps->control_ul |= 1 << SAND_HAL_XC_XCVR_CNTL_CNTL_ERROR_LED_SHIFT; + } + + asm("eieio"); + + return; +} + +int metroboxSetupVars(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + unsigned short sernum; + char envstr[255]; + + sernum = sbcommon_get_serial_number(); + + memset(envstr, 0, 255); + /* + * Setup our ip address + */ + sprintf(envstr, "10.100.60.%d", sernum); + + setenv("ipaddr", envstr); + /* + * Setup the host ip address + */ + setenv("serverip", "10.100.17.10"); + + /* + * Setup default bootargs + */ + memset(envstr, 0, 255); + + sprintf(envstr, "console=ttyS0,9600 root=/dev/nfs " + "rw nfsroot=10.100.17.10:/home/metrobox/mbc%d " + "nfsaddrs=10.100.60.%d:10.100.17.10:10.100.1.1" + ":255.255.0.0:metrobox%d.sandburst.com:eth0:none idebus=33", + sernum, sernum, sernum); + + setenv("bootargs_nfs", envstr); + setenv("bootargs", envstr); + + /* + * Setup CF bootargs + */ + memset(envstr, 0, 255); + sprintf(envstr, "console=ttyS0,9600 root=/dev/hda2 " + "rw ip=10.100.60.%d:::255.255.0.0:metrobox%d:eth0:none idebus=33", + sernum, sernum); + + setenv("bootargs_cf", envstr); + + /* + * Setup Default boot command + */ + setenv("bootcmd_tftp", "tftp 8000000 pImage.metrobox;bootm 8000000"); + setenv("bootcmd", "tftp 8000000 pImage.metrobox;bootm 8000000"); + + /* + * Setup compact flash boot command + */ + setenv("bootcmd_cf", "fatload ide 0 8000000 pimage.metrobox;bootm 8000000"); + + saveenv(); + + + return(1); +} + +int metroboxRecover(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ + unsigned short sernum; + char envstr[255]; + + sernum = sbcommon_get_serial_number(); + + printf("\nSetting up environment for filesystem recovery\n"); + /* + * Setup default bootargs + */ + memset(envstr, 0, 255); + sprintf(envstr, "console=ttyS0,9600 root=/dev/ram0 " + "rw ip=10.100.60.%d:::255.255.0.0:metrobox%d:eth0:none", + sernum, sernum); + + setenv("bootargs", envstr); + + /* + * Setup Default boot command + */ + setenv("bootcmd", "fatload ide 0 8000000 pimage.metrobox;" + "fatload ide 0 8100000 pramdisk;" + "bootm 8000000 8100000"); + + printf("Done. Please type boot<cr>.\nWhen the kernel has booted" + " please type fsrecover.sh<cr>\n"); + + return(1); +} + +U_BOOT_CMD(mbsetup, 1, 1, metroboxSetupVars, + "mbsetup - Set environment to factory defaults\n", NULL); + +U_BOOT_CMD(mbrecover, 1, 1, metroboxRecover, + "mbrecover - Set environment to allow for fs recovery\n", NULL); diff --git a/board/sandburst/metrobox/metrobox.h b/board/sandburst/metrobox/metrobox.h new file mode 100644 index 0000000..cb7a83c --- /dev/null +++ b/board/sandburst/metrobox/metrobox.h @@ -0,0 +1,45 @@ +#ifndef __METROBOX_H__ +#define __METROBOX_H__ +/* + * (C) Copyright 2005 + * Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +typedef struct metrobox_board_id_s { + const char name[40]; +} METROBOX_BOARD_ID_ST, *METROBOX_BOARD_ID_PST; + + +/* Metrobox Opto-FPGA registers and definitions */ +#include "hal_xc_auto.h" +typedef struct opto_fpga_regs_s { + volatile unsigned long revision_ul; /* Read Only */ + volatile unsigned long reset_ul; /* Read/Write */ + volatile unsigned long status_ul; /* Read Only */ + volatile unsigned long interrupt_ul; /* Read Only */ + volatile unsigned long mask_ul; /* Read/Write */ + volatile unsigned long scratch_ul; /* Read/Write */ + volatile unsigned long scrmask_ul; /* Read/Write */ + volatile unsigned long control_ul; /* Read/Write */ + volatile unsigned long boardinfo_ul; /* Read Only */ +} OPTO_FPGA_REGS_ST __attribute__ ((packed)), *OPTO_FPGA_REGS_PST; + +#endif /* __METROBOX_H__ */ diff --git a/board/sandburst/metrobox/metrobox_version.h b/board/sandburst/metrobox/metrobox_version.h new file mode 100644 index 0000000..1b6fee5 --- /dev/null +++ b/board/sandburst/metrobox/metrobox_version.h @@ -0,0 +1,27 @@ +#ifndef _METROBOX_VERSION_H_ +#define _METROBOX_VERSION_H_ +/* + * (C) Copyright 2005 + * Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ +#define METROBOX_U_BOOT_REL_STR "Release 2.0.3" + +#endif diff --git a/board/sandburst/metrobox/u-boot.lds b/board/sandburst/metrobox/u-boot.lds new file mode 100644 index 0000000..0fdb166 --- /dev/null +++ b/board/sandburst/metrobox/u-boot.lds @@ -0,0 +1,156 @@ +/* + * (C) Copyright 2005 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +SECTIONS +{ + .resetvec 0xFFFFFFFC : + { + *(.resetvec) + } = 0xffff + + .bootpg 0xFFFFF000 : + { + cpu/ppc4xx/start.o (.bootpg) + } = 0xffff + + /* Read-only sections, merged into text segment: */ + . = + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } + .plt : { *(.plt) } + .text : + { + /* WARNING - the following is hand-optimized to fit within */ + /* the sector layout of our flash chips! XXX FIXME XXX */ + + cpu/ppc4xx/start.o (.text) + board/sandburst/metrobox/init.o (.text) + cpu/ppc4xx/kgdb.o (.text) + cpu/ppc4xx/traps.o (.text) + cpu/ppc4xx/interrupts.o (.text) + cpu/ppc4xx/serial.o (.text) + cpu/ppc4xx/cpu_init.o (.text) + cpu/ppc4xx/speed.o (.text) + cpu/ppc4xx/440gx_enet.o (.text) + common/dlmalloc.o (.text) + lib_generic/crc32.o (.text) + lib_ppc/extable.o (.text) + lib_generic/zlib.o (.text) + +/* . = env_offset;*/ +/* common/environment.o(.text)*/ + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + *(.rodata.str1.4) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x00FF) & 0xFFFFFF00; + _erotext = .; + PROVIDE (erotext = .); + .reloc : + { + *(.got) + _GOT2_TABLE_ = .; + *(.got2) + _FIXUP_TABLE_ = .; + *(.fixup) + } + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; + __fixup_entries = (. - _FIXUP_TABLE_)>>2; + + .data : + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.dynamic) + CONSTRUCTORS + } + _edata = .; + PROVIDE (edata = .); + + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); +} diff --git a/board/sandburst/metrobox/u-boot.lds.debug b/board/sandburst/metrobox/u-boot.lds.debug new file mode 100644 index 0000000..459a1d8 --- /dev/null +++ b/board/sandburst/metrobox/u-boot.lds.debug @@ -0,0 +1,145 @@ +/* + * (C) Copyright 2002-2005 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * Travis B. Sawyer, Sandburst Corporation, tsawyer@sandburst.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } + .plt : { *(.plt) } + .text : + { + /* WARNING - the following is hand-optimized to fit within */ + /* the sector layout of our flash chips! XXX FIXME XXX */ + + cpu/ppc4xx/start.o (.text) + board/sandburst/metrobox/init.o (.text) + cpu/ppc4xx/kgdb.o (.text) + cpu/ppc4xx/traps.o (.text) + cpu/ppc4xx/interrupts.o (.text) + cpu/ppc4xx/serial.o (.text) + cpu/ppc4xx/cpu_init.o (.text) + cpu/ppc4xx/speed.o (.text) + cpu/ppc4xx/440gx_enet.o (.text) + common/dlmalloc.o (.text) + lib_generic/crc32.o (.text) + lib_ppc/extable.o (.text) + lib_generic/zlib.o (.text) + +/* common/environment.o(.text) */ + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + *(.rodata.str1.4) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x0FFF) & 0xFFFFF000; + _erotext = .; + PROVIDE (erotext = .); + .reloc : + { + *(.got) + _GOT2_TABLE_ = .; + *(.got2) + _FIXUP_TABLE_ = .; + *(.fixup) + } + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; + __fixup_entries = (. - _FIXUP_TABLE_)>>2; + + .data : + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.dynamic) + CONSTRUCTORS + } + _edata = .; + PROVIDE (edata = .); + + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); +} diff --git a/board/stxxtc/Makefile b/board/stxxtc/Makefile new file mode 100644 index 0000000..8c529a0 --- /dev/null +++ b/board/stxxtc/Makefile @@ -0,0 +1,40 @@ +# +# (C) Copyright 2000-2004 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# See file CREDITS for list of people who contributed to this +# project. +# +# 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 $(TOPDIR)/config.mk + +LIB = lib$(BOARD).a + +OBJS = $(BOARD).o + +$(LIB): .depend $(OBJS) + $(AR) crv $@ $(OBJS) + +######################################################################### + +.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) + $(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +sinclude .depend + +######################################################################### diff --git a/board/stxxtc/config.mk b/board/stxxtc/config.mk new file mode 100644 index 0000000..f5dc034 --- /dev/null +++ b/board/stxxtc/config.mk @@ -0,0 +1,28 @@ +# +# (C) Copyright 2000-2004 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# See file CREDITS for list of people who contributed to this +# project. +# +# 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 +# + +# +# STx XTc +# + +TEXT_BASE = 0x40F00000 diff --git a/board/stxxtc/stxxtc.c b/board/stxxtc/stxxtc.c new file mode 100644 index 0000000..b38b4be --- /dev/null +++ b/board/stxxtc/stxxtc.c @@ -0,0 +1,638 @@ +/* + * (C) Copyright 2000-2004 + * Pantelis Antoniou, Intracom S.A., panto@intracom.gr + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * (C) Copyright 2005 + * Dan Malek, Embedded Edge, LLC, dan@embeddededge.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +/* + * U-Boot port on STx XTc board + * Mostly copied from Netta + */ + +#include <common.h> +#include <miiphy.h> + +#include "mpc8xx.h" + +#ifdef CONFIG_HW_WATCHDOG +#include <watchdog.h> +#endif + +/****************************************************************/ + +/* some sane bit macros */ +#define _BD(_b) (1U << (31-(_b))) +#define _BDR(_l, _h) (((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1)) + +#define _BW(_b) (1U << (15-(_b))) +#define _BWR(_l, _h) (((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1)) + +#define _BB(_b) (1U << (7-(_b))) +#define _BBR(_l, _h) (((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1)) + +#define _B(_b) _BD(_b) +#define _BR(_l, _h) _BDR(_l, _h) + +/****************************************************************/ + +/* + * Check Board Identity: + * + * Return 1 always. + */ + +int checkboard(void) +{ + printf ("Silicon Turnkey eXpress XTc\n"); + return (0); +} + +/****************************************************************/ + +#define _NOT_USED_ 0xFFFFFFFF + +/****************************************************************/ + +#define CS_0000 0x00000000 +#define CS_0001 0x10000000 +#define CS_0010 0x20000000 +#define CS_0011 0x30000000 +#define CS_0100 0x40000000 +#define CS_0101 0x50000000 +#define CS_0110 0x60000000 +#define CS_0111 0x70000000 +#define CS_1000 0x80000000 +#define CS_1001 0x90000000 +#define CS_1010 0xA0000000 +#define CS_1011 0xB0000000 +#define CS_1100 0xC0000000 +#define CS_1101 0xD0000000 +#define CS_1110 0xE0000000 +#define CS_1111 0xF0000000 + +#define BS_0000 0x00000000 +#define BS_0001 0x01000000 +#define BS_0010 0x02000000 +#define BS_0011 0x03000000 +#define BS_0100 0x04000000 +#define BS_0101 0x05000000 +#define BS_0110 0x06000000 +#define BS_0111 0x07000000 +#define BS_1000 0x08000000 +#define BS_1001 0x09000000 +#define BS_1010 0x0A000000 +#define BS_1011 0x0B000000 +#define BS_1100 0x0C000000 +#define BS_1101 0x0D000000 +#define BS_1110 0x0E000000 +#define BS_1111 0x0F000000 + +#define GPL0_AAAA 0x00000000 +#define GPL0_AAA0 0x00200000 +#define GPL0_AAA1 0x00300000 +#define GPL0_000A 0x00800000 +#define GPL0_0000 0x00A00000 +#define GPL0_0001 0x00B00000 +#define GPL0_111A 0x00C00000 +#define GPL0_1110 0x00E00000 +#define GPL0_1111 0x00F00000 + +#define GPL1_0000 0x00000000 +#define GPL1_0001 0x00040000 +#define GPL1_1110 0x00080000 +#define GPL1_1111 0x000C0000 + +#define GPL2_0000 0x00000000 +#define GPL2_0001 0x00010000 +#define GPL2_1110 0x00020000 +#define GPL2_1111 0x00030000 + +#define GPL3_0000 0x00000000 +#define GPL3_0001 0x00004000 +#define GPL3_1110 0x00008000 +#define GPL3_1111 0x0000C000 + +#define GPL4_0000 0x00000000 +#define GPL4_0001 0x00001000 +#define GPL4_1110 0x00002000 +#define GPL4_1111 0x00003000 + +#define GPL5_0000 0x00000000 +#define GPL5_0001 0x00000400 +#define GPL5_1110 0x00000800 +#define GPL5_1111 0x00000C00 +#define LOOP 0x00000080 + +#define EXEN 0x00000040 + +#define AMX_COL 0x00000000 +#define AMX_ROW 0x00000020 +#define AMX_MAR 0x00000030 + +#define NA 0x00000008 + +#define UTA 0x00000004 + +#define TODT 0x00000002 + +#define LAST 0x00000001 + +#define A10_AAAA GPL0_AAAA +#define A10_AAA0 GPL0_AAA0 +#define A10_AAA1 GPL0_AAA1 +#define A10_000A GPL0_000A +#define A10_0000 GPL0_0000 +#define A10_0001 GPL0_0001 +#define A10_111A GPL0_111A +#define A10_1110 GPL0_1110 +#define A10_1111 GPL0_1111 + +#define RAS_0000 GPL1_0000 +#define RAS_0001 GPL1_0001 +#define RAS_1110 GPL1_1110 +#define RAS_1111 GPL1_1111 + +#define CAS_0000 GPL2_0000 +#define CAS_0001 GPL2_0001 +#define CAS_1110 GPL2_1110 +#define CAS_1111 GPL2_1111 + +#define WE_0000 GPL3_0000 +#define WE_0001 GPL3_0001 +#define WE_1110 GPL3_1110 +#define WE_1111 GPL3_1111 + +/* #define CAS_LATENCY 3 */ +#define CAS_LATENCY 2 + +const uint sdram_table[0x40] = { + +#if CAS_LATENCY == 3 + /* RSS */ + CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_0000 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */ + CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */ + _NOT_USED_, _NOT_USED_, + + /* RBS */ + CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_0001 | BS_1111 | A10_0001 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */ + CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_0001 | BS_0001 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL, /* PALL */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | TODT | LAST, /* NOP */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + + /* WSS */ + CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_0000 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, + + /* WBS */ + CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1111 | BS_1111 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0000 | AMX_COL, /* WRITE */ + CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1111 | BS_0000 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1111 | BS_0001 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA, /* PALL */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, +#endif + +#if CAS_LATENCY == 2 + /* RSS */ + CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_0001 | BS_0001 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */ + CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */ + _NOT_USED_, + _NOT_USED_, _NOT_USED_, + + /* RBS */ + CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_1111 | AMX_COL | UTA, /* READ */ + CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1111 | BS_0001 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1110 | BS_1111 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL, /* NOP */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */ + _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + + /* WSS */ + CS_0001 | BS_1111 | A10_AAA0 | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */ + CS_0000 | BS_0001 | A10_0001 | RAS_1110 | CAS_0001 | WE_0000 | AMX_COL | UTA, /* WRITE */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */ + _NOT_USED_, + _NOT_USED_, _NOT_USED_, + _NOT_USED_, + + /* WBS */ + CS_0001 | BS_1111 | A10_AAAA | RAS_0001 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* ACT */ + CS_1110 | BS_1110 | A10_0000 | RAS_1111 | CAS_1110 | WE_1110 | AMX_COL, /* NOP */ + CS_0001 | BS_0000 | A10_0000 | RAS_1111 | CAS_0001 | WE_0001 | AMX_COL, /* WRITE */ + CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1111 | BS_0000 | A10_0000 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL, /* NOP */ + CS_1110 | BS_0001 | A10_0001 | RAS_1110 | CAS_1111 | WE_1110 | AMX_COL | UTA, /* NOP */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | TODT | LAST, /* PALL */ + _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, + +#endif + + /* UPT */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_0001 | WE_1111 | AMX_COL | UTA | LOOP, /* ATRFR */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA, /* NOP */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | LOOP, /* NOP */ + CS_1111 | BS_1111 | A10_1111 | RAS_1111 | CAS_1111 | WE_1111 | AMX_COL | UTA | TODT | LAST, /* NOP */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, + + /* EXC */ + CS_0001 | BS_1111 | A10_1111 | RAS_0001 | CAS_1111 | WE_0001 | AMX_COL | UTA | LAST, + _NOT_USED_, + + /* REG */ + CS_1110 | BS_1111 | A10_1110 | RAS_1110 | CAS_1110 | WE_1110 | AMX_MAR | UTA, + CS_0001 | BS_1111 | A10_0001 | RAS_0001 | CAS_0001 | WE_0001 | AMX_MAR | UTA | LAST, +}; + +static const uint nandcs_table[0x40] = { + /* RSS */ + CS_1000 | GPL4_1111 | GPL5_1111 | UTA, + CS_0000 | GPL4_1110 | GPL5_1111 | UTA, + CS_0000 | GPL4_0000 | GPL5_1111 | UTA, + CS_0000 | GPL4_0000 | GPL5_1111 | UTA, + CS_0000 | GPL4_0000 | GPL5_1111, + CS_0000 | GPL4_0001 | GPL5_1111 | UTA, + CS_0000 | GPL4_1111 | GPL5_1111 | UTA, + CS_0011 | GPL4_1111 | GPL5_1111 | UTA | LAST, /* NOP */ + + /* RBS */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + + /* WSS */ + CS_1000 | GPL4_1111 | GPL5_1110 | UTA, + CS_0000 | GPL4_1111 | GPL5_0000 | UTA, + CS_0000 | GPL4_1111 | GPL5_0000 | UTA, + CS_0000 | GPL4_1111 | GPL5_0000 | UTA, + CS_0000 | GPL4_1111 | GPL5_0001 | UTA, + CS_0000 | GPL4_1111 | GPL5_1111 | UTA, + CS_0000 | GPL4_1111 | GPL5_1111, + CS_0011 | GPL4_1111 | GPL5_1111 | UTA | LAST, + + /* WBS */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + + /* UPT */ + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_, + + /* EXC */ + CS_0001 | LAST, + _NOT_USED_, + + /* REG */ + CS_1110 , + CS_0001 | LAST, +}; + +/* 0xC8 = 0b11001000 , CAS3, >> 2 = 0b00 11 0 010 */ +/* 0x88 = 0b10001000 , CAS2, >> 2 = 0b00 10 0 010 */ +#define MAR_SDRAM_INIT ((CAS_LATENCY << 6) | 0x00000008LU) + +/* 9 */ +#define CFG_MAMR ((CFG_MAMR_PTA << MAMR_PTA_SHIFT) | MAMR_PTAE | \ + MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 | \ + MAMR_RLFA_1X | MAMR_WLFA_1X | MAMR_TLFA_4X) + +void check_ram(unsigned int addr, unsigned int size) +{ + unsigned int i, j, v, vv; + volatile unsigned int *p; + unsigned int pv; + + p = (unsigned int *)addr; + pv = (unsigned int)p; + for (i = 0; i < size / sizeof(unsigned int); i++, pv += sizeof(unsigned int)) + *p++ = pv; + + p = (unsigned int *)addr; + for (i = 0; i < size / sizeof(unsigned int); i++) { + v = (unsigned int)p; + vv = *p; + if (vv != v) { + printf("%p: read %08x instead of %08x\n", p, vv, v); + hang(); + } + p++; + } + + for (j = 0; j < 5; j++) { + switch (j) { + case 0: v = 0x00000000; break; + case 1: v = 0xffffffff; break; + case 2: v = 0x55555555; break; + case 3: v = 0xaaaaaaaa; break; + default:v = 0xdeadbeef; break; + } + p = (unsigned int *)addr; + for (i = 0; i < size / sizeof(unsigned int); i++) { + *p = v; + vv = *p; + if (vv != v) { + printf("%p: read %08x instead of %08x\n", p, vv, v); + hang(); + } + *p = ~v; + p++; + } + } +} + +#define DO_LOOP do { for (;;) asm volatile ("nop" : : : "memory"); } while(0) + +long int initdram(int board_type) +{ + volatile immap_t *immap = (immap_t *) CFG_IMMR; + volatile memctl8xx_t *memctl = &immap->im_memctl; + long int size; + u32 d1, d2; + + upmconfig(UPMA, (uint *) sdram_table, sizeof(sdram_table) / sizeof(sdram_table[0])); + + /* + * Preliminary prescaler for refresh + */ + memctl->memc_mptpr = MPTPR_PTP_DIV8; + + memctl->memc_mar = MAR_SDRAM_INIT; /* 32-bit address to be output on the address bus if AMX = 0b11 */ + + /* + * Map controller bank 3 to the SDRAM bank at preliminary address. + */ + memctl->memc_or4 = CFG_OR4_PRELIM; + memctl->memc_br4 = CFG_BR4_PRELIM; + + memctl->memc_mamr = CFG_MAMR & ~MAMR_PTAE; /* no refresh yet */ + + udelay(200); + + /* perform SDRAM initialisation sequence */ + memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_A | MCR_MB_CS4 | MCR_MLCF(1) | MCR_MAD(0x3C); /* precharge all */ + udelay(1); + + memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_A | MCR_MB_CS4 | MCR_MLCF(2) | MCR_MAD(0x30); /* refresh 2 times(0) */ + udelay(1); + + memctl->memc_mcr = MCR_OP_RUN | MCR_UPM_A | MCR_MB_CS4 | MCR_MLCF(1) | MCR_MAD(0x3E); /* exception program (write mar)*/ + udelay(1); + + memctl->memc_mamr |= MAMR_PTAE; /* enable refresh */ + + udelay(10000); + + + d1 = 0xAA55AA55; + *(volatile u32 *)0 = d1; + d2 = *(volatile u32 *)0; + if (d1 != d2) { + printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2); + DO_LOOP; + } + + d1 = 0x55AA55AA; + *(volatile u32 *)0 = d1; + d2 = *(volatile u32 *)0; + if (d1 != d2) { + printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2); + DO_LOOP; + } + + d1 = 0x12345678; + *(volatile u32 *)0 = d1; + d2 = *(volatile u32 *)0; + if (d1 != d2) { + printf("DRAM fails: wrote 0x%08x read 0x%08x\n", d1, d2); + DO_LOOP; + } + + size = get_ram_size((long *)0, SDRAM_MAX_SIZE); + + return size; +} + +/* ------------------------------------------------------------------------- */ + +void reset_phys(void) +{ + int phyno; + unsigned short v; + + udelay(10000); + /* reset the damn phys */ + mii_init(); + + for (phyno = 0; phyno < 32; ++phyno) { + miiphy_read(phyno, PHY_PHYIDR1, &v); + if (v == 0xFFFF) + continue; + miiphy_write(phyno, PHY_BMCR, PHY_BMCR_POWD); + udelay(10000); + miiphy_write(phyno, PHY_BMCR, PHY_BMCR_RESET | PHY_BMCR_AUTON); + udelay(10000); + } +} + +/* ------------------------------------------------------------------------- */ + +/* GP = general purpose, SP = special purpose (on chip peripheral) */ + +/* bits that can have a special purpose or can be configured as inputs/outputs */ +#define PA_GP_INMASK _BW(6) +#define PA_GP_OUTMASK (_BW(7)) +#define PA_SP_MASK 0 +#define PA_ODR_VAL 0 +#define PA_GP_OUTVAL (_BW(7)) +#define PA_SP_DIRVAL 0 + +#define PB_GP_INMASK 0 +#define PB_GP_OUTMASK (_B(23)) +#define PB_SP_MASK 0 +#define PB_ODR_VAL 0 +#define PB_GP_OUTVAL (_B(23)) +#define PB_SP_DIRVAL 0 + +#define PC_GP_INMASK 0 +#define PC_GP_OUTMASK (_BW(15)) + +#define PC_SP_MASK 0 +#define PC_SOVAL 0 +#define PC_INTVAL 0 +#define PC_GP_OUTVAL 0 +#define PC_SP_DIRVAL 0 + +#define PE_GP_INMASK 0 +#define PE_GP_OUTMASK 0 +#define PE_GP_OUTVAL 0 + +#define PE_SP_MASK 0 +#define PE_ODR_VAL 0 +#define PE_SP_DIRVAL 0 + +int board_early_init_f(void) +{ + volatile immap_t *immap = (immap_t *) CFG_IMMR; + volatile iop8xx_t *ioport = &immap->im_ioport; + volatile cpm8xx_t *cpm = &immap->im_cpm; + volatile memctl8xx_t *memctl = &immap->im_memctl; + + (void)ioport; + (void)cpm; +#if 1 + /* NAND chip select */ + upmconfig(UPMB, (uint *) nandcs_table, sizeof(nandcs_table) / sizeof(nandcs_table[0])); + memctl->memc_or2 = ((0xFFFFFFFFLU & ~(NAND_SIZE - 1)) | OR_BI | OR_G5LS); + memctl->memc_br2 = ((NAND_BASE & BR_BA_MSK) | BR_PS_8 | BR_V | BR_MS_UPMB); + memctl->memc_mbmr = 0; /* all clear */ +#endif + + memctl->memc_br5 &= ~BR_V; + memctl->memc_br6 &= ~BR_V; + memctl->memc_br7 &= ~BR_V; + +#if 1 + ioport->iop_padat = PA_GP_OUTVAL; + ioport->iop_paodr = PA_ODR_VAL; + ioport->iop_padir = PA_GP_OUTMASK | PA_SP_DIRVAL; + ioport->iop_papar = PA_SP_MASK; + + cpm->cp_pbdat = PB_GP_OUTVAL; + cpm->cp_pbodr = PB_ODR_VAL; + cpm->cp_pbdir = PB_GP_OUTMASK | PB_SP_DIRVAL; + cpm->cp_pbpar = PB_SP_MASK; + + ioport->iop_pcdat = PC_GP_OUTVAL; + ioport->iop_pcdir = PC_GP_OUTMASK | PC_SP_DIRVAL; + ioport->iop_pcso = PC_SOVAL; + ioport->iop_pcint = PC_INTVAL; + ioport->iop_pcpar = PC_SP_MASK; + + cpm->cp_pedat = PE_GP_OUTVAL; + cpm->cp_peodr = PE_ODR_VAL; + cpm->cp_pedir = PE_GP_OUTMASK | PE_SP_DIRVAL; + cpm->cp_pepar = PE_SP_MASK; +#endif + + return 0; +} + +#if (CONFIG_COMMANDS & CFG_CMD_NAND) + +#include <linux/mtd/nand.h> + +extern ulong nand_probe(ulong physadr); +extern struct nand_chip nand_dev_desc[CFG_MAX_NAND_DEVICE]; + +void nand_init(void) +{ + unsigned long totlen; + + totlen = nand_probe(CFG_NAND_BASE); + printf ("%4lu MB\n", totlen >> 20); +} +#endif + +#ifdef CONFIG_HW_WATCHDOG + +void hw_watchdog_reset(void) +{ + /* XXX add here the really funky stuff */ +} + +#endif + +#ifdef CONFIG_SHOW_ACTIVITY + +/* called from timer interrupt every 1/CFG_HZ sec */ +void board_show_activity(ulong timestamp) +{ +} + +/* called when looping */ +void show_activity(int arg) +{ +} + +#endif + +#if defined(CFG_CONSOLE_IS_IN_ENV) && defined(CFG_CONSOLE_OVERWRITE_ROUTINE) +int overwrite_console(void) +{ + /* printf("overwrite_console called\n"); */ + return 0; +} +#endif + +extern int drv_phone_init(void); +extern int drv_phone_use_me(void); +extern int drv_phone_is_idle(void); + +int misc_init_r(void) +{ + return 0; +} + +int last_stage_init(void) +{ + reset_phys(); + + return 0; +} diff --git a/board/stxxtc/u-boot.lds b/board/stxxtc/u-boot.lds new file mode 100644 index 0000000..c3dac0e --- /dev/null +++ b/board/stxxtc/u-boot.lds @@ -0,0 +1,138 @@ +/* + * (C) Copyright 2000-2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } + .plt : { *(.plt) } + .text : + { + cpu/mpc8xx/start.o (.text) + cpu/mpc8xx/traps.o (.text) + common/dlmalloc.o (.text) + lib_ppc/ppcstring.o (.text) + lib_generic/vsprintf.o (.text) + lib_generic/crc32.o (.text) + lib_generic/zlib.o (.text) + lib_ppc/cache.o (.text) + lib_ppc/time.o (.text) + + . = DEFINED(env_offset) ? env_offset : .; + common/environment.o (.text) + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + *(.rodata.str1.4) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x00FF) & 0xFFFFFF00; + _erotext = .; + PROVIDE (erotext = .); + .reloc : + { + *(.got) + _GOT2_TABLE_ = .; + *(.got2) + _FIXUP_TABLE_ = .; + *(.fixup) + } + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; + __fixup_entries = (. - _FIXUP_TABLE_)>>2; + + .data : + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.dynamic) + CONSTRUCTORS + } + _edata = .; + PROVIDE (edata = .); + + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); +} diff --git a/board/stxxtc/u-boot.lds.debug b/board/stxxtc/u-boot.lds.debug new file mode 100644 index 0000000..21b7e6a --- /dev/null +++ b/board/stxxtc/u-boot.lds.debug @@ -0,0 +1,135 @@ +/* + * (C) Copyright 2000-2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } + .plt : { *(.plt) } + .text : + { + /* WARNING - the following is hand-optimized to fit within */ + /* the sector layout of our flash chips! XXX FIXME XXX */ + + cpu/mpc8xx/start.o (.text) + common/dlmalloc.o (.text) + lib_generic/vsprintf.o (.text) + lib_generic/crc32.o (.text) + + . = env_offset; + common/environment.o(.text) + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x0FFF) & 0xFFFFF000; + _erotext = .; + PROVIDE (erotext = .); + .reloc : + { + *(.got) + _GOT2_TABLE_ = .; + *(.got2) + _FIXUP_TABLE_ = .; + *(.fixup) + } + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; + __fixup_entries = (. - _FIXUP_TABLE_)>>2; + + .data : + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.dynamic) + CONSTRUCTORS + } + _edata = .; + PROVIDE (edata = .); + + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(4096); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(4096); + __init_end = .; + + __bss_start = .; + .bss : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + _end = . ; + PROVIDE (end = .); +} diff --git a/board/voiceblue/Makefile b/board/voiceblue/Makefile index 44be6ca..6302fa8 100644 --- a/board/voiceblue/Makefile +++ b/board/voiceblue/Makefile @@ -32,21 +32,23 @@ SOBJS := setup.o gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`) LOAD_ADDR = 0x10400000 +LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/eeprom.lds all: $(LIB) eeprom.srec eeprom.bin $(LIB): $(OBJS) $(SOBJS) $(AR) crv $@ $(OBJS) $(SOBJS) -eeprom.srec: eeprom.o - $(LD) -g -Ttext $(LOAD_ADDR) -o $(<:.o=) -e $(<:.o=) $^ \ +eeprom.srec: eeprom.o eeprom_start.o + $(LD) -T $(LDSCRIPT) -g -Ttext $(LOAD_ADDR) \ + -o $(<:.o=) -e $(<:.o=) $^ \ -L../../examples -lstubs \ -L../../lib_generic -lgeneric \ -L$(gcclibdir) -lgcc $(OBJCOPY) -O srec $(<:.o=) $@ eeprom.bin: eeprom.srec - $(OBJCOPY) -O binary $< $@ 2>/dev/null + $(OBJCOPY) -I srec -O binary $< $@ 2>/dev/null clean: rm -f $(SOBJS) $(OBJS) eeprom eeprom.srec eeprom.bin diff --git a/board/voiceblue/eeprom.c b/board/voiceblue/eeprom.c index 6383a02..0ad1b66 100644 --- a/board/voiceblue/eeprom.c +++ b/board/voiceblue/eeprom.c @@ -30,40 +30,6 @@ #define SMC_BASE_ADDRESS CONFIG_SMC91111_BASE -static int verify_macaddr(char *); -static int set_mac(char *); - -int eeprom(int argc, char *argv[]) -{ - app_startup(argv); - if (get_version() != XF_VERSION) { - printf("Wrong XF_VERSION.\n"); - printf("Application expects ABI version %d\n", XF_VERSION); - printf("Actual U-Boot ABI version %d\n", (int)get_version()); - return 1; - } - - if ((SMC_inw (BANK_SELECT) & 0xFF00) != 0x3300) { - printf("SMSC91111 not found.\n"); - return 2; - } - - if (argc != 2) { - printf("VoiceBlue EEPROM writer\n"); - printf("Built: %s at %s\n", __DATE__ , __TIME__ ); - printf("Usage:\n\t<mac_address>"); - return 3; - } - - set_mac(argv[1]); - if (verify_macaddr(argv[1])) { - printf("*** ERROR ***\n"); - return 4; - } - - return 0; -} - static u16 read_eeprom_reg(u16 reg) { int timeout; @@ -106,17 +72,28 @@ static int write_eeprom_reg(u16 value, u16 reg) return 1; } +static int write_data(u16 *buf, int len) +{ + u16 reg = 0x23; + + while (len--) + write_eeprom_reg(*buf++, reg++); + + return 0; +} + static int verify_macaddr(char *s) { u16 reg; int i, err = 0; - printf("Verifying MAC Address: "); + printf("MAC Address: "); err = i = 0; for (i = 0; i < 3; i++) { reg = read_eeprom_reg(0x20 + i); printf("%02x:%02x%c", reg & 0xff, reg >> 8, i != 2 ? ':' : '\n'); - err |= reg != ((u16 *)s)[i]; + if (s) + err |= reg != ((u16 *)s)[i]; } return err ? 0 : 1; @@ -138,3 +115,97 @@ static int set_mac(char *s) return 0; } + +static int parse_element(char *s, unsigned char *buf, int len) +{ + int cnt; + char *p, num[3]; + unsigned char id; + + id = simple_strtoul(s, &p, 16); + if (*p++ != ':') + return -1; + cnt = 2; + num[2] = 0; + for (; *p; p += 2) { + if (p[1] == 0) + return -2; + if (cnt + 3 > len) + return -3; + num[0] = p[0]; + num[1] = p[1]; + buf[cnt++] = simple_strtoul(num, NULL, 16); + } + buf[0] = id; + buf[1] = cnt - 2; + + return cnt; +} + +int eeprom(int argc, char *argv[]) +{ + int i, len, ret; + unsigned char buf[58], *p; + + app_startup(argv); + if (get_version() != XF_VERSION) { + printf("Wrong XF_VERSION.\n"); + printf("Application expects ABI version %d\n", XF_VERSION); + printf("Actual U-Boot ABI version %d\n", (int)get_version()); + return 1; + } + + if ((SMC_inw (BANK_SELECT) & 0xFF00) != 0x3300) { + printf("SMSC91111 not found.\n"); + return 2; + } + + /* Called without parameters - print MAC address */ + if (argc < 2) { + verify_macaddr(NULL); + return 0; + } + + /* Print help message */ + if (argv[1][1] == 'h') { + printf("VoiceBlue EEPROM writer\n"); + printf("Built: %s at %s\n", __DATE__ , __TIME__ ); + printf("Usage:\n\t<mac_address> [<element_1>] [<...>]\n"); + return 0; + } + + /* Try to parse information elements */ + len = sizeof(buf); + p = buf; + for (i = 2; i < argc; i++) { + ret = parse_element(argv[i], p, len); + switch (ret) { + case -1: + printf("Element %d: malformed\n", i - 1); + return 3; + case -2: + printf("Element %d: odd character count\n", i - 1); + return 3; + case -3: + printf("Out of EEPROM memory\n"); + return 3; + default: + p += ret; + len -= ret; + } + } + + /* First argument (MAC) is mandatory */ + set_mac(argv[1]); + if (verify_macaddr(argv[1])) { + printf("*** MAC address does not match! ***\n"); + return 4; + } + + while (len--) + *p++ = 0; + + write_data((u16 *)buf, sizeof(buf) >> 1); + + return 0; +} diff --git a/board/voiceblue/eeprom.lds b/board/voiceblue/eeprom.lds new file mode 100644 index 0000000..317550d --- /dev/null +++ b/board/voiceblue/eeprom.lds @@ -0,0 +1,51 @@ +/* + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, <gj@denx.de> + * (C) Copyright 2005 + * Ladislav Michl, 2N Telekomunikace, <michl@2n.cz> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ + . = ALIGN(4); + .text : + { + eeprom_start.o (.text) + *(.text) + } + + . = ALIGN(4); + .rodata : { *(.rodata) } + + . = ALIGN(4); + .data : { *(.data) } + + . = ALIGN(4); + .got : { *(.got) } + + . = ALIGN(4); + __bss_start = .; + .bss : { *(.bss) } + _end = .; +} diff --git a/board/voiceblue/eeprom_start.S b/board/voiceblue/eeprom_start.S new file mode 100644 index 0000000..8f88de5 --- /dev/null +++ b/board/voiceblue/eeprom_start.S @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2005 2N Telekomunikace + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + */ + +.globl _start +_start: b eeprom diff --git a/common/cmd_jffs2.c b/common/cmd_jffs2.c index 16f5b7a..7ab6e9c 100644 --- a/common/cmd_jffs2.c +++ b/common/cmd_jffs2.c @@ -1810,7 +1810,7 @@ int do_jffs2_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return !(size > 0); } - return 0; + return 1; } /** @@ -1846,9 +1846,9 @@ int do_jffs2_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) ret = jffs2_1pass_ls(part, filename); } - return (ret == 1); + return ret ? 0 : 1; } - return 0; + return 1; } /** @@ -1884,9 +1884,9 @@ int do_jffs2_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) ret = jffs2_1pass_info(part); } - return (ret == 1); + return ret ? 0 : 1; } - return 0; + return 1; } /* command line only */ diff --git a/common/cmd_nand.c b/common/cmd_nand.c index 4499917..5648ab2 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -225,10 +225,11 @@ int do_nand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) #ifdef CFG_NAND_SKIP_BAD_DOT_I /* need ".i" same as ".jffs2s" for compatibility with older units (esd) */ /* ".i" for image -> read skips bad block (no 0xff) */ - else if (cmdtail && !strcmp(cmdtail, ".i")) + else if (cmdtail && !strcmp(cmdtail, ".i")) { cmd |= NANDRW_JFFS2; /* skip bad blocks (on read too) */ if (cmd & NANDRW_READ) cmd |= NANDRW_JFFS2_SKIP; /* skip bad blocks (on read too) */ + } #endif /* CFG_NAND_SKIP_BAD_DOT_I */ else if (cmdtail) { printf ("Usage:\n%s\n", cmdtp->usage); diff --git a/common/hush.c b/common/hush.c index 47680ed..eb7f7f1 100644 --- a/common/hush.c +++ b/common/hush.c @@ -1022,12 +1022,30 @@ static void get_user_input(struct in_str *i) int n; static char the_command[CFG_CBSIZE]; +#ifdef CONFIG_BOOT_RETRY_TIME +# ifdef CONFIG_RESET_TO_RETRY + extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +# else +# error "This currently only works with CONFIG_RESET_TO_RETRY enabled" +# endif + reset_cmd_timeout(); +#endif i->__promptme = 1; if (i->promptmode == 1) { n = readline(CFG_PROMPT); } else { n = readline(CFG_PROMPT_HUSH_PS2); } +#ifdef CONFIG_BOOT_RETRY_TIME + if (n == -2) { + puts("\nTimeout waiting for command\n"); +# ifdef CONFIG_RESET_TO_RETRY + do_reset(NULL, 0, 0, NULL); +# else +# error "This currently only works with CONFIG_RESET_TO_RETRY enabled" +# endif + } +#endif if (n == -1 ) { flag_repeat = 0; i->__promptme = 0; diff --git a/common/miiphybb.c b/common/miiphybb.c index b4cbb70..b6af88f 100644 --- a/common/miiphybb.c +++ b/common/miiphybb.c @@ -38,72 +38,79 @@ * Utility to send the preamble, address, and register (common to read * and write). */ -static void miiphy_pre(char read, - unsigned char addr, - unsigned char reg) +static void miiphy_pre (char read, unsigned char addr, unsigned char reg) { - int j; /* counter */ - volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, MDIO_PORT); - - /* - * Send a 32 bit preamble ('1's) with an extra '1' bit for good measure. - * The IEEE spec says this is a PHY optional requirement. The AMD - * 79C874 requires one after power up and one after a MII communications - * error. This means that we are doing more preambles than we need, - * but it is safer and will be much more robust. - */ - - MDIO_ACTIVE; - MDIO(1); - for(j = 0; j < 32; j++) - { - MDC(0); - MIIDELAY; - MDC(1); - MIIDELAY; - } - - /* send the start bit (01) and the read opcode (10) or write (10) */ - MDC(0); MDIO(0); MIIDELAY; MDC(1); MIIDELAY; - MDC(0); MDIO(1); MIIDELAY; MDC(1); MIIDELAY; - MDC(0); MDIO(read); MIIDELAY; MDC(1); MIIDELAY; - MDC(0); MDIO(!read); MIIDELAY; MDC(1); MIIDELAY; - - /* send the PHY address */ - for(j = 0; j < 5; j++) - { - MDC(0); - if((addr & 0x10) == 0) - { - MDIO(0); - } - else - { - MDIO(1); - } - MIIDELAY; - MDC(1); - MIIDELAY; - addr <<= 1; - } - - /* send the register address */ - for(j = 0; j < 5; j++) - { - MDC(0); - if((reg & 0x10) == 0) - { - MDIO(0); - } - else - { - MDIO(1); - } - MIIDELAY; - MDC(1); - MIIDELAY; - reg <<= 1; - } + int j; /* counter */ +#ifndef CONFIG_EP8248 + volatile ioport_t *iop = ioport_addr ((immap_t *) CFG_IMMR, MDIO_PORT); +#endif + + /* + * Send a 32 bit preamble ('1's) with an extra '1' bit for good measure. + * The IEEE spec says this is a PHY optional requirement. The AMD + * 79C874 requires one after power up and one after a MII communications + * error. This means that we are doing more preambles than we need, + * but it is safer and will be much more robust. + */ + + MDIO_ACTIVE; + MDIO (1); + for (j = 0; j < 32; j++) { + MDC (0); + MIIDELAY; + MDC (1); + MIIDELAY; + } + + /* send the start bit (01) and the read opcode (10) or write (10) */ + MDC (0); + MDIO (0); + MIIDELAY; + MDC (1); + MIIDELAY; + MDC (0); + MDIO (1); + MIIDELAY; + MDC (1); + MIIDELAY; + MDC (0); + MDIO (read); + MIIDELAY; + MDC (1); + MIIDELAY; + MDC (0); + MDIO (!read); + MIIDELAY; + MDC (1); + MIIDELAY; + + /* send the PHY address */ + for (j = 0; j < 5; j++) { + MDC (0); + if ((addr & 0x10) == 0) { + MDIO (0); + } else { + MDIO (1); + } + MIIDELAY; + MDC (1); + MIIDELAY; + addr <<= 1; + } + + /* send the register address */ + for (j = 0; j < 5; j++) { + MDC (0); + if ((reg & 0x10) == 0) { + MDIO (0); + } else { + MDIO (1); + } + MIIDELAY; + MDC (1); + MIIDELAY; + reg <<= 1; + } } @@ -114,66 +121,63 @@ static void miiphy_pre(char read, * Returns: * 0 on success */ -int miiphy_read(unsigned char addr, - unsigned char reg, - unsigned short *value) +int miiphy_read (unsigned char addr, unsigned char reg, unsigned short *value) { - short rdreg; /* register working value */ - int j; /* counter */ - volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, MDIO_PORT); - - miiphy_pre(1, addr, reg); - - /* tri-state our MDIO I/O pin so we can read */ - MDC(0); - MDIO_TRISTATE; - MIIDELAY; - MDC(1); - MIIDELAY; - - /* check the turnaround bit: the PHY should be driving it to zero */ - if(MDIO_READ != 0) - { - /* puts ("PHY didn't drive TA low\n"); */ - for(j = 0; j < 32; j++) - { - MDC(0); - MIIDELAY; - MDC(1); - MIIDELAY; - } - return(-1); - } - - MDC(0); - MIIDELAY; - - /* read 16 bits of register data, MSB first */ - rdreg = 0; - for(j = 0; j < 16; j++) - { - MDC(1); - MIIDELAY; - rdreg <<= 1; - rdreg |= MDIO_READ; - MDC(0); - MIIDELAY; - } - - MDC(1); - MIIDELAY; - MDC(0); - MIIDELAY; - MDC(1); - MIIDELAY; - - *value = rdreg; + short rdreg; /* register working value */ + int j; /* counter */ +#ifndef CONFIG_EP8248 + volatile ioport_t *iop = ioport_addr ((immap_t *) CFG_IMMR, MDIO_PORT); +#endif + + miiphy_pre (1, addr, reg); + + /* tri-state our MDIO I/O pin so we can read */ + MDC (0); + MDIO_TRISTATE; + MIIDELAY; + MDC (1); + MIIDELAY; + + /* check the turnaround bit: the PHY should be driving it to zero */ + if (MDIO_READ != 0) { + /* puts ("PHY didn't drive TA low\n"); */ + for (j = 0; j < 32; j++) { + MDC (0); + MIIDELAY; + MDC (1); + MIIDELAY; + } + return (-1); + } + + MDC (0); + MIIDELAY; + + /* read 16 bits of register data, MSB first */ + rdreg = 0; + for (j = 0; j < 16; j++) { + MDC (1); + MIIDELAY; + rdreg <<= 1; + rdreg |= MDIO_READ; + MDC (0); + MIIDELAY; + } + + MDC (1); + MIIDELAY; + MDC (0); + MIIDELAY; + MDC (1); + MIIDELAY; + + *value = rdreg; #ifdef DEBUG - printf ("miiphy_read(0x%x) @ 0x%x = 0x%04x\n", reg, addr, *value); + printf ("miiphy_read(0x%x) @ 0x%x = 0x%04x\n", reg, addr, *value); #endif - return 0; + return 0; } @@ -184,47 +188,51 @@ int miiphy_read(unsigned char addr, * Returns: * 0 on success */ -int miiphy_write(unsigned char addr, - unsigned char reg, - unsigned short value) +int miiphy_write (unsigned char addr, unsigned char reg, unsigned short value) { - int j; /* counter */ - volatile ioport_t *iop = ioport_addr((immap_t *)CFG_IMMR, MDIO_PORT); - - miiphy_pre(0, addr, reg); - - /* send the turnaround (10) */ - MDC(0); MDIO(1); MIIDELAY; MDC(1); MIIDELAY; - MDC(0); MDIO(0); MIIDELAY; MDC(1); MIIDELAY; - - /* write 16 bits of register data, MSB first */ - for(j = 0; j < 16; j++) - { - MDC(0); - if((value & 0x00008000) == 0) - { - MDIO(0); - } - else - { - MDIO(1); - } - MIIDELAY; - MDC(1); - MIIDELAY; - value <<= 1; - } - - /* - * Tri-state the MDIO line. - */ - MDIO_TRISTATE; - MDC(0); - MIIDELAY; - MDC(1); - MIIDELAY; - - return 0; + int j; /* counter */ +#ifndef CONFIG_EP8248 + volatile ioport_t *iop = ioport_addr ((immap_t *) CFG_IMMR, MDIO_PORT); +#endif + + miiphy_pre (0, addr, reg); + + /* send the turnaround (10) */ + MDC (0); + MDIO (1); + MIIDELAY; + MDC (1); + MIIDELAY; + MDC (0); + MDIO (0); + MIIDELAY; + MDC (1); + MIIDELAY; + + /* write 16 bits of register data, MSB first */ + for (j = 0; j < 16; j++) { + MDC (0); + if ((value & 0x00008000) == 0) { + MDIO (0); + } else { + MDIO (1); + } + MIIDELAY; + MDC (1); + MIIDELAY; + value <<= 1; + } + + /* + * Tri-state the MDIO line. + */ + MDIO_TRISTATE; + MDC (0); + MIIDELAY; + MDC (1); + MIIDELAY; + + return 0; } #endif /* CONFIG_BITBANGMII */ diff --git a/common/miiphyutil.c b/common/miiphyutil.c index 2b0dcf4..13b9c65 100644 --- a/common/miiphyutil.c +++ b/common/miiphyutil.c @@ -93,7 +93,13 @@ int miiphy_reset (unsigned char addr) unsigned short reg; int loop_cnt; - if (miiphy_write (addr, PHY_BMCR, 0x8000) != 0) { + if (miiphy_read (addr, PHY_BMCR, ®) != 0) { +#ifdef DEBUG + printf ("PHY status read failed\n"); +#endif + return (-1); + } + if (miiphy_write (addr, PHY_BMCR, reg | 0x8000) != 0) { #ifdef DEBUG puts ("PHY reset failed\n"); #endif diff --git a/cpu/arm920t/at91rm9200/serial.c b/cpu/arm920t/at91rm9200/serial.c index b529cfa..a281932 100644 --- a/cpu/arm920t/at91rm9200/serial.c +++ b/cpu/arm920t/at91rm9200/serial.c @@ -56,7 +56,7 @@ void serial_setbrg (void) if ((baudrate = gd->baudrate) <= 0) baudrate = CONFIG_BAUDRATE; /* MASTER_CLOCK/(16 * baudrate) */ - us->US_BRGR = (AT91C_MASTER_CLOCK >> 4)/baudrate; + us->US_BRGR = (AT91C_MASTER_CLOCK >> 4) / (unsigned)baudrate; } int serial_init (void) diff --git a/cpu/mips/config.mk b/cpu/mips/config.mk index 3c9aab8..fd10747 100644 --- a/cpu/mips/config.mk +++ b/cpu/mips/config.mk @@ -24,9 +24,17 @@ v=$(shell \ mips-linux-as --version|grep "GNU assembler"|awk '{print $$3}'|awk -F . '{print $$2}') MIPSFLAGS=$(shell \ if [ "$v" -lt "14" ]; then \ - echo "-mcpu=4kc -EB -mabicalls"; \ + echo "-mcpu=4kc"; \ else \ - echo "-march=4kc -mtune=4kc -Wa,-mips_allow_branch_to_undefined -EB -mabicalls"; \ + echo "-march=4kc -mtune=4kc -Wa,-mips_allow_branch_to_undefined"; \ fi) +ifneq (,$(findstring 4KCle,$(CROSS_COMPILE))) +ENDIANNESS = -EL +else +ENDIANNESS = -EB +endif + +MIPSFLAGS += $(ENDIANNESS) -mabicalls + PLATFORM_CPPFLAGS += $(MIPSFLAGS) diff --git a/cpu/mpc8xx/speed.c b/cpu/mpc8xx/speed.c index 95003ed..f038316 100644 --- a/cpu/mpc8xx/speed.c +++ b/cpu/mpc8xx/speed.c @@ -25,7 +25,7 @@ #include <mpc8xx.h> #include <asm/processor.h> -#if !defined(CONFIG_8xx_CPUCLK_DEFAULT) || defined(CFG_MEASURE_CPUCLK) +#if !defined(CONFIG_8xx_CPUCLK_DEFAULT) || defined(CFG_MEASURE_CPUCLK) || defined(DEBUG) #define PITC_SHIFT 16 #define PITR_SHIFT 16 diff --git a/cpu/ppc4xx/440gx_enet.c b/cpu/ppc4xx/440gx_enet.c index 68cbf34..d0b6c15 100644 --- a/cpu/ppc4xx/440gx_enet.c +++ b/cpu/ppc4xx/440gx_enet.c @@ -269,7 +269,7 @@ int ppc_440x_eth_setup_bridge(int devnum, bd_t * bis) static int ppc_440x_eth_init (struct eth_device *dev, bd_t * bis) { - int i; + int i, j; unsigned long reg; unsigned long msr; unsigned long speed; @@ -448,7 +448,11 @@ static int ppc_440x_eth_init (struct eth_device *dev, bd_t * bis) * for RGMII mode. */ if ( ((devnum == 2) || (devnum ==3)) && (4 == ethgroup) ) { - miiphy_write (reg, 23, 0x1200); +#if defined(CONFIG_CIS8201_SHORT_ETCH) + miiphy_write (reg, 23, 0x1300); +#else + miiphy_write (reg, 23, 0x1000); +#endif /* * Vitesse VSC8201/Cicada CIS8201 errata: * Interoperability problem with Intel 82547EI phys @@ -567,6 +571,8 @@ static int ppc_440x_eth_init (struct eth_device *dev, bd_t * bis) hw_p->alloc_tx_buf = (mal_desc_t *) malloc ((sizeof (mal_desc_t) * NUM_TX_BUFF) + ((2 * CFG_CACHELINE_SIZE) - 2)); + if (NULL == hw_p->alloc_tx_buf) + return -1; if (((int) hw_p->alloc_tx_buf & CACHELINE_MASK) != 0) { hw_p->tx = (mal_desc_t *) ((int) hw_p->alloc_tx_buf + @@ -580,6 +586,12 @@ static int ppc_440x_eth_init (struct eth_device *dev, bd_t * bis) hw_p->alloc_rx_buf = (mal_desc_t *) malloc ((sizeof (mal_desc_t) * NUM_RX_BUFF) + ((2 * CFG_CACHELINE_SIZE) - 2)); + if (NULL == hw_p->alloc_rx_buf) { + free(hw_p->alloc_tx_buf); + hw_p->alloc_tx_buf = NULL; + return -1; + } + if (((int) hw_p->alloc_rx_buf & CACHELINE_MASK) != 0) { hw_p->rx = (mal_desc_t *) ((int) hw_p->alloc_rx_buf + @@ -593,9 +605,20 @@ static int ppc_440x_eth_init (struct eth_device *dev, bd_t * bis) for (i = 0; i < NUM_TX_BUFF; i++) { hw_p->tx[i].ctrl = 0; hw_p->tx[i].data_len = 0; - if (hw_p->first_init == 0) + if (hw_p->first_init == 0) { hw_p->txbuf_ptr = (char *) malloc (ENET_MAX_MTU_ALIGNED); + if (NULL == hw_p->txbuf_ptr) { + free(hw_p->alloc_rx_buf); + free(hw_p->alloc_tx_buf); + hw_p->alloc_rx_buf = NULL; + hw_p->alloc_tx_buf = NULL; + for(j = 0; j < i; j++) { + free(hw_p->tx[i].data_ptr); + hw_p->tx[i].data_ptr = NULL; + } + } + } hw_p->tx[i].data_ptr = hw_p->txbuf_ptr; if ((NUM_TX_BUFF - 1) == i) hw_p->tx[i].ctrl |= MAL_TX_CTRL_WRAP; diff --git a/doc/README.stxxtc b/doc/README.stxxtc new file mode 100644 index 0000000..7d9d4d3 --- /dev/null +++ b/doc/README.stxxtc @@ -0,0 +1,59 @@ + + +First, some build notes on the Silicon Turnkey eXpress XTc. + +This board has both 87x/88x procesor options at various +frequencies. The configuration file has some macros for setting +the clock speed, not all have been tested. They all have +a 10MHz input clock. Please do not check in a configuration +file that selects a high speed not available on all processors. +We chose the 66MHz core and bus speed, which should be OK on +all boards. If you have a processor, lucky you! :-) +Just build a new configuration with that speed, check +the macro configuration to ensure it's correct. If the +macro is updated, please check that in, but keep default +processor speed. + +The board is likely to have more than 1Mbyte of NOR boot flash. +It was also configured with a high boot vector (Dan's fault) +so the standard 8xx mapping doesn't work well. We had to move +the addresses around a little bit so one copy would work. The +flash got fragmented, and we are working on a better solution. +There is an "xtc.cfg" floating around for the BDI2000, use +that for programming a new version of U-Boot. You can probably +find it on the Silicon Turnkey eXpress (www.silicontkx.com), +Embedded Alley Solutions (embeddedalley.com), or Denx (denx.de) +servers. + +The board will also have various SDRAM sizes, but the code +should automatically determine the amount of memory. + +There are a couple of different board versions, visually +they use different BGA or surface mount memory parts. However, +they are logically the same board. + +Now, some operational notes. + +The board has the option of sporting two FEC Ethernet ports. +The second port isn't configured to be automatically available +because it would cause U-Boot to generate a board data structure +(the bd_t) with multiple MAC addresses and be incompatible with +standard 8xx kernel builds. You can use/test the second FEC +in U-Boot by assigning an 'eth1addr' and selecting the second +FEC as the port to use. + +Since this is just a development board and not a product, STx +does not assign unique MAC addresses. We just pilfer the +"default" ones used by Wolfgang on some other boards. Please +ensure you assign unique MAC addresses when using these boards. + +The serial port baud rate is 38400, because that's the way +I like it :-) + +Thanks to Pantelis for lots of the work on this board port. + +Have Fun! + + -- Dan + +15 August 2005 diff --git a/drivers/cfi_flash.c b/drivers/cfi_flash.c index d8489d46..3d0f204 100644 --- a/drivers/cfi_flash.c +++ b/drivers/cfi_flash.c @@ -557,7 +557,7 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt) i = buffered_size > cnt ? cnt : buffered_size; if ((rc = flash_write_cfibuffer (info, wp, src, i)) != ERR_OK) return rc; - i -= (i % info->portwidth); + i -= i & (info->portwidth - 1); wp += i; src += i; cnt -= i; @@ -805,7 +805,7 @@ static void flash_make_cmd (flash_info_t * info, uchar cmd, void *cmdbuf) uchar *cp = (uchar *) cmdbuf; for (i = 0; i < info->portwidth; i++) - *cp++ = ((i + 1) % info->chipwidth) ? '\0' : cmd; + *cp++ = ((i + 1) & (info->chipwidth - 1)) ? '\0' : cmd; #if defined(__LITTLE_ENDIAN) switch (info->portwidth) { case FLASH_CFI_8BIT: diff --git a/fs/jffs2/jffs2_1pass.c b/fs/jffs2/jffs2_1pass.c index 667ae15..e53aa31 100644 --- a/fs/jffs2/jffs2_1pass.c +++ b/fs/jffs2/jffs2_1pass.c @@ -1288,7 +1288,7 @@ u32 jffs2_1pass_ls(struct part_info * part, const char *fname) { struct b_lists *pl; - long ret = 0; + long ret = 1; u32 inode; if (! (pl = jffs2_get_list(part, "ls"))) @@ -1315,7 +1315,7 @@ jffs2_1pass_load(char *dest, struct part_info * part, const char *fname) { struct b_lists *pl; - long ret = 0; + long ret = 1; u32 inode; if (! (pl = jffs2_get_list(part, "load"))) diff --git a/include/common.h b/include/common.h index efc638d..8536a99 100644 --- a/include/common.h +++ b/include/common.h @@ -302,7 +302,8 @@ void board_ether_init (void); #endif #if defined(CONFIG_RPXCLASSIC) || defined(CONFIG_MBX) || \ - defined(CONFIG_IAD210) || defined(CONFIG_XPEDITE1K) + defined(CONFIG_IAD210) || defined(CONFIG_XPEDITE1K) || \ + defined(CONFIG_METROBOX) || defined(CONFIG_KAREF) void board_get_enetaddr (uchar *addr); #endif diff --git a/include/configs/DU405.h b/include/configs/DU405.h index b917092..a251298 100644 --- a/include/configs/DU405.h +++ b/include/configs/DU405.h @@ -32,12 +32,14 @@ * High Level Configuration Options * (easy to change) */ +#define CONFIG_IDENT_STRING " $Name: $" #define CONFIG_405GP 1 /* This is a PPC405 CPU */ #define CONFIG_4xx 1 /* ...member of PPC4xx family */ #define CONFIG_DU405 1 /* ...on a DU405 board */ #define CONFIG_BOARD_EARLY_INIT_F 1 /* call board_early_init_f() */ +#define CONFIG_MISC_INIT_R 1 /* call misc_init_r() */ #define CONFIG_SYS_CLK_FREQ 25000000 /* external frequency to pll */ diff --git a/include/configs/KAREF.h b/include/configs/KAREF.h new file mode 100644 index 0000000..331131a --- /dev/null +++ b/include/configs/KAREF.h @@ -0,0 +1,309 @@ +/* + * (C) Copyright 2004 Sandburst Corporation + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +/************************************************************************ + * KAMINOREFDES.h - configuration for the Sandburst Kamino Reference + * design. + ***********************************************************************/ + +/* + * $Id: KAREF.h,v 1.6 2005/06/03 15:05:25 tsawyer Exp $ + * + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/*----------------------------------------------------------------------- + * High Level Configuration Options + *----------------------------------------------------------------------*/ +#define CONFIG_KAREF 1 /* Board is Kamino Ref Variant */ +#define CONFIG_440GX 1 /* Specifc GX support */ +#define CONFIG_4xx 1 /* ... PPC4xx family */ +#define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_pre_init */ +#define CONFIG_MISC_INIT_F 1 /* Call board misc_init_f */ +#define CONFIG_MISC_INIT_R 1 /* Call board misc_init_r */ +#undef CFG_DRAM_TEST /* Disable-takes long time!*/ +#define CONFIG_SYS_CLK_FREQ 66666666 /* external freq to pll */ + +#define CONFIG_VERY_BIG_RAM 1 +#define CONFIG_VERSION_VARIABLE + +#define CONFIG_IDENT_STRING " Sandburst Kamino Reference Design" + +/*----------------------------------------------------------------------- + * Base addresses -- Note these are effective addresses where the + * actual resources get mapped (not physical addresses) + *----------------------------------------------------------------------*/ +#define CFG_SDRAM_BASE 0x00000000 /* _must_ be 0 */ +#define CFG_FLASH_BASE 0xfff80000 /* start of FLASH */ +#define CFG_MONITOR_BASE 0xfff80000 /* start of monitor */ +#define CFG_PCI_MEMBASE 0x80000000 /* mapped pci memory */ +#define CFG_PERIPHERAL_BASE 0xe0000000 /* internal peripherals */ +#define CFG_ISRAM_BASE 0xc0000000 /* internal SRAM */ +#define CFG_PCI_BASE 0xd0000000 /* internal PCI regs */ + +#define CFG_NVRAM_BASE_ADDR (CFG_PERIPHERAL_BASE + 0x08000000) +#define CFG_KAREF_FPGA_BASE (CFG_PERIPHERAL_BASE + 0x08200000) +#define CFG_OFEM_FPGA_BASE (CFG_PERIPHERAL_BASE + 0x08400000) +#define CFG_BME32_BASE (CFG_PERIPHERAL_BASE + 0x08500000) +#define CFG_GPIO_BASE (CFG_PERIPHERAL_BASE + 0x00000700) + +/* Here for completeness */ +#define CFG_OFEMAC_BASE (CFG_PERIPHERAL_BASE + 0x08600000) + +/*----------------------------------------------------------------------- + * Initial RAM & stack pointer (placed in internal SRAM) + *----------------------------------------------------------------------*/ +#define CFG_TEMP_STACK_OCM 1 +#define CFG_OCM_DATA_ADDR CFG_ISRAM_BASE +#define CFG_INIT_RAM_ADDR CFG_ISRAM_BASE /* Initial RAM address */ +#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */ +#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */ + +#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_POST_WORD_ADDR (CFG_GBL_DATA_OFFSET - 0x4) +#define CFG_INIT_SP_OFFSET CFG_POST_WORD_ADDR + +#define CFG_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ +#define CFG_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ + +/*----------------------------------------------------------------------- + * Serial Port + *----------------------------------------------------------------------*/ +#undef CONFIG_SERIAL_SOFTWARE_FIFO +#define CONFIG_SERIAL_MULTI 1 +#define CONFIG_BAUDRATE 9600 + +#define CFG_BAUDRATE_TABLE \ + {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200} + +/*----------------------------------------------------------------------- + * NVRAM/RTC + * + * NOTE: Upper 8 bytes of NVRAM is where the RTC registers are located. + * The DS1743 code assumes this condition (i.e. -- it assumes the base + * address for the RTC registers is: + * + * CFG_NVRAM_BASE_ADDR + CFG_NVRAM_SIZE + * + *----------------------------------------------------------------------*/ +#define CFG_NVRAM_SIZE (0x2000 - 8) /* NVRAM size(8k)- RTC regs*/ +#define CONFIG_RTC_DS174x 1 /* DS1743 RTC */ + +/*----------------------------------------------------------------------- + * FLASH related + *----------------------------------------------------------------------*/ +#define CFG_MAX_FLASH_BANKS 1 /* number of banks */ +#define CFG_MAX_FLASH_SECT 8 /* sectors per device */ + +#undef CFG_FLASH_CHECKSUM +#define CFG_FLASH_ERASE_TOUT 120000 /* Flash Erase TO (in ms) */ +#define CFG_FLASH_WRITE_TOUT 500 /* Flash Write TO(in ms) */ + +/*----------------------------------------------------------------------- + * DDR SDRAM + *----------------------------------------------------------------------*/ +#define CONFIG_SPD_EEPROM 1 /* Use SPD EEPROM for setup*/ +#define SPD_EEPROM_ADDRESS {0x53} /* SPD i2c spd addresses */ + +/*----------------------------------------------------------------------- + * I2C + *----------------------------------------------------------------------*/ +#define CONFIG_HARD_I2C 1 /* I2C hardware support */ +#undef CONFIG_SOFT_I2C /* I2C !bit-banged */ +#define CFG_I2C_SPEED 400000 /* I2C speed 400kHz */ +#define CFG_I2C_SLAVE 0x7F /* I2C slave address */ +#define CFG_I2C_NOPROBES {0x69} /* Don't probe these addrs */ +#define CONFIG_I2C_BUS1 1 /* Include i2c bus 1 supp */ + + +/*----------------------------------------------------------------------- + * Environment + *----------------------------------------------------------------------*/ +#define CFG_ENV_IS_IN_NVRAM 1 /* Environment uses NVRAM */ +#undef CFG_ENV_IS_IN_FLASH /* ... not in flash */ +#undef CFG_ENV_IS_IN_EEPROM /* ... not in EEPROM */ +#define CONFIG_ENV_OVERWRITE 1 /* allow env overwrite */ + +#define CFG_ENV_SIZE 0x1000 /* Size of Env vars */ +#define CFG_ENV_ADDR (CFG_NVRAM_BASE_ADDR) + +#define CONFIG_BOOTDELAY 5 /* 5 second autoboot */ + +#define CONFIG_LOADS_ECHO 1 /* echo on for serial dnld */ +#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */ + +/*----------------------------------------------------------------------- + * Networking + *----------------------------------------------------------------------*/ +#define CONFIG_MII 1 /* MII PHY management */ +#define CONFIG_NET_MULTI 1 +#define CONFIG_PHY_ADDR 0xff /* no phy on EMAC0 */ +#define CONFIG_PHY1_ADDR 0xff /* no phy on EMAC1 */ +#define CONFIG_PHY2_ADDR 0x08 /* PHY addr, MGMT, EMAC2 */ +#define CONFIG_PHY3_ADDR 0x18 /* PHY addr, LCL, EMAC3 */ +#define CONFIG_HAS_ETH0 +#define CONFIG_HAS_ETH1 +#define CONFIG_HAS_ETH2 +#define CONFIG_HAS_ETH3 +#define CONFIG_CIS8201_PHY 1 /* RGMII mode for Cicada */ +#define CONFIG_CIS8201_SHORT_ETCH 1 /* Use short etch mode */ +#define CONFIG_PHY_GIGE 1 /* GbE speed/duplex detect */ +#define CONFIG_PHY_RESET_DELAY 1000 +#define CONFIG_NETMASK 255.255.0.0 +#define CONFIG_ETHADDR 00:00:00:00:00:00 /* No EMAC 0 support */ +#define CONFIG_ETH1ADDR 00:00:00:00:00:00 /* No EMAC 1 support */ +#define CFG_RX_ETH_BUFFER 32 /* #eth rx buff & descrs */ + + +/*----------------------------------------------------------------------- + * Console/Commands/Parser + *----------------------------------------------------------------------*/ +#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \ + CFG_CMD_PCI | \ + CFG_CMD_IRQ | \ + CFG_CMD_I2C | \ + CFG_CMD_DHCP | \ + CFG_CMD_DATE | \ + CFG_CMD_BEDBUG | \ + CFG_CMD_PING | \ + CFG_CMD_DIAG | \ + CFG_CMD_MII | \ + CFG_CMD_NET | \ + CFG_CMD_ELF | \ + CFG_CMD_IDE | \ + CFG_CMD_FAT) + +/* Include NetConsole support */ +#define CONFIG_NETCONSOLE + +/* Include auto complete with tabs */ +#define CONFIG_AUTO_COMPLETE 1 +#define CFG_AUTO_COMPLETE 1 +#define CFG_ALT_MEMTEST 1 /* use real memory test */ + + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#define CFG_LONGHELP /* undef to save memory */ +#define CFG_PROMPT "KaRefDes=> " /* Monitor Command Prompt */ + +#define CFG_HUSH_PARSER 1 /* HUSH for ext'd cli */ +#define CFG_PROMPT_HUSH_PS2 "> " + + +/*----------------------------------------------------------------------- + * Console Buffer + *----------------------------------------------------------------------*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ +#else +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) + /* Print Buffer Size */ +#define CFG_MAXARGS 16 /* max number of cmd args */ +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Arg Buffer Size */ + +/*----------------------------------------------------------------------- + * Memory Test + *----------------------------------------------------------------------*/ +#define CFG_MEMTEST_START 0x0400000 /* memtest works on */ +#define CFG_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM */ + +/*----------------------------------------------------------------------- + * Compact Flash (in true IDE mode) + *----------------------------------------------------------------------*/ +#undef CONFIG_IDE_8xx_DIRECT /* no pcmcia interface required */ +#undef CONFIG_IDE_LED /* no led for ide supported */ + +#define CONFIG_IDE_RESET /* reset for ide supported */ +#define CFG_IDE_MAXBUS 1 /* max. 1 IDE busses */ +#define CFG_IDE_MAXDEVICE (CFG_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */ + +#define CFG_ATA_BASE_ADDR 0xF0000000 +#define CFG_ATA_IDE0_OFFSET 0x0000 +#define CFG_ATA_DATA_OFFSET 0x0000 /* Offset for data I/O */ +#define CFG_ATA_REG_OFFSET 0x0000 /* Offset for normal register accesses*/ +#define CFG_ATA_ALT_OFFSET 0x100000 /* Offset for alternate registers */ + +#define CFG_ATA_STRIDE 2 /* Directly connected CF, needs a stride + to get to the correct offset */ +#define CONFIG_DOS_PARTITION 1 /* Include dos partition */ + +/*----------------------------------------------------------------------- + * PCI + *----------------------------------------------------------------------*/ +/* General PCI */ +#define CONFIG_PCI /* include pci support */ +#define CONFIG_PCI_PNP /* do pci plug-and-play */ +#define CONFIG_PCI_SCAN_SHOW /* show pci devices */ +#define CFG_PCI_TARGBASE (CFG_PCI_MEMBASE) + +/* Board-specific PCI */ +#define CFG_PCI_PRE_INIT /* enable board pci_pre_init*/ +#define CFG_PCI_TARGET_INIT /* let board init pci target*/ + +#define CFG_PCI_SUBSYS_VENDORID 0x17BA /* Sandburst */ +#define CFG_PCI_SUBSYS_DEVICEID 0xcafe /* Whatever */ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE 8192 /* For IBM 405 CPUs */ +#define CFG_CACHELINE_SIZE 32 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above */ +#endif + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD 0x01 /* Normal PowerOn: Boot from FLASH */ +#define BOOTFLAG_WARM 0x02 /* Software reboot */ + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CONFIG_KGDB_BAUDRATE 230400 /* kgdb serial port baud */ +#define CONFIG_KGDB_SER_INDEX 2 /* kgdb serial port */ +#endif + +/*----------------------------------------------------------------------- + * Miscellaneous configurable options + *----------------------------------------------------------------------*/ +#undef CONFIG_WATCHDOG /* watchdog disabled */ +#define CFG_LOAD_ADDR 0x8000000 /* default load address */ +#define CFG_EXTBDINFO 1 /* use extended board_info */ + +#define CFG_HZ 100 /* decr freq: 1 ms ticks */ + + +#endif /* __CONFIG_H */ diff --git a/include/configs/METROBOX.h b/include/configs/METROBOX.h new file mode 100644 index 0000000..2b4a33f --- /dev/null +++ b/include/configs/METROBOX.h @@ -0,0 +1,377 @@ +/* + * (C) Copyright 2004 Sandburst Corporation + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +/************************************************************************ + * METROBOX.h - configuration Sandburst MetroBox + ***********************************************************************/ + +/* + * $Id: METROBOX.h,v 1.21 2005/06/03 15:05:25 tsawyer Exp $ + * + * + * $Log: METROBOX.h,v $ + * Revision 1.21 2005/06/03 15:05:25 tsawyer + * MB rev 2.0.3 KA rev 0.0.7. Add CONFIG_VERSION_VARIABLE, Add fakeled to MB + * + * Revision 1.20 2005/04/11 20:51:11 tsawyer + * fix ethernet + * + * Revision 1.19 2005/04/06 15:13:36 tsawyer + * Update appropriate files to coincide with u-boot 1.1.3 + * + * Revision 1.18 2005/03/10 14:16:02 tsawyer + * add def'n for cis8201 short etch option. + * + * Revision 1.17 2005/03/09 19:49:51 tsawyer + * Remove KGDB to allow use of 2nd serial port + * + * Revision 1.16 2004/12/02 19:00:23 tsawyer + * Add misc_init_f to turn on i2c-1 and all four fans before sdram init + * + * Revision 1.15 2004/09/15 18:04:12 tsawyer + * add multiple serial port support + * + * Revision 1.14 2004/09/03 15:27:51 tsawyer + * All metrobox boards are at 66.66 sys clock + * + * Revision 1.13 2004/08/05 20:27:46 tsawyer + * Remove system ace definitions, add net console support + * + * Revision 1.12 2004/07/29 20:00:13 tsawyer + * Add i2c bus 1 + * + * Revision 1.11 2004/07/21 13:44:18 tsawyer + * SystemACE is out, CF direct to local bus is in + * + * Revision 1.10 2004/06/29 19:08:55 tsawyer + * Add CONFIG_MISC_INIT_R + * + * Revision 1.9 2004/06/28 21:30:53 tsawyer + * Fix default BOOTARGS + * + * Revision 1.8 2004/06/17 15:51:08 tsawyer + * auto complete + * + * Revision 1.7 2004/06/17 15:08:49 tsawyer + * Add autocomplete + * + * Revision 1.6 2004/06/15 12:33:57 tsawyer + * debugging checkpoint + * + * Revision 1.5 2004/06/12 19:48:28 tsawyer + * Debugging checkpoint + * + * Revision 1.4 2004/06/02 13:03:06 tsawyer + * Fix eth addrs + * + * Revision 1.3 2004/05/18 19:56:10 tsawyer + * Change default bootcommand to pImage.metrobox + * + * Revision 1.2 2004/05/18 14:13:44 tsawyer + * Add bringup values for bootargs and bootcommand. + * Remove definition of ipaddress and serverip addresses. + * + * Revision 1.1 2004/04/16 15:08:54 tsawyer + * Initial Revision + * + * + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/*----------------------------------------------------------------------- + * High Level Configuration Options + *----------------------------------------------------------------------*/ +#define CONFIG_METROBOX 1 /* Board is Metrobox */ +#define CONFIG_440GX 1 /* Specifc GX support */ +#define CONFIG_4xx 1 /* ... PPC4xx family */ +#define CONFIG_BOARD_EARLY_INIT_F 1 /* Call board_pre_init */ +#define CONFIG_MISC_INIT_F 1 /* Call board misc_init_f */ +#define CONFIG_MISC_INIT_R 1 /* Call board misc_init_r */ +#undef CFG_DRAM_TEST /* Disable-takes long time!*/ +#define CONFIG_SYS_CLK_FREQ 66666666 /* external freq to pll */ + +#define CONFIG_VERY_BIG_RAM 1 +#define CONFIG_VERSION_VARIABLE + +#define CONFIG_IDENT_STRING " Sandburst Metrobox" + +/*----------------------------------------------------------------------- + * Base addresses -- Note these are effective addresses where the + * actual resources get mapped (not physical addresses) + *----------------------------------------------------------------------*/ +#define CFG_SDRAM_BASE 0x00000000 /* _must_ be 0 */ +#define CFG_FLASH_BASE 0xfff80000 /* start of FLASH */ +#define CFG_MONITOR_BASE 0xfff80000 /* start of monitor */ +#define CFG_PCI_MEMBASE 0x80000000 /* mapped pci memory */ +#define CFG_PERIPHERAL_BASE 0xe0000000 /* internal peripherals */ +#define CFG_ISRAM_BASE 0xc0000000 /* internal SRAM */ +#define CFG_PCI_BASE 0xd0000000 /* internal PCI regs */ + +#define CFG_NVRAM_BASE_ADDR (CFG_PERIPHERAL_BASE + 0x08000000) +#define CFG_FPGA_BASE (CFG_PERIPHERAL_BASE + 0x08200000) +#define CFG_BME32_BASE (CFG_PERIPHERAL_BASE + 0x08500000) +#define CFG_GPIO_BASE (CFG_PERIPHERAL_BASE + 0x00000700) + +/*----------------------------------------------------------------------- + * Initial RAM & stack pointer (placed in internal SRAM) + *----------------------------------------------------------------------*/ +#define CFG_TEMP_STACK_OCM 1 +#define CFG_OCM_DATA_ADDR CFG_ISRAM_BASE +#define CFG_INIT_RAM_ADDR CFG_ISRAM_BASE /* Initial RAM address */ +#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */ +#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */ + +#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_POST_WORD_ADDR (CFG_GBL_DATA_OFFSET - 0x4) +#define CFG_INIT_SP_OFFSET CFG_POST_WORD_ADDR + +#define CFG_MONITOR_LEN (256 * 1024) /* Rsrv 256kB for Mon */ +#define CFG_MALLOC_LEN (128 * 1024) /* Rsrv 128kB for malloc */ + +/*----------------------------------------------------------------------- + * Serial Port + *----------------------------------------------------------------------*/ +#undef CONFIG_SERIAL_SOFTWARE_FIFO +#define CONFIG_SERIAL_MULTI 1 +#define CONFIG_BAUDRATE 9600 + +#define CFG_BAUDRATE_TABLE \ + {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200} + +/*----------------------------------------------------------------------- + * NVRAM/RTC + * + * NOTE: Upper 8 bytes of NVRAM is where the RTC registers are located. + * The DS1743 code assumes this condition (i.e. -- it assumes the base + * address for the RTC registers is: + * + * CFG_NVRAM_BASE_ADDR + CFG_NVRAM_SIZE + * + *----------------------------------------------------------------------*/ +#define CFG_NVRAM_SIZE (0x2000 - 8) /* NVRAM size(8k)- RTC regs*/ +#define CONFIG_RTC_DS174x 1 /* DS1743 RTC */ + +/*----------------------------------------------------------------------- + * FLASH related + *----------------------------------------------------------------------*/ +#define CFG_MAX_FLASH_BANKS 1 /* number of banks */ +#define CFG_MAX_FLASH_SECT 8 /* sectors per device */ + +#undef CFG_FLASH_CHECKSUM +#define CFG_FLASH_ERASE_TOUT 120000 /* Flash Erase TO (in ms) */ +#define CFG_FLASH_WRITE_TOUT 500 /* Flash Write TO(in ms) */ + +/*----------------------------------------------------------------------- + * DDR SDRAM + *----------------------------------------------------------------------*/ +#define CONFIG_SPD_EEPROM 1 /* Use SPD EEPROM for setup*/ +#define SPD_EEPROM_ADDRESS {0x53} /* SPD i2c spd addresses */ + +/*----------------------------------------------------------------------- + * I2C + *----------------------------------------------------------------------*/ +#define CONFIG_HARD_I2C 1 /* I2C hardware support */ +#undef CONFIG_SOFT_I2C /* I2C !bit-banged */ +#define CFG_I2C_SPEED 400000 /* I2C speed 400kHz */ +#define CFG_I2C_SLAVE 0x7F /* I2C slave address */ +#define CFG_I2C_NOPROBES {0x69} /* Don't probe these addrs */ +#define CONFIG_I2C_BUS1 1 /* Include i2c bus 1 supp */ + + +/*----------------------------------------------------------------------- + * Environment + *----------------------------------------------------------------------*/ +#define CFG_ENV_IS_IN_NVRAM 1 /* Environment uses NVRAM */ +#undef CFG_ENV_IS_IN_FLASH /* ... not in flash */ +#undef CFG_ENV_IS_IN_EEPROM /* ... not in EEPROM */ +#define CONFIG_ENV_OVERWRITE 1 /* allow env overwrite */ + +#define CFG_ENV_SIZE 0x1000 /* Size of Env vars */ +#define CFG_ENV_ADDR (CFG_NVRAM_BASE_ADDR) + +#define CONFIG_BOOTARGS "console=ttyS0,9600 root=/dev/nfs rw nfsroot=$serverip:/home/metrobox0 nfsaddrs=$ipaddr:::::eth0:none " +#define CONFIG_BOOTCOMMAND "tftp 8000000 pImage.metrobox;bootm 8000000" +#define CONFIG_BOOTDELAY 5 /* disable autoboot */ + +#define CONFIG_LOADS_ECHO 1 /* echo on for serial dnld */ +#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */ + +/*----------------------------------------------------------------------- + * Networking + *----------------------------------------------------------------------*/ +#define CONFIG_MII 1 /* MII PHY management */ +#define CONFIG_NET_MULTI 1 +#define CONFIG_PHY_ADDR 0xff /* no phy on EMAC0 */ +#define CONFIG_PHY1_ADDR 0xff /* no phy on EMAC1 */ +#define CONFIG_PHY2_ADDR 0x08 /* PHY addr, MGMT, EMAC2 */ +#define CONFIG_PHY3_ADDR 0x18 /* PHY addr, LCL, EMAC3 */ +#define CONFIG_HAS_ETH0 +#define CONFIG_HAS_ETH1 +#define CONFIG_HAS_ETH2 +#define CONFIG_HAS_ETH3 +#define CONFIG_CIS8201_PHY 1 /* RGMII mode for Cicada */ +#define CONFIG_CIS8201_SHORT_ETCH 1 /* Use short etch mode */ +#define CONFIG_PHY_GIGE 1 /* GbE speed/duplex detect */ +#define CONFIG_PHY_RESET_DELAY 1000 +#define CONFIG_NETMASK 255.255.0.0 +#define CONFIG_ETHADDR 00:00:00:00:00:00 /* No EMAC 0 support */ +#define CONFIG_ETH1ADDR 00:00:00:00:00:00 /* No EMAC 1 support */ +#define CFG_RX_ETH_BUFFER 32 /* #eth rx buff & descrs */ + + +/*----------------------------------------------------------------------- + * Console/Commands/Parser + *----------------------------------------------------------------------*/ +#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \ + CFG_CMD_PCI | \ + CFG_CMD_IRQ | \ + CFG_CMD_I2C | \ + CFG_CMD_DHCP | \ + CFG_CMD_DATE | \ + CFG_CMD_BEDBUG | \ + CFG_CMD_PING | \ + CFG_CMD_DIAG | \ + CFG_CMD_MII | \ + CFG_CMD_NET | \ + CFG_CMD_ELF | \ + CFG_CMD_IDE | \ + CFG_CMD_FAT) + +/* tbs 09-March-2005 Removed to be able to use 2nd serial */ +/* CFG_CMD_KGDB | \ */ + + +/* Include NetConsole support */ +#define CONFIG_NETCONSOLE + +/* Include auto complete with tabs */ +#define CONFIG_AUTO_COMPLETE 1 +#define CFG_AUTO_COMPLETE 1 +#define CFG_ALT_MEMTEST 1 /* use real memory test */ + + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#define CFG_LONGHELP /* undef to save memory */ +#define CFG_PROMPT "MetroBox=> " /* Monitor Command Prompt */ + +#define CFG_HUSH_PARSER 1 /* HUSH for ext'd cli */ +#define CFG_PROMPT_HUSH_PS2 "> " + + +/*----------------------------------------------------------------------- + * Console Buffer + *----------------------------------------------------------------------*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ +#else +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) + /* Print Buffer Size */ +#define CFG_MAXARGS 16 /* max number of cmd args */ +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Arg Buffer Size */ + +/*----------------------------------------------------------------------- + * Memory Test + *----------------------------------------------------------------------*/ +#define CFG_MEMTEST_START 0x0400000 /* memtest works on */ +#define CFG_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM */ + +/*----------------------------------------------------------------------- + * Compact Flash (in true IDE mode) + *----------------------------------------------------------------------*/ +#undef CONFIG_IDE_8xx_DIRECT /* no pcmcia interface required */ +#undef CONFIG_IDE_LED /* no led for ide supported */ + +#define CONFIG_IDE_RESET /* reset for ide supported */ +#define CFG_IDE_MAXBUS 1 /* max. 1 IDE busses */ +#define CFG_IDE_MAXDEVICE (CFG_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */ + +#define CFG_ATA_BASE_ADDR 0xF0000000 +#define CFG_ATA_IDE0_OFFSET 0x0000 +#define CFG_ATA_DATA_OFFSET 0x0000 /* Offset for data I/O */ +#define CFG_ATA_REG_OFFSET 0x0000 /* Offset for normal register accesses*/ +#define CFG_ATA_ALT_OFFSET 0x100000 /* Offset for alternate registers */ + +#define CFG_ATA_STRIDE 2 /* Directly connected CF, needs a stride + to get to the correct offset */ +#define CONFIG_DOS_PARTITION 1 /* Include dos partition */ + +/*----------------------------------------------------------------------- + * PCI + *----------------------------------------------------------------------*/ +/* General PCI */ +#define CONFIG_PCI /* include pci support */ +#define CONFIG_PCI_PNP /* do pci plug-and-play */ +#define CONFIG_PCI_SCAN_SHOW /* show pci devices */ +#define CFG_PCI_TARGBASE (CFG_PCI_MEMBASE) + +/* Board-specific PCI */ +#define CFG_PCI_PRE_INIT /* enable board pci_pre_init*/ +#define CFG_PCI_TARGET_INIT /* let board init pci target*/ + +#define CFG_PCI_SUBSYS_VENDORID 0x17BA /* Sandburst */ +#define CFG_PCI_SUBSYS_DEVICEID 0xcafe /* Whatever */ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE 8192 /* For IBM 405 CPUs */ +#define CFG_CACHELINE_SIZE 32 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above */ +#endif + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD 0x01 /* Normal PowerOn: Boot from FLASH */ +#define BOOTFLAG_WARM 0x02 /* Software reboot */ + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CONFIG_KGDB_BAUDRATE 230400 /* kgdb serial port baud */ +#define CONFIG_KGDB_SER_INDEX 2 /* kgdb serial port */ +#endif + +/*----------------------------------------------------------------------- + * Miscellaneous configurable options + *----------------------------------------------------------------------*/ +#undef CONFIG_WATCHDOG /* watchdog disabled */ +#define CFG_LOAD_ADDR 0x8000000 /* default load address */ +#define CFG_EXTBDINFO 1 /* use extended board_info */ + +#define CFG_HZ 100 /* decr freq: 1 ms ticks */ + + +#endif /* __CONFIG_H */ diff --git a/include/configs/MIP405.h b/include/configs/MIP405.h index 0af9c68..6c2f17d 100644 --- a/include/configs/MIP405.h +++ b/include/configs/MIP405.h @@ -128,7 +128,7 @@ #define CONFIG_BAUDRATE 9600 /* STD Baudrate */ #define CONFIG_BOOTDELAY 5 /* autoboot (do NOT change this set environment variable "bootdelay" to -1 instead) */ -#define CONFIG_BOOT_RETRY_TIME -10 /* feature is avaiable but not enabled */ +/* #define CONFIG_BOOT_RETRY_TIME -10 /XXX* feature is available but not enabled */ #define CONFIG_ZERO_BOOTDELAY_CHECK /* check console even if bootdelay = 0 */ #define CONFIG_BOOTCOMMAND "diskboot 400000 0:1; bootm" /* autoboot command */ diff --git a/include/configs/PCI405.h b/include/configs/PCI405.h index 2671125..469d88f 100644 --- a/include/configs/PCI405.h +++ b/include/configs/PCI405.h @@ -32,6 +32,7 @@ * High Level Configuration Options * (easy to change) */ +#define CONFIG_IDENT_STRING " $Name: esd_PCI405_05_07_28 $" #define CONFIG_405GP 1 /* This is a PPC405 CPU */ #define CONFIG_4xx 1 /* ...member of PPC4xx family */ diff --git a/include/configs/PIP405.h b/include/configs/PIP405.h index dbec242..9ac5715 100644 --- a/include/configs/PIP405.h +++ b/include/configs/PIP405.h @@ -112,7 +112,7 @@ #define CONFIG_BOOTDELAY 5 /* autoboot (do NOT change this set environment variable "bootdelay" to -1 instead) */ -#define CONFIG_BOOT_RETRY_TIME -10 /* feature is avaiable but not enabled */ +/* #define CONFIG_BOOT_RETRY_TIME -10 /XXX* feature is available but not enabled */ #define CONFIG_ZERO_BOOTDELAY_CHECK /* check console even if bootdelay = 0 */ diff --git a/include/configs/VCMA9.h b/include/configs/VCMA9.h index bde12e1..3f29190 100644 --- a/include/configs/VCMA9.h +++ b/include/configs/VCMA9.h @@ -138,7 +138,7 @@ #define CONFIG_BOOTDELAY 5 /* autoboot (do NOT change this set environment variable "bootdelay" to -1 instead) */ -#define CONFIG_BOOT_RETRY_TIME -10 /* feature is avaiable but not enabled */ +/* #define CONFIG_BOOT_RETRY_TIME -10 /XXX* feature is available but not enabled */ #define CONFIG_ZERO_BOOTDELAY_CHECK /* check console even if bootdelay = 0 */ #define CONFIG_NETMASK 255.255.255.0 diff --git a/include/configs/WUH405.h b/include/configs/WUH405.h index b4dfdf4..5c9950f 100644 --- a/include/configs/WUH405.h +++ b/include/configs/WUH405.h @@ -32,6 +32,7 @@ * High Level Configuration Options * (easy to change) */ +#define CONFIG_IDENT_STRING " $Name: $" #define CONFIG_405EP 1 /* This is a PPC405 CPU */ #define CONFIG_4xx 1 /* ...member of PPC4xx family */ diff --git a/include/configs/hmi1001.h b/include/configs/hmi1001.h index 7f9fea5..9da15ed 100644 --- a/include/configs/hmi1001.h +++ b/include/configs/hmi1001.h @@ -65,6 +65,7 @@ CFG_CMD_I2C | \ CFG_CMD_IDE | \ CFG_CMD_NFS | \ + CFG_CMD_PCI | \ CFG_CMD_SNTP) /* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ @@ -307,4 +308,21 @@ #define CONFIG_ATAPI 1 +/* + * PCI Mapping: + * 0x40000000 - 0x4fffffff - PCI Memory + * 0x50000000 - 0x50ffffff - PCI IO Space + */ +#define CONFIG_PCI 1 +#define CONFIG_PCI_PNP 1 +#define CONFIG_PCI_SCAN_SHOW 1 + +#define CONFIG_PCI_MEM_BUS 0x40000000 +#define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS +#define CONFIG_PCI_MEM_SIZE 0x10000000 + +#define CONFIG_PCI_IO_BUS 0x50000000 +#define CONFIG_PCI_IO_PHYS CONFIG_PCI_IO_BUS +#define CONFIG_PCI_IO_SIZE 0x01000000 + #endif /* __CONFIG_H */ diff --git a/include/configs/stxxtc.h b/include/configs/stxxtc.h new file mode 100644 index 0000000..a0e1ba7 --- /dev/null +++ b/include/configs/stxxtc.h @@ -0,0 +1,592 @@ +/* + * (C) Copyright 2000-2004 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * 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 + */ + +/* + * Dan Malek, Embedded Edge, LLC, dan@embeddededge.com + * U-Boot port on STx XTc 8xx board + * Mostly copied from Panto's NETTA2 board. + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC875 1 /* This is a MPC875 CPU */ +#define CONFIG_STXXTC 1 /* ...on a STx XTc board */ + +#define CONFIG_8xx_CONS_SMC1 1 /* Console is on SMC1 */ +#undef CONFIG_8xx_CONS_SMC2 +#undef CONFIG_8xx_CONS_NONE + +#define CONFIG_BAUDRATE 38400 /* console baudrate = 38.4kbps */ + +#define CONFIG_XIN 10000000 /* 10 MHz input xtal */ + +/* Select one of few clock rates defined later in this file. +*/ +/* #define MPC8XX_HZ 50000000 */ +#define MPC8XX_HZ 66666666 + +#define CONFIG_8xx_GCLK_FREQ MPC8XX_HZ + +#if 0 +#define CONFIG_BOOTDELAY -1 /* autoboot disabled */ +#else +#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ +#endif + +#undef CONFIG_CLOCKS_IN_MHZ /* clocks NOT passsed to Linux in MHz */ + +#undef CONFIG_BOOTARGS +#define CONFIG_BOOTCOMMAND \ + "tftpboot; " \ + "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \ + "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \ + "bootm" + +#define CONFIG_AUTOSCRIPT +#define CONFIG_LOADS_ECHO 0 /* echo off for serial download */ +#undef CFG_LOADS_BAUD_CHANGE /* don't allow baudrate change */ + +#undef CONFIG_WATCHDOG /* watchdog disabled */ + +#define CONFIG_STATUS_LED 1 /* Status LED enabled */ +#define CONFIG_BOARD_SPECIFIC_LED /* version has board specific leds */ + +#define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_BOOTFILESIZE | CONFIG_BOOTP_NISDOMAIN) + +#undef CONFIG_MAC_PARTITION +#undef CONFIG_DOS_PARTITION + +#define CONFIG_RTC_MPC8xx /* use internal RTC of MPC8xx */ + +#define CONFIG_NET_MULTI 1 /* the only way to get the FEC in */ +#define FEC_ENET 1 /* eth.c needs it that way... */ +#undef CFG_DISCOVER_PHY +#define CONFIG_MII 1 +#undef CONFIG_RMII + +#define CONFIG_ETHER_ON_FEC1 1 +#define CONFIG_FEC1_PHY 1 /* phy address of FEC */ +#undef CONFIG_FEC1_PHY_NORXERR + +#define CONFIG_ETHER_ON_FEC2 1 +#define CONFIG_FEC2_PHY 3 +#undef CONFIG_FEC2_PHY_NORXERR + +#define CONFIG_ENV_OVERWRITE 1 /* allow modification of vendor params */ + +#define CONFIG_COMMANDS ( CONFIG_CMD_DFL | \ + CFG_CMD_NAND | \ + CFG_CMD_DHCP | \ + CFG_CMD_PING | \ + CFG_CMD_MII | \ + CFG_CMD_NFS) + +#define CONFIG_BOARD_EARLY_INIT_F 1 +#define CONFIG_MISC_INIT_R + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP /* undef to save memory */ +#define CFG_PROMPT "xtc> " /* Monitor Command Prompt */ + +#define CFG_HUSH_PARSER 1 +#define CFG_PROMPT_HUSH_PS2 "> " + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ +#else +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS 16 /* max number of command args */ +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */ + +#define CFG_MEMTEST_START 0x0300000 /* memtest works on */ +#define CFG_MEMTEST_END 0x0700000 /* 3 ... 7 MB in DRAM */ + +#define CFG_LOAD_ADDR 0x100000 /* default load address */ + +#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */ + +#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ +/*----------------------------------------------------------------------- + * Internal Memory Mapped Register + */ +#define CFG_IMMR 0xFF000000 + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ +#define CFG_INIT_RAM_ADDR CFG_IMMR +#define CFG_INIT_RAM_END 0x3000 /* End of used area in DPRAM */ +#define CFG_GBL_DATA_SIZE 64 /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE 0x00000000 +#define CFG_FLASH_BASE 0x40000000 +#if defined(DEBUG) +#define CFG_MONITOR_LEN (256 << 10) /* Reserve 256 kB for Monitor */ +#else +#define CFG_MONITOR_LEN (192 << 10) /* Reserve 192 kB for Monitor */ +#endif + +/* yes this is weird, I know :) */ +#define CFG_MONITOR_BASE (CFG_FLASH_BASE | 0x00F00000) +#define CFG_MALLOC_LEN (128 << 10) /* Reserve 128 kB for malloc() */ + +#define CFG_RESET_ADDRESS 0x80000000 + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */ + +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_ENV_IS_IN_FLASH 1 +#define CFG_ENV_SECT_SIZE 0x10000 + +#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x00000000) +#define CFG_ENV_OFFSET 0 +#define CFG_ENV_SIZE 0x4000 + +#define CFG_ENV_ADDR_REDUND (CFG_FLASH_BASE + 0x00010000) +#define CFG_ENV_OFFSET_REDUND 0 +#define CFG_ENV_SIZE_REDUND CFG_ENV_SIZE + +#define CFG_FLASH_CFI 1 +#define CFG_FLASH_CFI_DRIVER 1 +#undef CFG_FLASH_USE_BUFFER_WRITE /* use buffered writes (20x faster) */ +#define CFG_MAX_FLASH_SECT 128 /* max number of sectors on one chip */ +#define CFG_MAX_FLASH_BANKS 2 /* max number of memory banks */ + +#define CFG_FLASH_BANKS_LIST { CFG_FLASH_BASE, CFG_FLASH_BASE + 0x2000000 } + +#define CFG_FLASH_PROTECTION + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE 16 /* For all MPC8xx CPUs */ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT 4 /* log base 2 of the above value */ +#endif + +/*----------------------------------------------------------------------- + * SYPCR - System Protection Control 11-9 + * SYPCR can only be written once after reset! + *----------------------------------------------------------------------- + * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze + */ +#if defined(CONFIG_WATCHDOG) +#define CFG_SYPCR (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \ + SYPCR_SWE | SYPCR_SWRI| SYPCR_SWP) +#else +#define CFG_SYPCR (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP) +#endif + +/*----------------------------------------------------------------------- + * SIUMCR - SIU Module Configuration 11-6 + *----------------------------------------------------------------------- + * PCMCIA config., multi-function pin tri-state + */ +#define CFG_SIUMCR (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01 | SIUMCR_FRC | SIUMCR_GB5E) + +/*----------------------------------------------------------------------- + * TBSCR - Time Base Status and Control 11-26 + *----------------------------------------------------------------------- + * Clear Reference Interrupt Status, Timebase freezing enabled + */ +#define CFG_TBSCR (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF) + +/*----------------------------------------------------------------------- + * RTCSC - Real-Time Clock Status and Control Register 11-27 + *----------------------------------------------------------------------- + */ +#define CFG_RTCSC (RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE) + +/*----------------------------------------------------------------------- + * PISCR - Periodic Interrupt Status and Control 11-31 + *----------------------------------------------------------------------- + * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled + */ +#define CFG_PISCR (PISCR_PS | PISCR_PITF) + +/*----------------------------------------------------------------------- + * PLPRCR - PLL, Low-Power, and Reset Control Register 15-30 + *----------------------------------------------------------------------- + * Reset PLL lock status sticky bit, timer expired status bit and timer + * interrupt status bit + * + */ + +#if CONFIG_XIN == 10000000 + +#if MPC8XX_HZ == 50000000 +#define CFG_PLPRCR ((0 << PLPRCR_MFN_SHIFT) | (0 << PLPRCR_MFD_SHIFT) | \ + (1 << PLPRCR_S_SHIFT) | (10 << PLPRCR_MFI_SHIFT) | (0 << PLPRCR_PDF_SHIFT) | \ + PLPRCR_TEXPS) +#elif MPC8XX_HZ == 66666666 +#define CFG_PLPRCR ((1 << PLPRCR_MFN_SHIFT) | (2 << PLPRCR_MFD_SHIFT) | \ + (1 << PLPRCR_S_SHIFT) | (13 << PLPRCR_MFI_SHIFT) | (0 << PLPRCR_PDF_SHIFT) | \ + PLPRCR_TEXPS) +#else +#error unsupported CPU freq for XIN = 10MHz +#endif +#else +#error unsupported freq for XIN (must be 10MHz) +#endif + + +/* + *----------------------------------------------------------------------- + * SCCR - System Clock and reset Control Register 15-27 + *----------------------------------------------------------------------- + * Set clock output, timebase and RTC source and divider, + * power management and some other internal clocks + * + * Note: When TBS == 0 the timebase is independent of current cpu clock. + */ + +#define SCCR_MASK SCCR_EBDF11 +#if MPC8XX_HZ > 66666666 +#define CFG_SCCR (/* SCCR_TBS | */ SCCR_CRQEN | \ + SCCR_COM00 | SCCR_DFSYNC00 | SCCR_DFBRG00 | \ + SCCR_DFNL000 | SCCR_DFNH000 | SCCR_DFLCD000 | \ + SCCR_DFALCD00 | SCCR_EBDF01) +#else +#define CFG_SCCR (/* SCCR_TBS | */ SCCR_CRQEN | \ + SCCR_COM00 | SCCR_DFSYNC00 | SCCR_DFBRG00 | \ + SCCR_DFNL000 | SCCR_DFNH000 | SCCR_DFLCD000 | \ + SCCR_DFALCD00) +#endif + +/*----------------------------------------------------------------------- + * + *----------------------------------------------------------------------- + * + */ +/*#define CFG_DER 0x2002000F*/ +#define CFG_DER 0 + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM 0x40000000 /* FLASH bank #0 */ +#define FLASH_BASE1_PRELIM 0x42000000 /* FLASH bank #1 */ + +/* used to re-map FLASH both when starting from SRAM or FLASH: + * restrict access enough to keep SRAM working (if any) + * but not too much to meddle with FLASH accesses + */ + +#define FLASH_BANK_MAX_SIZE 0x01000000 /* max size per chip */ + +#define CFG_REMAP_OR_AM 0x80000000 +#define CFG_PRELIM_OR_AM (0xFFFFFFFFLU & ~(FLASH_BANK_MAX_SIZE - 1)) + +/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1 */ +#define CFG_OR_TIMING_FLASH (OR_CSNT_SAM | OR_BI | OR_SCY_5_CLK | OR_TRLX) + +#define CFG_OR0_REMAP (CFG_REMAP_OR_AM | CFG_OR_TIMING_FLASH) +#define CFG_OR0_PRELIM (CFG_PRELIM_OR_AM | CFG_OR_TIMING_FLASH) +#define CFG_BR0_PRELIM ((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V ) + +#define CFG_OR1_PRELIM ((0xFFFFFFFFLU & ~(FLASH_BANK_MAX_SIZE - 1)) | CFG_OR_TIMING_FLASH) +#define CFG_BR1_PRELIM ((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V ) + +/* + * BR4 and OR4 (SDRAM) + * + */ +#define SDRAM_BASE1_PRELIM 0x00000000 /* SDRAM bank #0 */ +#define SDRAM_MAX_SIZE (256 << 20) /* max 256MB per bank */ + +/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care) */ +#define CFG_OR_TIMING_SDRAM (OR_CSNT_SAM | OR_G5LS) + +#define CFG_OR4_PRELIM ((0xFFFFFFFFLU & ~(SDRAM_MAX_SIZE - 1)) | CFG_OR_TIMING_SDRAM) +#define CFG_BR4_PRELIM ((SDRAM_BASE1_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_PS_32 | BR_V) + +/* + * Memory Periodic Timer Prescaler + */ + +/* + * Memory Periodic Timer Prescaler + * + * The Divider for PTA (refresh timer) configuration is based on an + * example SDRAM configuration (64 MBit, one bank). The adjustment to + * the number of chip selects (NCS) and the actually needed refresh + * rate is done by setting MPTPR. + * + * PTA is calculated from + * PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS) + * + * gclk CPU clock (not bus clock!) + * Trefresh Refresh cycle * 4 (four word bursts used) + * + * 4096 Rows from SDRAM example configuration + * 1000 factor s -> ms + * 32 PTP (pre-divider from MPTPR) from SDRAM example configuration + * 4 Number of refresh cycles per period + * 64 Refresh cycle in ms per number of rows + * -------------------------------------------- + * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000 + * + * 50 MHz => 50.000.000 / Divider = 98 + * 66 Mhz => 66.000.000 / Divider = 129 + * 80 Mhz => 80.000.000 / Divider = 156 + */ + +#define CFG_MAMR_PTA 234 + +/* + * For 16 MBit, refresh rates could be 31.3 us + * (= 64 ms / 2K = 125 / quad bursts). + * For a simpler initialization, 15.6 us is used instead. + * + * #define CFG_MPTPR_2BK_2K MPTPR_PTP_DIV32 for 2 banks + * #define CFG_MPTPR_1BK_2K MPTPR_PTP_DIV64 for 1 bank + */ +#define CFG_MPTPR_2BK_4K MPTPR_PTP_DIV16 /* setting for 2 banks */ +#define CFG_MPTPR_1BK_4K MPTPR_PTP_DIV32 /* setting for 1 bank */ + +/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit */ +#define CFG_MPTPR_2BK_8K MPTPR_PTP_DIV8 /* setting for 2 banks */ +#define CFG_MPTPR_1BK_8K MPTPR_PTP_DIV16 /* setting for 1 bank */ + +/* + * MAMR settings for SDRAM + */ + +/* 8 column SDRAM */ +#define CFG_MAMR_8COL ((CFG_MAMR_PTA << MAMR_PTA_SHIFT) | MAMR_PTAE | \ + MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 | \ + MAMR_RLFA_1X | MAMR_WLFA_1X | MAMR_TLFA_4X) + +/* 9 column SDRAM */ +#define CFG_MAMR_9COL ((CFG_MAMR_PTA << MAMR_PTA_SHIFT) | MAMR_PTAE | \ + MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 | \ + MAMR_RLFA_1X | MAMR_WLFA_1X | MAMR_TLFA_4X) + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */ +#define BOOTFLAG_WARM 0x02 /* Software reboot */ + +#define CONFIG_LAST_STAGE_INIT /* needed to reset the damn phys */ + +/****************************************************************/ + +#define NAND_SIZE 0x00010000 /* 64K */ +#define NAND_BASE 0xF1000000 + +/****************************************************************/ + +/* NAND */ +#define CFG_NAND_BASE NAND_BASE +#define CONFIG_MTD_NAND_ECC_JFFS2 +#define CONFIG_MTD_NAND_VERIFY_WRITE +#define CONFIG_MTD_NAND_UNSAFE + +#define CFG_MAX_NAND_DEVICE 1 +#undef NAND_NO_RB + +#define SECTORSIZE 512 +#define ADDR_COLUMN 1 +#define ADDR_PAGE 2 +#define ADDR_COLUMN_PAGE 3 +#define NAND_ChipID_UNKNOWN 0x00 +#define NAND_MAX_FLOORS 1 +#define NAND_MAX_CHIPS 1 + +/* ALE = PC15, CLE = PB23, CE = PA7, F_RY_BY = PA6 */ +#define NAND_DISABLE_CE(nand) \ + do { \ + (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_padat) |= (1 << (15 - 7)); \ + } while(0) + +#define NAND_ENABLE_CE(nand) \ + do { \ + (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_padat) &= ~(1 << (15 - 7)); \ + } while(0) + +#define NAND_CTL_CLRALE(nandptr) \ + do { \ + (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat) &= ~(1 << (15 - 15)); \ + } while(0) + +#define NAND_CTL_SETALE(nandptr) \ + do { \ + (((volatile immap_t *)CFG_IMMR)->im_ioport.iop_pcdat) |= (1 << (15 - 15)); \ + } while(0) + +#define NAND_CTL_CLRCLE(nandptr) \ + do { \ + (((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat) &= ~(1 << (31 - 23)); \ + } while(0) + +#define NAND_CTL_SETCLE(nandptr) \ + do { \ + (((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat) |= (1 << (31 - 23)); \ + } while(0) + +#ifndef NAND_NO_RB +#define NAND_WAIT_READY(nand) \ + do { \ + int _tries = 0; \ + while ((((volatile immap_t *)CFG_IMMR)->im_ioport.iop_padat & (1 << (15 - 6))) == 0) \ + if (++_tries > 100000) \ + break; \ + } while (0) +#else +#define NAND_WAIT_READY(nand) udelay(12) +#endif + +#define WRITE_NAND_COMMAND(d, adr) \ + do { \ + *(volatile unsigned char *)((unsigned long)(adr)) = (unsigned char)(d); \ + } while(0) + +#define WRITE_NAND_ADDRESS(d, adr) \ + do { \ + *(volatile unsigned char *)((unsigned long)(adr)) = (unsigned char)(d); \ + } while(0) + +#define WRITE_NAND(d, adr) \ + do { \ + *(volatile unsigned char *)((unsigned long)(adr)) = (unsigned char)(d); \ + } while(0) + +#define READ_NAND(adr) \ + ((unsigned char)(*(volatile unsigned char *)(unsigned long)(adr))) + +/*****************************************************************************/ + +#define CFG_DIRECT_FLASH_TFTP +#define CFG_DIRECT_NAND_TFTP + +/*****************************************************************************/ + +/* Status Leds are on the MODCK pins, which become the PCMCIA PGCRB, + * CxOE and CxRESET. We use the CxOE. + */ +#define STATUS_LED_BIT 0x00000080 /* bit 24 */ + +#define STATUS_LED_PERIOD (CFG_HZ / 2) +#define STATUS_LED_STATE STATUS_LED_BLINKING + +#define STATUS_LED_ACTIVE 0 /* LED on for bit == 0 */ +#define STATUS_LED_BOOT 0 /* LED 0 used for boot status */ + +#ifndef __ASSEMBLY__ + +/* LEDs */ + +/* led_id_t is unsigned int mask */ +typedef unsigned int led_id_t; + +#define __led_toggle(_msk) \ + do { \ + ((volatile immap_t *)CFG_IMMR)->im_pcmcia.pcmc_pgcrb ^= (_msk); \ + } while(0) + +#define __led_set(_msk, _st) \ + do { \ + if ((_st)) \ + ((volatile immap_t *)CFG_IMMR)->im_pcmcia.pcmc_pgcrb |= (_msk); \ + else \ + ((volatile immap_t *)CFG_IMMR)->im_pcmcia.pcmc_pgcrb &= ~(_msk); \ + } while(0) + +#define __led_init(msk, st) __led_set(msk, st) + +#endif + +/******************************************************************************/ + +#define CFG_CONSOLE_IS_IN_ENV 1 +#define CFG_CONSOLE_OVERWRITE_ROUTINE 1 +#define CFG_CONSOLE_ENV_OVERWRITE 1 + +/******************************************************************************/ + +/* use board specific hardware */ +#undef CONFIG_WATCHDOG /* watchdog disabled */ +#define CONFIG_HW_WATCHDOG +#define CONFIG_SHOW_ACTIVITY + +/*****************************************************************************/ + +#define CONFIG_AUTO_COMPLETE 1 +#define CONFIG_CRC32_VERIFY 1 +#define CONFIG_HUSH_OLD_PARSER_COMPATIBLE 1 + +/* Note: change below for your network setting!!! + * This was done just to facilitate manufacturing test and configuration. + */ +#define CONFIG_ETHADDR 00:e0:0c:07:9b:8a + +#define CONFIG_SERVERIP 192.168.08.1 +#define CONFIG_IPADDR 192.168.08.85 +#define CONFIG_GATEWAYIP 192.168.08.1 +#define CONFIG_NETMASK 255.255.255.0 +#define CONFIG_HOSTNAME stx_xtc +#define CONFIG_ROOTPATH /xtcroot +#define CONFIG_BOOTFILE uImage +#define CONFIG_LOADADDR 0x1000000 + + +#endif /* __CONFIG_H */ diff --git a/include/ppc440.h b/include/ppc440.h index 02f0a2e..a5024e6 100644 --- a/include/ppc440.h +++ b/include/ppc440.h @@ -842,7 +842,7 @@ #define EBC_BXCR_BW_MASK 0x00006000 #define EBC_BXCR_BW_8BIT 0x00000000 #define EBC_BXCR_BW_16BIT 0x00002000 - +#define EBC_BXCR_BW_32BIT 0x00006000 #define EBC_BXAP_BME_ENABLED 0x80000000 #define EBC_BXAP_BME_DISABLED 0x00000000 #define EBC_BXAP_TWT_ENCODE(n) ((((unsigned long)(n))&0xFF)<<23) diff --git a/include/status_led.h b/include/status_led.h index b80780a..a56883b 100644 --- a/include/status_led.h +++ b/include/status_led.h @@ -336,6 +336,9 @@ void status_led_set (int led, int state); /***** NetPhone ********************************************************/ #elif defined(CONFIG_NETPHONE) || defined(CONFIG_NETTA2) /* XXX empty just to avoid the error */ +/***** STx XTc ********************************************************/ +#elif defined(CONFIG_STXXTC) +/* XXX empty just to avoid the error */ /***** sbc8240 ********************************************************/ #elif defined(CONFIG_WRSBC8240) /* XXX empty just to avoid the error */ diff --git a/include/version.h b/include/version.h index 2b9b617..4f8b498 100644 --- a/include/version.h +++ b/include/version.h @@ -24,6 +24,6 @@ #ifndef __VERSION_H__ #define __VERSION_H__ -#define U_BOOT_VERSION "U-Boot 1.1.3" +#define U_BOOT_VERSION "U-Boot 1.1.4" #endif /* __VERSION_H__ */ diff --git a/lib_ppc/board.c b/lib_ppc/board.c index 09c4f64..dab268e 100644 --- a/lib_ppc/board.c +++ b/lib_ppc/board.c @@ -828,7 +828,7 @@ void board_init_r (gd_t *id, ulong dest_addr) /* handle the 3rd ethernet address */ s = getenv ("eth2addr"); -#if defined(CONFIG_XPEDITE1K) +#if defined(CONFIG_XPEDITE1K) || defined(CONFIG_METROBOX) || defined(CONFIG_KAREF) if (s == NULL) board_get_enetaddr(bd->bi_enet2addr); else @@ -843,7 +843,7 @@ void board_init_r (gd_t *id, ulong dest_addr) #ifdef CONFIG_HAS_ETH3 /* handle 4th ethernet address */ s = getenv("eth3addr"); -#if defined(CONFIG_XPEDITE1K) +#if defined(CONFIG_XPEDITE1K) || defined(CONFIG_METROBOX) || defined(CONFIG_KAREF) if (s == NULL) board_get_enetaddr(bd->bi_enet3addr); else @@ -40,10 +40,10 @@ * * DHCP: * - * Prerequisites: - own ethernet address - * We want: - IP, Netmask, ServerIP, Gateway IP - * - bootfilename, lease time - * Next step: - TFTP + * Prerequisites: - own ethernet address + * We want: - IP, Netmask, ServerIP, Gateway IP + * - bootfilename, lease time + * Next step: - TFTP * * TFTP: * @@ -67,7 +67,7 @@ * * SNTP: * - * Prerequisites: - own ethernet address + * Prerequisites: - own ethernet address * - own IP address * We want: - network time * Next step: none @@ -185,7 +185,7 @@ static int net_check_prereq (proto_t protocol); IPaddr_t NetArpWaitPacketIP; IPaddr_t NetArpWaitReplyIP; uchar *NetArpWaitPacketMAC; /* MAC address of waiting packet's destination */ -uchar *NetArpWaitTxPacket; /* THE transmit packet */ +uchar *NetArpWaitTxPacket; /* THE transmit packet */ int NetArpWaitTxPacketSize; uchar NetArpWaitPacketBuf[PKTSIZE_ALIGN + PKTALIGN]; ulong NetArpWaitTimerStart; @@ -212,8 +212,8 @@ void ArpRequest (void) arp->ar_pln = 4; arp->ar_op = htons (ARPOP_REQUEST); - memcpy (&arp->ar_data[0], NetOurEther, 6); /* source ET addr */ - NetWriteIP ((uchar *) & arp->ar_data[6], NetOurIP); /* source IP addr */ + memcpy (&arp->ar_data[0], NetOurEther, 6); /* source ET addr */ + NetWriteIP ((uchar *) & arp->ar_data[6], NetOurIP); /* source IP addr */ for (i = 10; i < 16; ++i) { arp->ar_data[i] = 0; /* dest ET addr = 0 */ } @@ -372,11 +372,11 @@ restart: */ NetOurIP = 0; NetServerIP = getenv_IPaddr ("serverip"); - NetOurVLAN = getenv_VLAN("vlan"); /* VLANs must be read */ - NetOurNativeVLAN = getenv_VLAN("nvlan"); - case CDP: - NetOurVLAN = getenv_VLAN("vlan"); /* VLANs must be read */ - NetOurNativeVLAN = getenv_VLAN("nvlan"); + NetOurVLAN = getenv_VLAN("vlan"); /* VLANs must be read */ + NetOurNativeVLAN = getenv_VLAN("nvlan"); + case CDP: + NetOurVLAN = getenv_VLAN("vlan"); /* VLANs must be read */ + NetOurNativeVLAN = getenv_VLAN("nvlan"); break; default: break; @@ -1410,7 +1410,7 @@ NetReceive(volatile uchar * inpkt, int len) puts (" ICMP Host Redirect to "); print_IPaddr(icmph->un.gateway); putc(' '); - break; + return; #if (CONFIG_COMMANDS & CFG_CMD_PING) case ICMP_ECHO_REPLY: /* @@ -1418,7 +1418,7 @@ NetReceive(volatile uchar * inpkt, int len) */ /* XXX point to ip packet */ (*packetHandler)((uchar *)ip, 0, 0, 0); - break; + return; #endif default: return; @@ -1427,6 +1427,46 @@ NetReceive(volatile uchar * inpkt, int len) return; } +#ifdef CONFIG_UDP_CHECKSUM + if (ip->udp_xsum != 0) { + ulong xsum; + ushort *sumptr; + ushort sumlen; + + xsum = ip->ip_p; + xsum += (ntohs(ip->udp_len)); + xsum += (ntohl(ip->ip_src) >> 16) & 0x0000ffff; + xsum += (ntohl(ip->ip_src) >> 0) & 0x0000ffff; + xsum += (ntohl(ip->ip_dst) >> 16) & 0x0000ffff; + xsum += (ntohl(ip->ip_dst) >> 0) & 0x0000ffff; + + sumlen = ntohs(ip->udp_len); + sumptr = (ushort *) &(ip->udp_src); + + while (sumlen > 1) { + ushort sumdata; + + sumdata = *sumptr++; + xsum += ntohs(sumdata); + sumlen -= 2; + } + if (sumlen > 0) { + ushort sumdata; + + sumdata = *(unsigned char *) sumptr; + sumdata = (sumdata << 8) & 0xff00; + xsum += sumdata; + } + while ((xsum >> 16) != 0) { + xsum = (xsum & 0x0000ffff) + ((xsum >> 16) & 0x0000ffff); + } + if ((xsum != 0x00000000) && (xsum != 0x0000ffff)) { + printf(" UDP wrong checksum %08x %08x\n", xsum, ntohs(ip->udp_xsum)); + return; + } + } +#endif + #ifdef CONFIG_NETCONSOLE nc_input_packet((uchar *)ip +IP_HDR_SIZE, ntohs(ip->udp_dst), @@ -1477,7 +1517,7 @@ static int net_check_prereq (proto_t protocol) return (1); } #if (CONFIG_COMMANDS & (CFG_CMD_PING | CFG_CMD_SNTP)) - common: + common: #endif if (NetOurIP == 0) { diff --git a/tools/bddb/README b/tools/bddb/README index 778e41c..9bee59a 100644 --- a/tools/bddb/README +++ b/tools/bddb/README @@ -1,7 +1,7 @@ Hymod Board Database (C) Copyright 2001 -Murray Jensen <Murray.Jensen@cmst.csiro.au> +Murray Jensen <Murray.Jensen@csiro.au> CSIRO Manufacturing Science and Technology, Preston Lab 25-Jun-01 diff --git a/tools/bddb/badsubmit.php b/tools/bddb/badsubmit.php index af0a962..5092a31 100644 --- a/tools/bddb/badsubmit.php +++ b/tools/bddb/badsubmit.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab require("defs.php"); diff --git a/tools/bddb/brlog.php b/tools/bddb/brlog.php index fa651ae..fccfbd0 100644 --- a/tools/bddb/brlog.php +++ b/tools/bddb/brlog.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // list page (hymod_bddb / boards) @@ -10,8 +10,9 @@ pg_head("$bddb_label - Browse Board Log"); - if (!isset($serno) || $serno == 0) - die("serial number not specified!"); + $serno=intval($serno); + if ($serno == 0) + die("serial number not specified or invalid!"); function print_cell($str) { if ($str == '') @@ -55,16 +56,16 @@ <hr></hr> <p></p> <?php - $limit=abs(isset($limit)?$limit:20); - $offset=abs(isset($offset)?$offset:0); + $limit=abs(isset($_REQUEST['limit'])?$_REQUEST['limit']:20); + $offset=abs(isset($_REQUEST['offset'])?$_REQUEST['offset']:0); $lr=mysql_query("select count(*) as n from log where serno=$serno"); $lrow=mysql_fetch_array($lr); if($lrow['n']>$limit){ $preoffset=max(0,$offset-$limit); $postoffset=$offset+$limit; echo "<table width=\"100%\">\n<tr align=center>\n"; - printf("<td><%sa href=\"%s?serno=$serno&offset=%d\"><img border=0 alt=\"<\" src=\"/icons/left.gif\"></a></td>\n", $offset>0?"":"no", $PHP_SELF, $preoffset); - printf("<td><%sa href=\"%s?serno=$serno&offset=%d\"><img border=0 alt=\">\" src=\"/icons/right.gif\"></a></td>\n", $postoffset<$lrow['n']?"":"no", $PHP_SELF, $postoffset); + printf("<td><%sa href=\"%s?submit=Log&serno=$serno&offset=%d\"><img border=0 alt=\"<\" src=\"/icons/left.gif\"></a></td>\n", $offset>0?"":"no", $PHP_SELF, $preoffset); + printf("<td><%sa href=\"%s?submit=Log&serno=$serno&offset=%d\"><img border=0 alt=\">\" src=\"/icons/right.gif\"></a></td>\n", $postoffset<$lrow['n']?"":"no", $PHP_SELF, $postoffset); echo "</tr>\n</table>\n"; } mysql_free_result($lr); diff --git a/tools/bddb/browse.php b/tools/bddb/browse.php index b7cd508..675dfab 100644 --- a/tools/bddb/browse.php +++ b/tools/bddb/browse.php @@ -1,36 +1,38 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // list page (hymod_bddb / boards) require("defs.php"); - if (!isset($verbose)) - $verbose = 0; + $serno=isset($_REQUEST['serno'])?$_REQUEST['serno']:''; - if (!isset($serno)) - $serno = 0; + $verbose=isset($_REQUEST['verbose'])?intval($_REQUEST['verbose']):0; pg_head("$bddb_label - Browse database" . ($verbose?" (verbose)":"")); ?> <p></p> <?php - if ($serno == 0) { - $limit=abs(isset($limit)?$limit:20); - $offset=abs(isset($offset)?$offset:0); + $limit=isset($_REQUEST['limit'])?abs(intval($_REQUEST['limit'])):20; + $offset=isset($_REQUEST['offset'])?abs(intval($_REQUEST['offset'])):0; + + if ($serno == '') { + $lr=mysql_query("select count(*) as n from boards"); $lrow=mysql_fetch_array($lr); + if($lrow['n']>$limit){ $preoffset=max(0,$offset-$limit); $postoffset=$offset+$limit; - echo "<table width=\"100%\">\n<tr align=center>\n"; - printf("<td><%sa href=\"%s?offset=%d\"><img border=0 alt=\"<\" src=\"/icons/left.gif\"></a></td>\n", $offset>0?"":"no", $PHP_SELF, $preoffset); - printf("<td><%sa href=\"%s?offset=%d\"><img border=0 alt=\">\" src=\"/icons/right.gif\"></a></td>\n", $postoffset<$lrow['n']?"":"no", $PHP_SELF, $postoffset); + echo "<table width=\"100%\">\n<tr>\n"; + printf("<td align=left><%sa href=\"%s?submit=Browse&offset=%d&verbose=%d\"><img border=0 alt=\"<\" src=\"/icons/left.gif\"></a></td>\n", $offset>0?"":"no", $PHP_SELF, $preoffset, $verbose); + printf("<td align=right><%sa href=\"%s?submit=Browse&offset=%d&verbose=%d\"><img border=0 alt=\">\" src=\"/icons/right.gif\"></a></td>\n", $postoffset<$lrow['n']?"":"no", $PHP_SELF, $postoffset, $offset); echo "</tr>\n</table>\n"; } + mysql_free_result($lr); } ?> @@ -65,10 +67,28 @@ ?> </tr> <?php - if ($serno == 0) - $r=mysql_query("select * from boards order by serno limit $offset,$limit"); - else - $r=mysql_query("select * from boards where serno=$serno"); + $query = "select * from boards"; + if ($serno != '') { + $pre = " where "; + foreach (preg_split("/[\s,]+/", $serno) as $s) { + if (preg_match('/^[0-9]+$/',$s)) + $query .= $pre . "serno=" . $s; + else if (preg_match('/^([0-9]+)-([0-9]+)$/',$s,$m)) { + $m1 = intval($m[1]); $m2 = intval($m[2]); + if ($m2 <= $m1) + die("bad serial number range ($s)"); + $query .= $pre . "(serno>=$m[1] and serno<=$m[2])"; + } + else + die("illegal serial number ($s)"); + $pre = " or "; + } + } + $query .= " order by serno"; + if ($serno == '') + $query .= " limit $offset,$limit"; + + $r = mysql_query($query); function print_cell($str) { if ($str == '') @@ -117,10 +137,7 @@ <table width="100%"> <tr> <td align=center><?php - if ($verbose) - echo "<a href=\"browse.php?verbose=0\">Terse Listing</a>"; - else - echo "<a href=\"browse.php?verbose=1\">Verbose Listing</a>"; + printf("<a href=\"%s?submit=Browse&offset=%d&verbose=%d%s\">%s Listing</a>\n", $PHP_SELF, $offset, $verbose?0:1, $serno!=''?"&serno=$serno":'', $verbose?"Terse":"Verbose"); ?></td> <td align=center><a href="index.php">Back to Start</a></td> </tr> diff --git a/tools/bddb/config.php b/tools/bddb/config.php index 8d54993..6725757 100644 --- a/tools/bddb/config.php +++ b/tools/bddb/config.php @@ -1,6 +1,6 @@ <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // mysql database access info diff --git a/tools/bddb/create_tables.sql b/tools/bddb/create_tables.sql index aa007c1..a2a5788 100644 --- a/tools/bddb/create_tables.sql +++ b/tools/bddb/create_tables.sql @@ -4,8 +4,8 @@ # Host: localhost Database : hymod_bddb # (C) Copyright 2001 -# Murray Jensen <Murray.Jensen@cmst.csiro.au> -# CSIRO Manufacturing Science and Technology, Preston Lab +# Murray Jensen <Murray.Jensen@csiro.au> +# CSIRO Manufacturing and Infrastructure Technology, Preston Lab # -------------------------------------------------------- # @@ -22,38 +22,38 @@ CREATE TABLE boards ( rev tinyint(3) unsigned zerofill NOT NULL, location char(64), comments text, - sdram0 enum('32M','64M','128M','256M'), - sdram1 enum('32M','64M','128M','256M'), - sdram2 enum('32M','64M','128M','256M'), - sdram3 enum('32M','64M','128M','256M'), - flash0 enum('4M','8M','16M','32M','64M'), - flash1 enum('4M','8M','16M','32M','64M'), - flash2 enum('4M','8M','16M','32M','64M'), - flash3 enum('4M','8M','16M','32M','64M'), - zbt0 enum('512K','1M','2M','4M'), - zbt1 enum('512K','1M','2M','4M'), - zbt2 enum('512K','1M','2M','4M'), - zbt3 enum('512K','1M','2M','4M'), - zbt4 enum('512K','1M','2M','4M'), - zbt5 enum('512K','1M','2M','4M'), - zbt6 enum('512K','1M','2M','4M'), - zbt7 enum('512K','1M','2M','4M'), - zbt8 enum('512K','1M','2M','4M'), - zbt9 enum('512K','1M','2M','4M'), - zbta enum('512K','1M','2M','4M'), - zbtb enum('512K','1M','2M','4M'), - zbtc enum('512K','1M','2M','4M'), - zbtd enum('512K','1M','2M','4M'), - zbte enum('512K','1M','2M','4M'), - zbtf enum('512K','1M','2M','4M'), - xlxtyp0 enum('XCV300E','XCV400E','XCV600E'), - xlxtyp1 enum('XCV300E','XCV400E','XCV600E'), - xlxtyp2 enum('XCV300E','XCV400E','XCV600E'), - xlxtyp3 enum('XCV300E','XCV400E','XCV600E'), - xlxspd0 enum('6','7','8'), - xlxspd1 enum('6','7','8'), - xlxspd2 enum('6','7','8'), - xlxspd3 enum('6','7','8'), + sdram0 enum('32M','64M','128M','256M','512M','1G','2G','4G'), + sdram1 enum('32M','64M','128M','256M','512M','1G','2G','4G'), + sdram2 enum('32M','64M','128M','256M','512M','1G','2G','4G'), + sdram3 enum('32M','64M','128M','256M','512M','1G','2G','4G'), + flash0 enum('4M','8M','16M','32M','64M','128M','256M','512M','1G'), + flash1 enum('4M','8M','16M','32M','64M','128M','256M','512M','1G'), + flash2 enum('4M','8M','16M','32M','64M','128M','256M','512M','1G'), + flash3 enum('4M','8M','16M','32M','64M','128M','256M','512M','1G'), + zbt0 enum('512K','1M','2M','4M','8M','16M'), + zbt1 enum('512K','1M','2M','4M','8M','16M'), + zbt2 enum('512K','1M','2M','4M','8M','16M'), + zbt3 enum('512K','1M','2M','4M','8M','16M'), + zbt4 enum('512K','1M','2M','4M','8M','16M'), + zbt5 enum('512K','1M','2M','4M','8M','16M'), + zbt6 enum('512K','1M','2M','4M','8M','16M'), + zbt7 enum('512K','1M','2M','4M','8M','16M'), + zbt8 enum('512K','1M','2M','4M','8M','16M'), + zbt9 enum('512K','1M','2M','4M','8M','16M'), + zbta enum('512K','1M','2M','4M','8M','16M'), + zbtb enum('512K','1M','2M','4M','8M','16M'), + zbtc enum('512K','1M','2M','4M','8M','16M'), + zbtd enum('512K','1M','2M','4M','8M','16M'), + zbte enum('512K','1M','2M','4M','8M','16M'), + zbtf enum('512K','1M','2M','4M','8M','16M'), + xlxtyp0 enum('XCV300E','XCV400E','XCV600E','XC2V2000','XC2V3000','XC2V4000','XC2V6000','XC2VP2','XC2VP4','XC2VP7','XC2VP20','XC2VP30','XC2VP50','XC4VFX20','XC4VFX40','XC4VFX60','XC4VFX100','XC4VFX140'), + xlxtyp1 enum('XCV300E','XCV400E','XCV600E','XC2V2000','XC2V3000','XC2V4000','XC2V6000','XC2VP2','XC2VP4','XC2VP7','XC2VP20','XC2VP30','XC2VP50','XC4VFX20','XC4VFX40','XC4VFX60','XC4VFX100','XC4VFX140'), + xlxtyp2 enum('XCV300E','XCV400E','XCV600E','XC2V2000','XC2V3000','XC2V4000','XC2V6000','XC2VP2','XC2VP4','XC2VP7','XC2VP20','XC2VP30','XC2VP50','XC4VFX20','XC4VFX40','XC4VFX60','XC4VFX100','XC4VFX140'), + xlxtyp3 enum('XCV300E','XCV400E','XCV600E','XC2V2000','XC2V3000','XC2V4000','XC2V6000','XC2VP2','XC2VP4','XC2VP7','XC2VP20','XC2VP30','XC2VP50','XC4VFX20','XC4VFX40','XC4VFX60','XC4VFX100','XC4VFX140'), + xlxspd0 enum('6','7','8','4','5','9','10','11','12'), + xlxspd1 enum('6','7','8','4','5','9','10','11','12'), + xlxspd2 enum('6','7','8','4','5','9','10','11','12'), + xlxspd3 enum('6','7','8','4','5','9','10','11','12'), xlxtmp0 enum('COM','IND'), xlxtmp1 enum('COM','IND'), xlxtmp2 enum('COM','IND'), @@ -62,13 +62,13 @@ CREATE TABLE boards ( xlxgrd1 enum('NORMAL','ENGSAMP'), xlxgrd2 enum('NORMAL','ENGSAMP'), xlxgrd3 enum('NORMAL','ENGSAMP'), - cputyp enum('MPC8260'), - cpuspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ'), - cpmspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ'), - busspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ'), - hstype enum('AMCC-S2064A'), - hschin enum('0','1','2','3','4'), - hschout enum('0','1','2','3','4'), + cputyp enum('MPC8260(HIP3)','MPC8260A(HIP4)','MPC8280(HIP7)','MPC8560'), + cpuspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ','300MHZ','333MHZ','366MHZ','400MHZ','433MHZ','466MHZ','500MHZ','533MHZ','566MHZ','600MHZ','633MHZ','666MHZ','700MHZ','733MHZ','766MHZ','800MHZ','833MHZ','866MHZ','900MHZ','933MHZ','966MHZ','1000MHZ','1033MHZ','1066MHZ','1100MHZ','1133MHZ','1166MHZ','1200MHZ','1233MHZ','1266MHZ','1300MHZ','1333MHZ'), + cpmspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ','300MHZ','333MHZ','366MHZ','400MHZ','433MHZ','466MHZ','500MHZ','533MHZ','566MHZ','600MHZ','633MHZ','666MHZ','700MHZ','733MHZ','766MHZ','800MHZ','833MHZ','866MHZ','900MHZ','933MHZ','966MHZ','1000MHZ','1033MHZ','1066MHZ','1100MHZ','1133MHZ','1166MHZ','1200MHZ','1233MHZ','1266MHZ','1300MHZ','1333MHZ'), + busspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ','300MHZ','333MHZ','366MHZ','400MHZ','433MHZ','466MHZ','500MHZ','533MHZ','566MHZ','600MHZ','633MHZ','666MHZ','700MHZ','733MHZ','766MHZ','800MHZ','833MHZ','866MHZ','900MHZ','933MHZ','966MHZ','1000MHZ','1033MHZ','1066MHZ','1100MHZ','1133MHZ','1166MHZ','1200MHZ','1233MHZ','1266MHZ','1300MHZ','1333MHZ'), + hstype enum('AMCC-S2064A','Xilinx-Rockets'), + hschin enum('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'), + hschout enum('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'), PRIMARY KEY (serno), KEY serno (serno), UNIQUE serno_2 (serno) diff --git a/tools/bddb/defs.php b/tools/bddb/defs.php index 9361419..b7518e3 100644 --- a/tools/bddb/defs.php +++ b/tools/bddb/defs.php @@ -1,13 +1,13 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // contains mysql user id and password - keep secret require("config.php"); - if (isset($logout)) { + if (isset($_REQUEST['logout'])) { Header("status: 401 Unauthorized"); Header("HTTP/1.0 401 Unauthorized"); Header("WWW-authenticate: basic realm=\"$bddb_label\""); @@ -45,32 +45,40 @@ // board type $type_vals = array('IO','CLP','DSP','INPUT','ALT-INPUT','DISPLAY'); - // sdram sizes (nbits array is for write into eeprom config file) - $sdram_vals = array('','32M','64M','128M','256M'); - $sdram_nbits = array(0,25,26,27,28); + // Xilinx fpga types + $xlxtyp_vals = array('','XCV300E','XCV400E','XCV600E','XC2V2000','XC2V3000','XC2V4000','XC2V6000','XC2VP2','XC2VP4','XC2VP7','XC2VP20','XC2VP30','XC2VP50','XC4VFX20','XC4VFX40','XC4VFX60','XC4VFX100','XC4VFX140'); - // flash sizes (nbits array is for write into eeprom config file) - $flash_vals = array('','4M','8M','16M','32M','64M'); - $flash_nbits = array(0,22,23,24,25,26); + // Xilinx fpga speeds + $xlxspd_vals = array('','6','7','8','4','5','9','10','11','12'); - // zbt ram sizes (nbits array is for write into eeprom config file) - $zbt_vals = array('','512K','1M','2M','4M'); - $zbt_nbits = array(0,19,20,21,22); - - // Xilinx attributes - $xlxtyp_vals = array('','XCV300E','XCV400E','XCV600E','XC2V2000','XC2V3000','XC2V4000','XC2V6000'); - $xlxspd_vals = array('','6','7','8','4','5'); + // Xilinx fpga temperatures (commercial or industrial) $xlxtmp_vals = array('','COM','IND'); + + // Xilinx fpga grades (normal or engineering sample) $xlxgrd_vals = array('','NORMAL','ENGSAMP'); - // processor attributes - $cputyp_vals = array('','MPC8260'); - $clk_vals = array('','33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ'); + // CPU types + $cputyp_vals = array('','MPC8260(HIP3)','MPC8260A(HIP4)','MPC8280(HIP7)','MPC8560'); + + // CPU/BUS/CPM clock speeds + $clk_vals = array('','33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ','300MHZ','333MHZ','366MHZ','400MHZ','433MHZ','466MHZ','500MHZ','533MHZ','566MHZ','600MHZ','633MHZ','666MHZ','700MHZ','733MHZ','766MHZ','800MHZ','833MHZ','866MHZ','900MHZ','933MHZ','966MHZ','1000MHZ','1033MHZ','1066MHZ','1100MHZ','1133MHZ','1166MHZ','1200MHZ','1233MHZ','1266MHZ','1300MHZ','1333MHZ'); + + // sdram sizes (nbits array is for eeprom config file) + $sdram_vals = array('','32M','64M','128M','256M','512M','1G','2G','4G'); + $sdram_nbits = array(0,25,26,27,28,29,30,31,32); + + // flash sizes (nbits array is for eeprom config file) + $flash_vals = array('','4M','8M','16M','32M','64M','128M','256M','512M','1G'); + $flash_nbits = array(0,22,23,24,25,26,27,28,29,30); + + // zbt ram sizes (nbits array is for write into eeprom config file) + $zbt_vals = array('','512K','1M','2M','4M','8M','16M'); + $zbt_nbits = array(0,19,20,21,22,23,24); // high-speed serial attributes - $hstype_vals = array('','AMCC-S2064A'); - $hschin_vals = array('0','1','2','3','4'); - $hschout_vals = array('0','1','2','3','4'); + $hstype_vals = array('','AMCC-S2064A','Xilinx-Rockets'); + $hschin_vals = array('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'); + $hschout_vals = array('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16'); // value filters - used when outputting html function rev_filter($num) { @@ -108,7 +116,7 @@ echo "<hr></hr>\n"; echo "<table width=\"100%\"><tr><td align=left>\n<address>" . "If you have any problems, email " . - "<a href=\"mailto:Murray.Jensen@cmst.csiro.au\">" . + "<a href=\"mailto:Murray.Jensen@csiro.au\">" . "Murray Jensen" . "</a></address>\n" . "</td><td align=right>\n" . @@ -310,6 +318,38 @@ end_field(); } + // print a mysql ENUM as an html SELECT INPUT + function print_enum_select($name, $array, $vals, $def = -1) { + + begin_field($name); + + echo "\t\t<select name=$name>\n"; + + if (key_in_array($name, $array)) + $chk = array_search($array[$name], $vals, FALSE); + else + $chk = $def; + + $nval = count($vals); + + for ($i = 0; $i < $nval; $i++) { + + $val = $vals[$i]; + if ($val == '') + $pval = "none"; + else + $pval = "$val"; + + printf("\t\t\t<option " . + "value=\"%s\"%s>%s</option>\n", + $val, $i == $chk ? " selected" : "", $pval); + } + + echo "\t\t</select>\n"; + + end_field(); + } + // print a group of mysql ENUMs (e.g. name0,name1,...) as an html SELECT function print_enum_multi($base, $array, $vals, $cnt, $defs, $grp = 0) { @@ -375,9 +415,9 @@ $name = sprintf("%s%x", $base, $i); - if (isset($GLOBALS[$name])) { + if (isset($_REQUEST[$name])) { $retval .= sprintf(", %s='%s'", - $name, $GLOBALS[$name]); + $name, $_REQUEST[$name]); } } @@ -437,7 +477,7 @@ $name = sprintf("%s%x", $base, $i); - if (isset($GLOBALS[$name])) + if (isset($_REQUEST[$name])) $retval++; } @@ -458,13 +498,14 @@ function gen_eth_addr($serno) { - $ethaddr_high = (mt_rand(0, 65535) & 0xfeff) | 0x0200; - $ethaddr_low = mt_rand(0, 4294967295); + $ethaddr_hgh = (mt_rand(0, 65535) & 0xfeff) | 0x0200; + $ethaddr_mid = mt_rand(0, 65535); + $ethaddr_low = mt_rand(0, 65535); return sprintf("%02lx:%02lx:%02lx:%02lx:%02lx:%02lx", - $ethaddr_high >> 8, $ethaddr_high & 0xff, - $ethaddr_low >> 24, ($ethaddr_low >> 16) & 0xff, - ($ethaddr_low >> 8) & 0xff, $ethaddr_low & 0xff); + $ethaddr_hgh >> 8, $ethaddr_hgh & 0xff, + $ethaddr_mid >> 8, $ethaddr_mid & 0xff, + $ethaddr_low >> 8, $ethaddr_low & 0xff); } // check that an ethernet address is valid diff --git a/tools/bddb/dodelete.php b/tools/bddb/dodelete.php index 839ad8c..4839e36 100644 --- a/tools/bddb/dodelete.php +++ b/tools/bddb/dodelete.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // dodelete page (hymod_bddb / boards) @@ -10,8 +10,9 @@ pg_head("$bddb_label - Delete Board Results"); - if (!($serno=intval($serno))) + if (!isset($_REQUEST['serno'])) die("the board serial number was not specified"); + $serno=intval($_REQUEST['serno']); mysql_query("delete from boards where serno=$serno"); diff --git a/tools/bddb/dodellog.php b/tools/bddb/dodellog.php index d5822c5..9dd78c1 100644 --- a/tools/bddb/dodellog.php +++ b/tools/bddb/dodellog.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // dodelete page (hymod_bddb / boards) @@ -10,11 +10,13 @@ pg_head("$bddb_label - Delete Log Entry Results"); - if (!($serno=intval($serno))) + if (!isset($_REQUEST['serno'])) die("the board serial number was not specified"); + $serno=intval($_REQUEST['serno']); - if (!isset($logno) || $logno == 0) + if (!isset($_REQUEST['logno']) || $_REQUEST['logno'] == 0) die("the log entry number not specified!"); + $logno=$_REQUEST['logno']; mysql_query("delete from log where serno=$serno and logno=$logno"); diff --git a/tools/bddb/doedit.php b/tools/bddb/doedit.php index 110ecf3..13fbb69 100644 --- a/tools/bddb/doedit.php +++ b/tools/bddb/doedit.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // doedit page (hymod_bddb / boards) @@ -10,18 +10,21 @@ pg_head("$bddb_label - Edit Board Results"); - if ($serno == 0) + if (!isset($_REQUEST['serno']) || $_REQUEST['serno'] == '') die("the board serial number was not specified"); + $serno=intval($_REQUEST['serno']); $query="update boards set"; - if (isset($ethaddr)) { + if (isset($_REQUEST['ethaddr'])) { + $ethaddr=$_REQUEST['ethaddr']; if (!eth_addr_is_valid($ethaddr)) die("ethaddr is invalid ('$ethaddr')"); $query.=" ethaddr='$ethaddr',"; } - if (isset($date)) { + if (isset($_REQUEST['date'])) { + $date=$_REQUEST['date']; list($y, $m, $d) = split("-", $date); if (!checkdate($m, $d, $y) || $y < 1999) die("date is invalid (input '$date', " . @@ -29,31 +32,36 @@ $query.=" date='$date'"; } - if (isset($batch)) { + if (isset($_REQUEST['batch'])) { + $batch=$_REQUEST['batch']; if (strlen($batch) > 32) die("batch field too long (>32)"); $query.=", batch='$batch'"; } - if (isset($type)) { + if (isset($_REQUEST['type'])) { + $type=$_REQUEST['type']; if (!in_array($type, $type_vals)) die("Invalid type ($type) specified"); $query.=", type='$type'"; } - if (isset($rev)) { + if (isset($_REQUEST['rev'])) { + $rev=$_REQUEST['rev']; if (($rev = intval($rev)) <= 0 || $rev > 255) die("Revision number is invalid ($rev)"); $query.=sprintf(", rev=%d", $rev); } - if (isset($location)) { + if (isset($_REQUEST['location'])) { + $location=$_REQUEST['location']; if (strlen($location) > 64) die("location field too long (>64)"); $query.=", location='$location'"; } - if (isset($comments)) + if (isset($_REQUEST['comments'])) + $comments=$_REQUEST['comments']; $query.=", comments='" . rawurlencode($comments) . "'"; $query.=gather_enum_multi_query("sdram", 4); @@ -77,46 +85,54 @@ if (count_enum_multi("xlxgrd", 4) != $nxlx) die("number of xilinx grades not same as number of types"); - if (isset($cputyp)) { + if (isset($_REQUEST['cputyp'])) { + $cputyp=$_REQUEST['cputyp']; $query.=", cputyp='$cputyp'"; - if ($cpuspd == '') + if (!isset($_REQUEST['cpuspd']) || $_REQUEST['cpuspd'] == '') die("must specify cpu speed if cpu type is defined"); + $cpuspd=$_REQUEST['cpuspd']; $query.=", cpuspd='$cpuspd'"; - if ($cpmspd == '') + if (!isset($_REQUEST['cpmspd']) || $_REQUEST['cpmspd'] == '') die("must specify cpm speed if cpu type is defined"); + $cpmspd=$_REQUEST['cpmspd']; $query.=", cpmspd='$cpmspd'"; - if ($busspd == '') + if (!isset($_REQUEST['busspd']) || $_REQUEST['busspd'] == '') die("must specify bus speed if cpu type is defined"); + $busspd=$_REQUEST['busspd']; $query.=", busspd='$busspd'"; } else { - if (isset($cpuspd)) + if (isset($_REQUEST['cpuspd'])) die("can't specify cpu speed if there is no cpu"); - if (isset($cpmspd)) + if (isset($_REQUEST['cpmspd'])) die("can't specify cpm speed if there is no cpu"); - if (isset($busspd)) + if (isset($_REQUEST['busspd'])) die("can't specify bus speed if there is no cpu"); } - if (isset($hschin)) { + if (isset($_REQUEST['hschin'])) { + $hschin=$_REQUEST['hschin']; if (($hschin = intval($hschin)) < 0 || $hschin > 4) die("Invalid number of hs input chans ($hschin)"); } else $hschin = 0; - if (isset($hschout)) { + if (isset($_REQUEST['hschout'])) { + $hschout=$_REQUEST['hschout']; if (($hschout = intval($hschout)) < 0 || $hschout > 4) die("Invalid number of hs output chans ($hschout)"); } else $hschout = 0; - if (isset($hstype)) + if (isset($_REQUEST['hstype'])) { + $hstype=$_REQUEST['hstype']; $query.=", hstype='$hstype'"; + } else { - if ($hschin != 0) + if ($_REQUEST['hschin'] != 0) die("number of high-speed input channels must be zero" . " if high-speed chip is not present"); - if ($hschout != 0) + if ($_REQUEST['hschout'] != 0) die("number of high-speed output channels must be zero" . " if high-speed chip is not present"); } diff --git a/tools/bddb/doedlog.php b/tools/bddb/doedlog.php index f800471..7009aa7 100644 --- a/tools/bddb/doedlog.php +++ b/tools/bddb/doedlog.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // doedit page (hymod_bddb / boards) @@ -10,15 +10,18 @@ pg_head("$bddb_label - Edit Log Entry Results"); - if ($serno == 0) + if (!isset($_REQUEST['serno']) || $_REQUEST['serno'] == '') die("the board serial number was not specified"); + $serno=intval($_REQUEST['serno']); - if (!isset($logno) || $logno == 0) + if (!isset($_REQUEST['logno']) || $_REQUEST['logno'] == '') die("log number not specified!"); + $logno=intval($_REQUEST['logno']); $query="update log set"; - if (isset($date)) { + if (isset($_REQUEST['date'])) { + $date=$_REQUEST['date']; list($y, $m, $d) = split("-", $date); if (!checkdate($m, $d, $y) || $y < 1999) die("date is invalid (input '$date', " . @@ -26,11 +29,15 @@ $query.=" date='$date'"; } - if (isset($who)) + if (isset($_REQUEST['who'])) { + $who=$_REQUEST['who']; $query.=", who='" . $who . "'"; + } - if (isset($details)) + if (isset($_REQUEST['details'])) { + $details=$_REQUEST['details']; $query.=", details='" . rawurlencode($details) . "'"; + } $query.=" where serno=$serno and logno=$logno"; diff --git a/tools/bddb/donew.php b/tools/bddb/donew.php index 0f6e0d7..39b2c78 100644 --- a/tools/bddb/donew.php +++ b/tools/bddb/donew.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // doedit page (hymod_bddb / boards) @@ -10,8 +10,10 @@ pg_head("$bddb_label - Board Registration Results"); - if (($serno=intval($serno)) != 0) + if (isset($_REQUEST['serno'])) { + $serno=$_REQUEST['serno']; die("serial number must not be set ($serno) when Creating!"); + } $query="update boards set"; diff --git a/tools/bddb/donewlog.php b/tools/bddb/donewlog.php index 35ba125..7635d29 100644 --- a/tools/bddb/donewlog.php +++ b/tools/bddb/donewlog.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // doedit page (hymod_bddb / boards) @@ -10,11 +10,14 @@ pg_head("$bddb_label - Add Log Entry Results"); - if ($serno == 0) + if (!isset($_REQUEST['serno']) || $_REQUEST['serno'] == '') die("serial number not specified!"); + $serno=intval($_REQUEST['serno']); - if (isset($logno)) + if (isset($_REQUEST['logno'])) { + $logno=$_REQUEST['logno']; die("log number must not be set ($logno) when Creating!"); + } $query="update log set serno=$serno"; @@ -23,11 +26,15 @@ die("date is invalid (input '$date', yyyy-mm-dd '$y-$m-$d')"); $query.=", date='$date'"; - if (isset($who)) + if (isset($_REQUEST['who'])) { + $who=$_REQUEST['who']; $query.=", who='" . $who . "'"; + } - if (isset($details)) + if (isset($_REQUEST['details'])) { + $details=$_REQUEST['details']; $query.=", details='" . rawurlencode($details) . "'"; + } // echo "final query = '$query'<br>\n"; diff --git a/tools/bddb/edit.php b/tools/bddb/edit.php index f7d4830..dd8c26c 100644 --- a/tools/bddb/edit.php +++ b/tools/bddb/edit.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // edit page (hymod_bddb / boards) @@ -11,7 +11,7 @@ pg_head("$bddb_label - Edit Board Registration"); if ($serno == 0) - die("serial number not specified!"); + die("serial number not specified or invalid!"); $pserno = sprintf("%010d", $serno); @@ -73,17 +73,17 @@ // xlxgrd[0-3] enum('NORMAL','ENGSAMP') print_enum_multi("xlxgrd", $row, $xlxgrd_vals, 4, array(), 1); - // cputyp enum('MPC8260') + // cputyp enum('MPC8260(HIP3)','MPC8260A(HIP4)','MPC8280(HIP7)') print_enum("cputyp", $row, $cputyp_vals); - // cpuspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ') - print_enum("cpuspd", $row, $clk_vals); + // cpuspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ') + print_enum_select("cpuspd", $row, $clk_vals); - // cpmspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ') - print_enum("cpmspd", $row, $clk_vals); + // cpmspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ') + print_enum_select("cpmspd", $row, $clk_vals); - // busspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ') - print_enum("busspd", $row, $clk_vals); + // busspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ') + print_enum_select("busspd", $row, $clk_vals); // hstype enum('AMCC-S2064A') print_enum("hstype", $row, $hstype_vals); diff --git a/tools/bddb/edlog.php b/tools/bddb/edlog.php index 7f311bf..8befd35 100644 --- a/tools/bddb/edlog.php +++ b/tools/bddb/edlog.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // edit page (hymod_bddb / boards) @@ -10,11 +10,13 @@ pg_head("$bddb_label - Edit Board Log Entry"); - if ($serno == 0) + if (!isset($_REQUEST['serno']) || $_REQUEST['serno'] == '') die("serial number not specified!"); + $serno=intval($_REQUEST['serno']); - if (!isset($logno) || $logno == 0) + if (!isset($_REQUEST['logno']) || $_REQUEST['logno'] == '') die("log number not specified!"); + $logno=intval($_REQUEST['logno']); $pserno = sprintf("%010d", $serno); $plogno = sprintf("%010d", $logno); diff --git a/tools/bddb/execute.php b/tools/bddb/execute.php index 7adcfec..0b62882 100644 --- a/tools/bddb/execute.php +++ b/tools/bddb/execute.php @@ -1,16 +1,12 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab - if (!isset($serno)) - $serno = 0; - else - $serno = intval($serno); + $serno=isset($_REQUEST['serno'])?$_REQUEST['serno']:''; - if (!isset($submit)) - $submit = "[NOT SET]"; + $submit=isset($_REQUEST['submit'])?$_REQUEST['submit']:"[NOT SET]"; switch ($submit) { diff --git a/tools/bddb/index.php b/tools/bddb/index.php index 9d6c7f5..842aed5 100644 --- a/tools/bddb/index.php +++ b/tools/bddb/index.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab require("defs.php"); diff --git a/tools/bddb/new.php b/tools/bddb/new.php index 889c6ae..30323ff 100644 --- a/tools/bddb/new.php +++ b/tools/bddb/new.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // edit page (hymod_bddb / boards) @@ -13,6 +13,7 @@ <form action=donew.php method=POST> <p></p> <?php + $serno=intval($serno); // if a serial number was supplied, fetch the record // and use its contents as defaults if ($serno != 0) { @@ -23,8 +24,6 @@ else $row = array(); - echo "<input type=hidden name=serno value=0>\n"; - begin_table(5); // date date @@ -60,17 +59,17 @@ // xlxgrd[0-3] enum('NORMAL','ENGSAMP') print_enum_multi("xlxgrd", $row, $xlxgrd_vals, 4, array(1), 1); - // cputyp enum('MPC8260') + // cputyp enum('MPC8260(HIP3)','MPC8260A(HIP4)','MPC8280(HIP7)') print_enum("cputyp", $row, $cputyp_vals, 1); - // cpuspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ') - print_enum("cpuspd", $row, $clk_vals, 4); + // cpuspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ') + print_enum_select("cpuspd", $row, $clk_vals, 4); - // cpmspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ') - print_enum("cpmspd", $row, $clk_vals, 4); + // cpmspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ') + print_enum_select("cpmspd", $row, $clk_vals, 4); - // busspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ') - print_enum("busspd", $row, $clk_vals, 2); + // busspd enum('33MHZ','66MHZ','100MHZ','133MHZ','166MHZ','200MHZ','233MHZ','266MHZ') + print_enum_select("busspd", $row, $clk_vals, 2); // hstype enum('AMCC-S2064A') print_enum("hstype", $row, $hstype_vals, 1); diff --git a/tools/bddb/newlog.php b/tools/bddb/newlog.php index 3f51639..609bb85 100644 --- a/tools/bddb/newlog.php +++ b/tools/bddb/newlog.php @@ -1,7 +1,7 @@ <?php // php pages made with phpMyBuilder <http://kyber.dk/phpMyBuilder> ?> <?php // (C) Copyright 2001 - // Murray Jensen <Murray.Jensen@cmst.csiro.au> + // Murray Jensen <Murray.Jensen@csiro.au> // CSIRO Manufacturing Science and Technology, Preston Lab // edit page (hymod_bddb / boards) @@ -10,11 +10,14 @@ pg_head("$bddb_label - New Log Entry"); - if ($serno == 0) - die("serial number not specified!"); + if (!isset($_REQUEST['serno']) || $_REQUEST['serno'] == '') + die("serial number not specified or invalid!"); + $serno=intval($_REQUEST['serno']); - if (isset($logno)) - die("log number must not be specified when adding!"); + if (isset($_REQUEST['logno'])) { + $logno=$_REQUEST['logno']; + die("log number must not be specified when adding! ($logno)"); + } ?> <form action=donewlog.php method=POST> <p></p> @@ -27,7 +30,7 @@ print_field("date", array('date' => date("Y-m-d"))); // who char(20) - print_field("who", ""); + print_field("who", array()); // details text print_field_multiline("details", array(), 60, 10, 'text_filter'); diff --git a/tools/gdb/Makefile b/tools/gdb/Makefile index faff120..e7618b7 100644 --- a/tools/gdb/Makefile +++ b/tools/gdb/Makefile @@ -1,6 +1,6 @@ # # (C) Copyright 2000 -# Murray Jensen <Murray.Jensen@cmst.csiro.au> +# Murray Jensen <Murray.Jensen@csiro.au> # # See file CREDITS for list of people who contributed to this # project. |