summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-02-26 21:23:10 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-02-26 21:23:10 +0000
commit1e3f52992110d75f1df8c2256d7d6759e9f997fd (patch)
tree40b2f77ffea1ef6c2884f5515c7a30d40b15639a /firmware
parent38436038a9e50e8314967672fb5e7b9a5009a4be (diff)
downloadrockbox-1e3f52992110d75f1df8c2256d7d6759e9f997fd.tar.gz
rockbox-1e3f52992110d75f1df8c2256d7d6759e9f997fd.zip
Get the M:Robe 500 main build booting again, fix a bug and commit the rest of Cat's work to get sound working. The code is messy right now, but it plays a file (test.raw) in a normal build when you go into the debug ports screen. Take 2.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20116 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c4
-rwxr-xr-xfirmware/target/arm/tms320dm320/crt0.S2
-rwxr-xr-xfirmware/target/arm/tms320dm320/debug-dm320.c9
-rw-r--r--firmware/target/arm/tms320dm320/dsp-dm320.c167
-rw-r--r--firmware/target/arm/tms320dm320/dsp/Makefile15
-rw-r--r--firmware/target/arm/tms320dm320/dsp/dsp-image.h102
-rw-r--r--firmware/target/arm/tms320dm320/dsp/ipc.h2
-rw-r--r--firmware/target/arm/tms320dm320/dsp/main.c34
-rw-r--r--firmware/target/arm/tms320dm320/dsp/xml2h.py193
9 files changed, 482 insertions, 46 deletions
diff --git a/firmware/target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c
index b51139e7e6..3c54ce81fb 100644
--- a/firmware/target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c
+++ b/firmware/target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c
@@ -40,7 +40,7 @@ void pcm_play_dma_init(void)
audiohw_set_frequency(HW_FREQ_DEFAULT);
/* init DSP */
- dsp_init();
+// dsp_init();
}
void pcm_postinit(void)
@@ -48,7 +48,7 @@ void pcm_postinit(void)
audiohw_postinit();
/* wake DSP */
- dsp_wake();
+// dsp_wake();
}
const void * pcm_play_dma_get_peak_buffer(int *count)
diff --git a/firmware/target/arm/tms320dm320/crt0.S b/firmware/target/arm/tms320dm320/crt0.S
index ffbe7e5d31..9375de7d0d 100755
--- a/firmware/target/arm/tms320dm320/crt0.S
+++ b/firmware/target/arm/tms320dm320/crt0.S
@@ -143,7 +143,7 @@ start:
bhi 1b
/* Set up stack for IRQ mode */
- msr cpsr_c, #0x92 /* IRQ disabled, FIQ enabled */
+ msr cpsr_c, #0xd2 /* IRQ disabled, FIQ enabled */
ldr sp, =irq_stack
/* Set up stack for FIQ mode */
msr cpsr_c, #0xd1 /* IRQ/FIQ disabled */
diff --git a/firmware/target/arm/tms320dm320/debug-dm320.c b/firmware/target/arm/tms320dm320/debug-dm320.c
index 7887bcac1e..522278a476 100755
--- a/firmware/target/arm/tms320dm320/debug-dm320.c
+++ b/firmware/target/arm/tms320dm320/debug-dm320.c
@@ -31,8 +31,17 @@
#include "debug-target.h"
#include "lcd-target.h"
+#ifndef CREATIVE_ZVx
+#include "tsc2100.h"
+#endif
+
bool __dbg_ports(void)
{
+ dsp_init();
+#ifndef CREATIVE_ZVx
+ tsc2100_writereg(TSDACGAIN_PAGE, TSDACGAIN_ADDRESS, 0x2020/*x0303*/);
+#endif
+ dsp_wake();
return false;
}
diff --git a/firmware/target/arm/tms320dm320/dsp-dm320.c b/firmware/target/arm/tms320dm320/dsp-dm320.c
index bc05eff24f..20391baf56 100644
--- a/firmware/target/arm/tms320dm320/dsp-dm320.c
+++ b/firmware/target/arm/tms320dm320/dsp-dm320.c
@@ -23,7 +23,9 @@
#include "system.h"
#include "debug.h"
#include "string.h"
+#include "file.h"
#include "dsp-target.h"
+#include "dsp/ipc.h"
/* A "DSP image" is an array of these, terminated by raw_data_size_half = 0. */
struct dsp_section {
@@ -33,7 +35,9 @@ struct dsp_section {
};
/* Must define struct dsp_section before including the image. */
-#include "dsp_image_helloworld.h"
+#include "dsp/dsp-image.h"
+
+#define dsp_message (*(volatile struct ipc_message *)&DSP_(_status))
#ifdef DEBUG
static void dsp_status(void)
@@ -127,27 +131,180 @@ static void dsp_load(const struct dsp_section *im)
}
}
+static signed short *the_rover = (signed short *)0x1900000;
+static unsigned int index_rover = 0;
+static signed short __attribute__((aligned (16))) pcm_buffer[PCM_SIZE / 2];
+
void dsp_init(void)
{
+ unsigned long sdem_addr;
+ int fd;
+ int bytes;
+
+
IO_INTC_IRQ0 = 1 << 11;
IO_INTC_EINT0 |= 1 << 11;
IO_DSPC_HPIB_CONTROL = 1 << 10 | 1 << 9 | 1 << 8 | 1 << 7 | 1 << 3 | 1 << 0;
dsp_reset();
- dsp_load(dsp_image_helloworld);
+ dsp_load(dsp_image);
+
+ /* Initialize codec. */
+ sdem_addr = (unsigned long)pcm_buffer - CONFIG_SDRAM_START;
+ DEBUGF("pcm_sdram at 0x%08lx, sdem_addr 0x%08lx",
+ (unsigned long)pcm_buffer, (unsigned long)sdem_addr);
+ DSP_(_sdem_addrl) = sdem_addr & 0xffff;
+ DSP_(_sdem_addrh) = sdem_addr >> 16;
+
+ fd = open("/test.raw", O_RDONLY);
+ bytes = read(fd, the_rover, 4*1024*1024);
+ close(fd);
+
+ DEBUGF("read %d rover bytes", bytes);
+
+ #if 0
+ {
+ unsigned int i;
+ memset(pcm_buffer, 0x80, PCM_SIZE);
+ for (i = 0; i < 8192; i++) {
+ signed short val = 0;
+ /*if (i < PCM_SIZE/4/2) {
+ val = 128*(i%256);
+ } else {
+ val = 2*128*128-128*(i%256);
+ }*/
+ val = 128*(i%256);
+ pcm_buffer[2*i] = pcm_buffer[2*i+1] = val;
+ }
+ clean_dcache();
+
+
+ {
+ unsigned int i;
+ volatile signed short *pdata = &DSP_(_data);
+ DEBUGF("dsp__data at %08x", pdata);
+ for (i = 0; i < 4096; i++) {
+ pdata[2*i]=pdata[2*i+1]=(i&1)*32767;
+ }
+ for (i = 4096; i < 8192; i++) {
+ pdata[2*i]=pdata[2*i+1]=0;
+ }
+ }
+ #endif
+
+#ifdef IPC_SIZES
+ DEBUGF("dsp_message at 0x%08x", &dsp_message);
+ DEBUGF("sizeof(ipc_message)=%uB offset(ipc_message.payload)=%uB",
+ sizeof(struct ipc_message), (int)&((struct ipc_message*)0)->payload);
+#endif
+
+#ifdef INIT_MSG
+ /* Prepare init message. */
+
+ /* DSP accesses MUST be done a word at a time. */
+ dsp_message.msg = MSG_INIT;
+
+ sdem_addr = (unsigned long)pcm_sdram - CONFIG_SDRAM_START;
+ DEBUGF("pcm_sdram at 0x%08x, sdem_addr 0x%08x", pcm_sdram, sdem_addr);
+ dsp_message.payload.init.sdem_addrl = sdem_addr & 0xffff;
+ dsp_message.payload.init.sdem_addrh = sdem_addr >> 16;
+
+ DEBUGF("dsp_message: %04x %04x %04x %04x",
+ ((unsigned short *)&dsp_message)[0],
+ ((unsigned short *)&dsp_message)[1],
+ ((unsigned short *)&dsp_message)[2],
+ ((unsigned short *)&dsp_message)[3]);
+#endif
+
}
void DSPHINT(void)
{
unsigned int i;
char buffer[80];
+ static unsigned short level = 2;
+
+ unsigned short *pcm_topbottom, *pcm_topbottom_end;
+
IO_INTC_IRQ0 = 1 << 11;
- /* DSP stores one character per word. */
- for (i = 0; i < sizeof(buffer); i++) {
- buffer[i] = (&DSP_(_status))[i];
+
+ switch (dsp_message.msg)
+ {
+ case MSG_DEBUGF:
+ /* DSP stores one character per word. */
+ for (i = 0; i < sizeof(buffer); i++)
+ {
+ buffer[i] = dsp_message.payload.debugf.buffer[i];
+ }
+
+ /* Release shared area to DSP. */
+ dsp_wake();
+
+ DEBUGF("DSP: %s", buffer);
+ break;
+ case MSG_REFILL:
+ DEBUGF("DSP: DMA0 with topbottom=%u (fill at %04lx)",
+ dsp_message.payload.refill.topbottom,
+ (unsigned long)pcm_buffer +
+ dsp_message.payload.refill.topbottom);
+ pcm_topbottom = pcm_buffer + dsp_message.payload.refill.topbottom / 2;
+
+ /*
+ i = 0;
+ while (i < PCM_SIZE/4) {
+ unsigned int j;
+ for (j = 0; j < level; j++) {
+ pcm_topbottom[i+j] = -32768;
+ }
+ for (j = level; j < 2*level; j++) {
+ pcm_topbottom[i+j] = 32767;
+ }
+ i += 2*level;
+ }
+
+ level += 2;
+ if (level > 256) {
+ level = 2;
+ }*/
+
+ memcpy(pcm_topbottom, the_rover + index_rover, PCM_SIZE/2);
+ index_rover += PCM_SIZE/4;
+ if (index_rover >= 2*1024*1024) {
+ index_rover = 0;
+ }
+
+ /*
+ pcm_topbottom = &p_pcm_sdram[dsp_message.payload.refill.topbottom/2];
+ DEBUGF("DSP: tofill begins: %04x %04x %04x %04x",
+ pcm_topbottom[0],
+ pcm_topbottom[1],
+ pcm_topbottom[2],
+ pcm_topbottom[3]
+ );
+ pcm_topbottom_end = &p_pcm_sdram[(dsp_message.payload.refill.topbottom+PCM_SIZE/2)/2];
+ DEBUGF("DSP: tofill ends: %04x %04x %04x %04x",
+ pcm_topbottom_end[-4],
+ pcm_topbottom_end[-3],
+ pcm_topbottom_end[-2],
+ pcm_topbottom_end[-1]
+ );
+ */
+
+ /*
+ DEBUGF("DSP: DMA0: SD %04x:%04x -> DSP %04x:%04x, TRG %04x",
+ dsp_message.payload.refill._SDEM_ADDRH,
+ dsp_message.payload.refill._SDEM_ADDRL,
+ dsp_message.payload.refill._DSP_ADDRH,
+ dsp_message.payload.refill._DSP_ADDRL,
+ dsp_message.payload.refill._DMA_TRG);
+ */
+ break;
+ default:
+ DEBUGF("DSP: unknown msg 0x%04x", dsp_message.msg);
+ break;
}
/* Release shared area to DSP. */
diff --git a/firmware/target/arm/tms320dm320/dsp/Makefile b/firmware/target/arm/tms320dm320/dsp/Makefile
index 8f016378fd..8cc1bd98c0 100644
--- a/firmware/target/arm/tms320dm320/dsp/Makefile
+++ b/firmware/target/arm/tms320dm320/dsp/Makefile
@@ -10,10 +10,12 @@
# http://daniel.haxx.se/blog/2007/11/18/free-to-use-compiler-from-ti/
CC = cl500
LD = lnk500
-CFLAGS = $(BUILDDATE)
+CFLAGS =
# There's more in linker.cmd.
LDFLAGS = -w
+OBJDIR=./build
+
OBJS = arm.obj main.obj vectors.obj dma.obj
ifeq ($(findstring -DCREATIVE_ZV,$(TARGET)), -DCREATIVE_ZV)
@@ -24,14 +26,15 @@ endif
OBJS := $(patsubst %.obj, $(OBJDIR)/%.obj, $(OBJS))
-all: $(BUILDDIR)/dsp-image.h
-
+all: dsp-image.h
+
clean:
$(call PRINTS,cleaning DSP firmware)rm -f $(OBJS) $(OBJDIR)/dsp-image.out $(OBJDIR)/dsp-image.xml
+ rmdir $(OBJDIR)
-$(BUILDDIR)/dsp-image.h: $(OBJS) linker.cmd
+dsp-image.h: $(OBJS) linker.cmd
$(call PRINTS,LNK500 dsp-image.out)lnk500 $(LDFLAGS) -o $(OBJDIR)/dsp-image.out $^
- $(call PRINTS,OFD500+XML2H $(@F))ofd500 -x -o /dev/stdout $(OBJDIR)/dsp-image.out | python $(TOOLSDIR)/xml2h.py $(OBJDIR)/dsp-image.xml > $@
+ $(call PRINTS,OFD500+XML2H $(@F))ofd500 -x -o /dev/stdout $(OBJDIR)/dsp-image.out | python xml2h.py $(OBJDIR)/dsp-image.xml > $@
$(OBJDIR)/%.obj: %.asm
$(SILENT)mkdir -p $(dir $@)
@@ -51,5 +54,3 @@ $(OBJDIR)/tsc2100.obj: tsc2100.c audio.h registers.h
$(OBJDIR)/dma.obj: dma.c dma.h registers.h ipc.h
-# For PRINTS.
-include $(TOOLSDIR)/make.inc
diff --git a/firmware/target/arm/tms320dm320/dsp/dsp-image.h b/firmware/target/arm/tms320dm320/dsp/dsp-image.h
new file mode 100644
index 0000000000..1cbe1e5c3e
--- /dev/null
+++ b/firmware/target/arm/tms320dm320/dsp/dsp-image.h
@@ -0,0 +1,102 @@
+#ifndef DSP_IMAGE
+#define DSP_IMAGE
+/*
+ * Automatically generated by xml2h.py from ./build/dsp-image.out.
+ *
+ * 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
+ *
+ */
+static const unsigned short _section_text[] = {
+ 0xe808, 0x75f8, 0x0008, 0x0280, 0xfc00, 0x4a11, 0x4a07, 0x4a1d, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x7711, 0x0001, 0x7681, 0x0001, 0x76f8, 0x27db, 0x0001, 0x8a1d, 0x8a07, 0x8a11, 0xf4eb, 0xeefb, 0x4818, 0xf000, 0x0006, 0x76f8, 0x278a, 0x0002, 0x8004, 0x7600, 0x0051, 0x1006, 0x8001, 0x1004, 0x8002, 0xf274, 0x0293, 0xf020, 0x278b, 0x76f8, 0x27db, 0x0000, 0xf074, 0x0080, 0x10f8, 0x27db, 0xf844, 0x00bd, 0xf4e1, 0xf495, 0x10f8, 0x27db, 0xf845, 0x00b7, 0xee05, 0x76f8, 0x27db, 0x0002, 0xfc00, 0x4a11, 0x7711, 0x0026, 0x7712, 0x0001, 0x7681, 0x0010, 0x7713, 0x0001, 0x7711, 0x0000, 0xeefe, 0x7681, 0xffff, 0xe501, 0xf495, 0xf6bb, 0xf074, 0x01c1, 0xf074, 0x0192, 0xf074, 0x01ec, 0x7600, 0x2ba3, 0xf074, 0x009c, 0xf4e1, 0xf495, 0xf073, 0x00dd, 0xe808, 0x75f8, 0x0008, 0x0280, 0xfc00, 0xf495, 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, 0x4a17, 0x4a19, 0x4a0e, 0x4a06, 0x4a07, 0x4a1a, 0x4a1d, 0x4a1b, 0x4a1c, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x4818, 0x68f8, 0x0018, 0xfffe, 0x7711, 0x0001, 0x4a08, 0x7681, 0x0040, 0x7711, 0x0055, 0x7681, 0x0000, 0x7711, 0x0057, 0x6f81, 0x0c41, 0xeefb, 0xf030, 0x4000, 0x8002, 0xf020, 0x4000, 0x1c02, 0x76f8, 0x278a, 0x0003, 0x8003, 0x7102, 0x278b, 0xf074, 0x00e1, 0x12f8, 0x27dc, 0xf1ef, 0xf6b8, 0xf3e1, 0x12f8, 0x27dd, 0xf2a0, 0x0003, 0x4e00, 0xf020, 0xffff, 0x5700, 0xf280, 0x75f8, 0x0008, 0x8000, 0x5600, 0xf0f0, 0x75f8, 0x0008, 0x8001, 0xf020, 0x8000, 0x6f03, 0x0c1f, 0x75f8, 0x0008, 0x8002, 0xe800, 0x75f8, 0x0008, 0x8003, 0xf020, 0x4000, 0x75f8, 0x0008, 0x8004, 0xe800, 0x75f8, 0x0008, 0x8005, 0x74f8, 0x278c, 0x8006, 0x74f8, 0x278d, 0x8001, 0x74f8, 0x278e, 0x8000, 0x74f8, 0x278f, 0x8003, 0xee05, 0xe801, 0x74f8, 0x2790, 0x8002, 0x8a18, 0x75f8, 0x0008, 0x8006, 0x8a1c, 0x8a1b, 0x8a1d, 0x8a1a, 0x8a07, 0x8a06, 0x8a0e, 0x8a19, 0x8a17, 0x8a17, 0x8a16, 0x8a15, 0x8a14, 0x8a13, 0x8a12, 0x8a11, 0x8a10, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0a, 0x8a09, 0x8a08, 0xf4eb, 0x4a11, 0x4a07, 0x4a1d, 0x68f8, 0x0007, 0x7d3f, 0x69f8, 0x0007, 0x4000, 0x68f8, 0x001d, 0xfffc, 0x7711, 0x0001, 0x7681, 0x0800, 0x8a1d, 0x8a07, 0x8a11, 0xf4eb, 0x4a11, 0x7711, 0x0055, 0x7681, 0x0003, 0x7711, 0x0057, 0x7681, 0x2800, 0x7711, 0x0055, 0x7681, 0x0004, 0x7711, 0x0057, 0x7681, 0x7141, 0x7711, 0x0055, 0x7681, 0x0000, 0x7711, 0x0057, 0x7681, 0x8000, 0x7711, 0x0055, 0x7681, 0x0001, 0x7711, 0x0057, 0x7681, 0x0022, 0x7711, 0x0055, 0x7681, 0x0002, 0x7711, 0x0057, 0x7681, 0x4000, 0x7711, 0x0054, 0x7681, 0x0081, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0000, 0x7711, 0x0039, 0x7681, 0x0000, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x7681, 0x0030, 0x7711, 0x0038, 0x7681, 0x000e, 0x7711, 0x0039, 0x7681, 0x0002, 0x7711, 0x0038, 0x7681, 0x0004, 0x7711, 0x0039, 0x7681, 0x00a0, 0x7711, 0x0038, 0x7681, 0x0005, 0x7711, 0x0039, 0x7681, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0x0038, 0x7681, 0x0001, 0x7711, 0x0039, 0x6981, 0x0001, 0x8a11, 0xfc00, 0xf7be, 0xf6b9, 0xf4a0, 0xf6b7, 0xf6b5, 0xf6b6, 0xf7b8, 0x7718, 0x178a, 0x6bf8, 0x0018, 0x0fff, 0x68f8, 0x0018, 0xfffe, 0xf020, 0x2cb1, 0xf100, 0x0001, 0xf84d, 0x0223, 0xf6b8, 0xf495, 0xf020, 0x2cb1, 0xf073, 0x021d, 0x7ef8, 0x0012, 0xf000, 0x0001, 0x47f8, 0x0011, 0x7e92, 0x00f8, 0x0011, 0xf000, 0x0001, 0x7ef8, 0x0011, 0xf000, 0x0001, 0x6c89, 0x0212, 0xf7b8, 0xeefc, 0xf020, 0xffff, 0xf100, 0x0001, 0xf84d, 0x023b, 0xf6b8, 0xf495, 0xf020, 0xffff, 0xf273, 0x0235, 0x4e02, 0xf495, 0xf5e3, 0x5602, 0x7e00, 0x1100, 0xfa4c, 0x0233, 0x6b03, 0x0001, 0xf6b8, 0xee04, 0xf074, 0x0e85, 0xf074, 0x0241, 0x4a11, 0x4a16, 0xeeff, 0x10f8, 0x2801, 0xf4e3, 0x7211, 0x27de, 0x10f8, 0x0011, 0xf845, 0x0259, 0x4811, 0xf000, 0x27df, 0x8816, 0xf495, 0xf495, 0x10ee, 0xffff, 0xf4e3, 0x6ce9, 0xffff, 0x0253, 0x10f8, 0x2800, 0xf845, 0x0260, 0x10f8, 0x2800, 0xf4e3, 0x10f8, 0x27ff, 0xf845, 0x0267, 0x10f8, 0x27ff, 0xf4e3, 0x10f8, 0x2802, 0xf4e3, 0xf074, 0x0290, 0xf073, 0x026c, 0x4a11, 0x8811, 0x10f8, 0x2801, 0xf4e3, 0xf7b8, 0x10f8, 0x27de, 0xf468, 0xf478, 0xf010, 0x0020, 0xf843, 0x0282, 0x10f8, 0x2802, 0xf4e3, 0xe801, 0xf073, 0x028e, 0x7212, 0x27de, 0x10f8, 0x2802, 0x6bf8, 0x27de, 0x0001, 0x70e2, 0x27df, 0x0011, 0xf4e3, 0xe800, 0x8a11, 0xfc00, 0xf495, 0xf073, 0x0291, 0x4a11, 0xeef8, 0xf495, 0x710b, 0x0012, 0x110c, 0x710a, 0x0011, 0x7004, 0x0012, 0x8005, 0x7006, 0x0011, 0x4818, 0x7607, 0x0000, 0xf000, 0x0005, 0x8100, 0x8001, 0x7602, 0x02ba, 0x4818, 0x7603, 0x02d1, 0xf274, 0x0316, 0xf000, 0x0004, 0x4911, 0xf84d, 0x02b7, 0x7105, 0x0011, 0x7681, 0x0000, 0xee08, 0x8a11, 0xfc00, 0x4a11, 0xf495, 0x7102, 0x0011, 0x71e1, 0x0001, 0x0010, 0x71e1, 0x0002, 0x0012, 0xf5aa, 0xf820, 0x02cc, 0x7181, 0x0012, 0x8082, 0x6b81, 0x0001, 0x6be1, 0x0002, 0x0001, 0x8a11, 0xfc00, 0x4a11, 0xf110, 0x0001, 0x4a16, 0x8812, 0x4a17, 0x8913, 0xeefe, 0x7716, 0xffff, 0x7106, 0x0011, 0x11eb, 0x0001, 0xfa4c, 0x02dd, 0xf495, 0x6d96, 0x11e1, 0x0001, 0x8910, 0xf495, 0x71e1, 0x0002, 0x0013, 0xf5ab, 0xf820, 0x0304, 0x4813, 0xf520, 0x8910, 0xf495, 0xf495, 0xf6ae, 0xf820, 0x02f9, 0xf273, 0x02fa, 0xf495, 0x8917, 0xe767, 0x7000, 0x0012, 0x7001, 0x0017, 0x1081, 0xf074, 0x142a, 0x4817, 0x0081, 0x8081, 0x4816, 0x00e1, 0x0002, 0xee02, 0x80e1, 0x0002, 0x8a17, 0x4816, 0x8a16, 0x8a11, 0xfc00, 0xfc00, 0x80f8, 0x2801, 0xfc00, 0x80f8, 0x2802, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeef4, 0x8816, 0x1013, 0x8009, 0x1186, 0xf210, 0x0001, 0x8813, 0xf495, 0x7712, 0xffff, 0x7111, 0x0017, 0x7112, 0x0011, 0x10eb, 0x0001, 0xfa44, 0x0328, 0xf495, 0x6d92, 0x6ff8, 0x0012, 0x0e00, 0x800a, 0x4812, 0xfa45, 0x0410, 0x7604, 0x0000, 0x7605, 0x0000, 0x7606, 0x0000, 0x7607, 0xffff, 0xe925, 0x7608, 0x0000, 0x7186, 0x0012, 0x7182, 0x0012, 0x10f8, 0x0012, 0x08f8, 0x000b, 0xf845, 0x0362, 0x10f8, 0x0012, 0xf845, 0x0410, 0x1086, 0xf000, 0x0001, 0x4911, 0x8086, 0x8812, 0x7000, 0x0017, 0x10e2, 0xffff, 0xf5e3, 0x6b04, 0x0001, 0x7186, 0x0012, 0x7182, 0x0012, 0x6ce2, 0xffdb, 0x034a, 0x6b86, 0x0001, 0x4818, 0x7000, 0x0016, 0xf274, 0x0416, 0xf000, 0x0005, 0x4818, 0x7000, 0x0016, 0xf000, 0x0010, 0x8001, 0x4818, 0xf274, 0x0468, 0xf000, 0x0005, 0x7186, 0x0012, 0x1182, 0x7713, 0x004c, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x03a7, 0x7713, 0x0068, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x03a3, 0x7713, 0x006c, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf844, 0x03b0, 0x4812, 0xf000, 0x0001, 0x8812, 0x7086, 0x0012, 0x6082, 0x006c, 0xf830, 0x039f, 0xf273, 0x03af, 0x6905, 0x0040, 0xf273, 0x03a9, 0x6905, 0x0100, 0xf273, 0x03a9, 0x6905, 0x0020, 0x6905, 0x0080, 0x1086, 0xf000, 0x0001, 0x8812, 0xf495, 0x8086, 0x1182, 0x7712, 0x006e, 0x10f8, 0x000b, 0x8108, 0x08f8, 0x0012, 0xfa45, 0x03ed, 0x6b86, 0x0001, 0x7712, 0x0073, 0x10f8, 0x000b, 0x08f8, 0x0012, 0xf845, 0x03da, 0x10f8, 0x2801, 0xf4e3, 0x4818, 0xf000, 0x0010, 0x8000, 0x4818, 0xf274, 0x0637, 0xf000, 0x0005, 0x7000, 0x0017, 0x1109, 0xf5e3, 0x0004, 0x8004, 0x10f8, 0x2802, 0xf4e3, 0xf073, 0x0409, 0x4818, 0x7000, 0x0017, 0xf000, 0x0010, 0x8001, 0x4818, 0xf000, 0x0004, 0x8002, 0x1009, 0x8003, 0x4818, 0xf274, 0x052f, 0xf000, 0x0005, 0xf073, 0x0409, 0xf020, 0x0160, 0x1805, 0x8812, 0xf495, 0xf495, 0x6ce2, 0xffc0, 0x0401, 0x6b10, 0x0001, 0x7110, 0x0012, 0xf7b8, 0x7182, 0x0012, 0xf273, 0x0409, 0x1004, 0x4e82, 0x6b10, 0x0001, 0x7110, 0x0012, 0x1004, 0x7182, 0x0012, 0x8082, 0x710a, 0x0010, 0x7186, 0x0012, 0xf5aa, 0xf830, 0x0337, 0x1004, 0xee0c, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x8812, 0xf273, 0x0430, 0x7102, 0x0011, 0xf273, 0x042e, 0x6982, 0x0010, 0xf273, 0x042e, 0x6982, 0x0001, 0xf273, 0x042e, 0x6982, 0x0002, 0xf273, 0x042e, 0x6982, 0x0008, 0x6982, 0x0004, 0x6b81, 0x0001, 0x7181, 0x0013, 0xf7b8, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x002b, 0xf846, 0x0456, 0x7713, 0x002b, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x0424, 0x7713, 0x0020, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x042c, 0x7713, 0x0023, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x0428, 0xf073, 0x0466, 0x7713, 0x002d, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x0420, 0x7713, 0x0030, 0x10f8, 0x000b, 0x08f8, 0x0013, 0xf845, 0x041c, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeef6, 0xf495, 0x710e, 0x0011, 0x7181, 0x0012, 0x8816, 0x6082, 0x002a, 0xfa20, 0x0496, 0x710f, 0x0017, 0x1087, 0xf000, 0x0001, 0x8812, 0xf7b8, 0x8087, 0x1082, 0x80e6, 0x0001, 0x10e6, 0x0001, 0xf842, 0x048a, 0xf484, 0x80e6, 0x0001, 0x6986, 0x0001, 0x1081, 0xf000, 0x0001, 0x8812, 0xf495, 0x8081, 0x6082, 0x002e, 0xf830, 0x04db, 0xf073, 0x052a, 0xe782, 0x4812, 0xf010, 0x0001, 0x8813, 0xf495, 0xec09, 0x769b, 0x0000, 0x7181, 0x0013, 0xf7b8, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf843, 0x04c3, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x04c3, 0x8192, 0x1081, 0xf000, 0x0001, 0x8813, 0xf495, 0x8081, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf842, 0x04ab, 0x1000, 0xf844, 0x04d0, 0x7712, 0x002e, 0x10f8, 0x000b, 0x08f8, 0x0012, 0xf845, 0x04db, 0xf073, 0x052a, 0x4818, 0xf074, 0x0e9c, 0x80e6, 0x0001, 0x7181, 0x0012, 0x6082, 0x002e, 0xf820, 0x052a, 0x1081, 0xf000, 0x0001, 0x8812, 0xf495, 0x8081, 0x6082, 0x002a, 0xf830, 0x051f, 0xe782, 0x4812, 0xf010, 0x0001, 0x8813, 0xf495, 0xec09, 0x769b, 0x0000, 0x7181, 0x0013, 0xf7b8, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf843, 0x0512, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x0512, 0x8192, 0x1081, 0xf000, 0x0001, 0x8813, 0xf495, 0x8081, 0x1183, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0030, 0xf842, 0x04fa, 0x1000, 0xf845, 0x051a, 0x4818, 0xf074, 0x0e9c, 0xf073, 0x051b, 0xe800, 0xf273, 0x052a, 0x80e6, 0x0002, 0x1087, 0xf000, 0x0001, 0x8812, 0xf495, 0x8087, 0x1082, 0x80e6, 0x0002, 0x6b81, 0x0001, 0xee0a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeefa, 0xf495, 0x8002, 0x100d, 0x710b, 0x0011, 0x8003, 0x710c, 0x0012, 0x1081, 0x710a, 0x0017, 0xf000, 0x0001, 0x8081, 0x8811, 0xf495, 0xf495, 0x1281, 0x8004, 0xf845, 0x062c, 0x7102, 0x0011, 0xf7b8, 0x71e1, 0x0002, 0x0011, 0x10f8, 0x0011, 0xf843, 0x0574, 0x1004, 0xf010, 0x0001, 0x8813, 0xf495, 0x7710, 0xffff, 0x10eb, 0x0001, 0xfa44, 0x0559, 0xf495, 0x6d90, 0xf5a9, 0xf820, 0x0574, 0x7005, 0x0011, 0x7102, 0x0011, 0x11e1, 0x0001, 0x10f8, 0x000b, 0xf468, 0x7105, 0x0011, 0xf478, 0x08f8, 0x0011, 0xf847, 0x058f, 0xf073, 0x0593, 0x1004, 0xf010, 0x0001, 0x8811, 0xf495, 0x7713, 0xffff, 0x10e9, 0x0001, 0xfa44, 0x057b, 0xf495, 0x6d93, 0x7102, 0x0011, 0x7005, 0x0013, 0x11e1, 0x0001, 0x10f8, 0x000b, 0xf468, 0xf478, 0x08f8, 0x0013, 0xf846, 0x0593, 0xf273, 0x0595, 0x7105, 0x0011, 0x8911, 0xf495, 0x4811, 0x0082, 0x8082, 0x4811, 0xf274, 0x14ca, 0xf000, 0x0001, 0x8816, 0x4808, 0xf845, 0x0632, 0xf7b8, 0xf495, 0x1105, 0xf768, 0xf778, 0x09f8, 0x0011, 0xe762, 0xf84a, 0x05c8, 0x7102, 0x0013, 0x961f, 0xf830, 0x05c8, 0x7105, 0x0010, 0x4916, 0xf4a9, 0xf310, 0x0001, 0x8913, 0xf830, 0x05c3, 0x4911, 0x0905, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x05c2, 0x769b, 0x0020, 0x4911, 0x4812, 0x0905, 0xf600, 0x8812, 0x1105, 0xf640, 0x10f8, 0x0008, 0xf845, 0x05f7, 0x4812, 0xf010, 0x0001, 0x8813, 0x1004, 0xf010, 0x0001, 0x8814, 0xf640, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x05e5, 0x10ec, 0x0001, 0x809b, 0x10f8, 0x0008, 0xf845, 0x05e6, 0xf310, 0x0001, 0x8914, 0xf495, 0x7710, 0x0001, 0xf6ac, 0xfa20, 0x05f7, 0xf310, 0x0001, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x05f6, 0x769b, 0x0000, 0x1105, 0x4812, 0xf600, 0xf768, 0xf778, 0x09f8, 0x0011, 0xf84a, 0x0618, 0x7102, 0x0013, 0x961f, 0xf820, 0x0618, 0x7105, 0x0010, 0xf4a9, 0xf010, 0x0001, 0x8812, 0xf830, 0x0618, 0x4910, 0x4811, 0xf620, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0617, 0x769a, 0x0020, 0x4911, 0x4816, 0xf600, 0x8811, 0xf495, 0xf495, 0x7681, 0x0000, 0x7000, 0x0017, 0x1103, 0xf7e3, 0xf495, 0x4816, 0xf274, 0x1625, 0xf495, 0x4816, 0xf073, 0x0632, 0x7000, 0x0017, 0x1103, 0xf7e3, 0xf020, 0x2a5e, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xf120, 0x2803, 0x8811, 0x4a16, 0x4a17, 0x6fe1, 0x0001, 0x0e00, 0xeef6, 0x8817, 0xf495, 0x710e, 0x0013, 0xf200, 0x018f, 0x8004, 0xf210, 0x0001, 0x8812, 0x7605, 0x0000, 0x8006, 0xf070, 0x018f, 0x769a, 0x0020, 0x7104, 0x0012, 0x7682, 0x0000, 0xf120, 0x2803, 0x1004, 0xf7b8, 0xf010, 0x0001, 0x8107, 0x8004, 0x71e1, 0x0003, 0x0014, 0x11f8, 0x0014, 0xf768, 0xf778, 0xf310, 0x0064, 0x8812, 0xf84e, 0x06a4, 0xf495, 0x7715, 0x0064, 0x11f8, 0x0014, 0x09f8, 0x0015, 0xf84d, 0x06e7, 0x11f8, 0x0014, 0xf768, 0xf778, 0xf310, 0x0047, 0xf84e, 0x0692, 0xe947, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x06f7, 0xe925, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x06d5, 0xe945, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x06f7, 0xf073, 0x0712, 0x7715, 0x0058, 0x11f8, 0x0014, 0x09f8, 0x0015, 0xf84d, 0x06e7, 0x7715, 0x0063, 0x11f8, 0x0014, 0x09f8, 0x0015, 0xf84d, 0x0707, 0xf073, 0x0712, 0x10f8, 0x0014, 0xf468, 0xf478, 0xf010, 0x0070, 0xf846, 0x06c5, 0x10f8, 0x0014, 0xf468, 0xf478, 0xf010, 0x006f, 0xf842, 0x06e7, 0xe742, 0x7710, 0x0002, 0x6dea, 0xff9b, 0xf6aa, 0xf820, 0x06f7, 0xe969, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x06e7, 0xf073, 0x0712, 0xe975, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x06e7, 0xe978, 0x10f8, 0x0014, 0x08f8, 0x000b, 0xf845, 0x06e7, 0xf073, 0x0712, 0x7713, 0x2a65, 0x7107, 0x0012, 0xe510, 0x1183, 0x4812, 0xf84d, 0x07ef, 0x71eb, 0x0001, 0x0011, 0x6e81, 0x06de, 0x709a, 0x0011, 0xf073, 0x07ef, 0x4818, 0xf000, 0x0005, 0x8000, 0x4818, 0xf000, 0x0004, 0x8001, 0x7002, 0x0013, 0xf274, 0x0c3b, 0xf495, 0x4811, 0xf073, 0x0712, 0x4818, 0xf000, 0x0005, 0x8000, 0x4818, 0xf000, 0x0004, 0x8001, 0x7002, 0x0013, 0xf274, 0x07f4, 0xf495, 0x4811, 0xf073, 0x0712, 0x1183, 0xf300, 0x0001, 0x8183, 0x8913, 0xf010, 0x0001, 0xe510, 0x8004, 0x6881, 0xfffd, 0x7181, 0x0012, 0x61f8, 0x0012, 0x0002, 0xfa20, 0x073f, 0x7716, 0x0000, 0x10e1, 0x0003, 0x7713, 0x0075, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x073f, 0x7713, 0x006f, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x073f, 0x7713, 0x0078, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x073f, 0x7713, 0x0058, 0x11f8, 0x0008, 0x09f8, 0x0013, 0xf84d, 0x073f, 0x7716, 0x0001, 0x1005, 0xf844, 0x0750, 0x10f8, 0x0016, 0xf845, 0x0758, 0x7104, 0x0012, 0x7682, 0x002b, 0x6b04, 0xffff, 0xf273, 0x075b, 0x7181, 0x0012, 0x7104, 0x0012, 0x7682, 0x002d, 0x6b04, 0xffff, 0x7181, 0x0012, 0x1005, 0xf844, 0x076a, 0x6c86, 0x076a, 0x61f8, 0x0012, 0x0004, 0xf820, 0x076a, 0x7104, 0x0012, 0x7682, 0x0020, 0x6b04, 0xffff, 0x7181, 0x0012, 0x61f8, 0x0012, 0x0001, 0xf830, 0x0782, 0x1007, 0x0804, 0xf7b8, 0xf000, 0x018f, 0x11f8, 0x0008, 0xf768, 0xf778, 0x09e1, 0x0001, 0xf84e, 0x0782, 0x4917, 0xf520, 0xf273, 0x0783, 0xf200, 0x0001, 0x1007, 0x8008, 0x1004, 0xf000, 0x0001, 0x8000, 0x7601, 0x0000, 0x7602, 0x0190, 0x1008, 0xf074, 0x140a, 0x8812, 0xf495, 0xe770, 0xf6aa, 0x8004, 0xf830, 0x07aa, 0xf010, 0x0002, 0x8812, 0x4817, 0x0804, 0xf000, 0x0001, 0x4808, 0xf845, 0x07a8, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x07a7, 0x769a, 0x0020, 0x7687, 0x0000, 0xe712, 0x960b, 0xf830, 0x07c4, 0x1107, 0x1008, 0xf620, 0xf010, 0x0001, 0x8812, 0xf495, 0x7710, 0xffff, 0xf4aa, 0xfa30, 0x07ee, 0x7106, 0x0011, 0x7312, 0x001a, 0xf072, 0x07c1, 0x7699, 0x0020, 0xf073, 0x07ee, 0x7107, 0x0010, 0x7108, 0x0013, 0xf4ab, 0xfa30, 0x07d8, 0x7106, 0x0012, 0x4910, 0x4813, 0xf620, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x07d7, 0x769a, 0x0030, 0x4816, 0x1a05, 0x8816, 0xf495, 0xf495, 0x6c86, 0x07e3, 0xe712, 0x960d, 0xf820, 0x07ee, 0xe731, 0xf4a9, 0xf830, 0x07ee, 0x7712, 0x2803, 0xe510, 0x7681, 0x0030, 0x7007, 0x0012, 0x1007, 0xee0a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x8812, 0xeefe, 0xf495, 0x7106, 0x0014, 0x1184, 0xf693, 0xf030, 0x0001, 0x7105, 0x0015, 0xf600, 0x7104, 0x0013, 0xf000, 0x0001, 0x8811, 0x7084, 0x0011, 0xf000, 0x0001, 0x5781, 0x8084, 0x56f8, 0x2a88, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xfa42, 0x081c, 0x7711, 0x0000, 0x7711, 0x0001, 0x10f8, 0x0011, 0xfa45, 0x0827, 0x7083, 0x0011, 0xf274, 0x11e7, 0xf495, 0xf640, 0xf540, 0xf7b8, 0x71e2, 0x0003, 0x0011, 0x10f8, 0x0011, 0xf468, 0xf478, 0xf010, 0x0065, 0xf846, 0x084d, 0x7713, 0x0065, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x0871, 0x7713, 0x0045, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x0871, 0x7713, 0x0047, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x085d, 0xf073, 0x0879, 0x7713, 0x0066, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf845, 0x0867, 0x7713, 0x0067, 0x10f8, 0x0011, 0x08f8, 0x0013, 0xf844, 0x0879, 0x7000, 0x0012, 0x7001, 0x0015, 0xf274, 0x09e2, 0xf495, 0xf640, 0xf073, 0x0879, 0x7000, 0x0012, 0x7001, 0x0015, 0xf274, 0x087c, 0xf495, 0xf640, 0xf073, 0x0879, 0x7000, 0x0012, 0x7001, 0x0015, 0xf274, 0x08e4, 0xf495, 0xf640, 0xee02, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0x6bf8, 0x0018, 0xfe68, 0xf495, 0xf7b8, 0xe787, 0x11e7, 0x019c, 0x8912, 0x81e7, 0x0196, 0x11e2, 0x0002, 0x71e7, 0x019d, 0x0011, 0xf84a, 0x0895, 0x76e2, 0x0002, 0x0006, 0xe906, 0x8100, 0x4918, 0xf300, 0x0004, 0x8101, 0x4918, 0xf300, 0x0005, 0x8102, 0xf074, 0x11f5, 0xe783, 0x8814, 0x6deb, 0x0006, 0x1084, 0x8083, 0x10f8, 0x0008, 0xf845, 0x08b1, 0x71ec, 0x0001, 0x0012, 0x6e82, 0x08aa, 0x709b, 0x0012, 0x1004, 0x7181, 0x0016, 0x8000, 0x7601, 0x0001, 0x71e7, 0x0196, 0x0012, 0x10e2, 0x0002, 0x8002, 0x4818, 0x7003, 0x0011, 0xf274, 0x0a93, 0xf000, 0x0006, 0x7181, 0x0010, 0xf7ae, 0xe801, 0xf830, 0x08d1, 0x71e7, 0x0196, 0x0012, 0x960c, 0xf830, 0x08d1, 0xe800, 0x1104, 0x8100, 0x8001, 0x4818, 0x7002, 0x0011, 0xf274, 0x0bc0, 0xf000, 0x0006, 0x6bf8, 0x0018, 0x0198, 0xf495, 0xf495, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0xf7b8, 0x4a17, 0xee96, 0xf540, 0x716e, 0x0011, 0x71e1, 0x0002, 0x0012, 0x10f8, 0x0012, 0xfa42, 0x08fa, 0x716f, 0x0017, 0x7712, 0x0006, 0x76e1, 0x0002, 0x0006, 0x56f8, 0x2a8a, 0x7716, 0x0000, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0952, 0x56f8, 0x2a8c, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x092e, 0x56f8, 0x2a88, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf845, 0x0968, 0x56f8, 0x2a8e, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x0930, 0xf073, 0x0944, 0x57f8, 0x2a8c, 0x56f8, 0x2a90, 0x4e00, 0xf274, 0x1174, 0x6d8e, 0xf640, 0xf540, 0x56f8, 0x2a8e, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x0930, 0x56f8, 0x2a90, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0954, 0xf073, 0x0968, 0x57f8, 0x2a8a, 0x56f8, 0x2a90, 0x4e00, 0xf274, 0x1028, 0x6d96, 0xf640, 0xf540, 0x56f8, 0x2a90, 0x4e00, 0xf274, 0x1008, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0954, 0x4818, 0x7000, 0x0012, 0xf000, 0x0004, 0x8001, 0x4818, 0xf000, 0x0005, 0x8002, 0xf274, 0x11f5, 0xf495, 0xf640, 0xe783, 0x8814, 0x6deb, 0x0006, 0x1084, 0x8083, 0x10f8, 0x0008, 0xf845, 0x0987, 0x71ec, 0x0001, 0x0012, 0x6e82, 0x0980, 0x709b, 0x0012, 0x6004, 0x0002, 0xf820, 0x09a2, 0xe782, 0xf6b8, 0x6b04, 0xffff, 0x6dea, 0x0005, 0xf120, 0xffff, 0x10ea, 0x0001, 0xfa44, 0x0993, 0xf300, 0x0001, 0x4818, 0xf000, 0x0005, 0xf600, 0x8812, 0xf495, 0x6d96, 0x7682, 0x0000, 0x10e1, 0x0003, 0x8000, 0x7001, 0x0017, 0xf274, 0x0b6c, 0xf495, 0x4816, 0x1004, 0x8000, 0x7601, 0x0001, 0x10e1, 0x0002, 0x8002, 0x4818, 0x7003, 0x0017, 0xf274, 0x0a93, 0xf000, 0x0006, 0xe782, 0xf6b8, 0x6dea, 0x0005, 0xf120, 0xffff, 0x10ea, 0x0001, 0xfa44, 0x09bf, 0xf300, 0x0001, 0x1004, 0x08f8, 0x000b, 0xfa44, 0x09d2, 0x7713, 0x0001, 0xe712, 0x960c, 0xf830, 0x09d2, 0x7713, 0x0000, 0x1004, 0x8000, 0x7001, 0x0013, 0x4818, 0x7002, 0x0017, 0xf274, 0x0bc0, 0xf000, 0x0006, 0xee6a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xee96, 0x7711, 0x0000, 0x716e, 0x0016, 0x71e6, 0x0002, 0x0012, 0x11f8, 0x0012, 0xfa4d, 0x09ff, 0x716f, 0x0017, 0xf7b8, 0x11f8, 0x0012, 0xf84a, 0x0a04, 0x76e6, 0x0002, 0x0006, 0xf273, 0x0a04, 0x7712, 0x0006, 0x7712, 0x0001, 0x76e6, 0x0002, 0x0001, 0x4918, 0x7000, 0x0012, 0xf300, 0x0005, 0x8101, 0x4918, 0xf300, 0x0004, 0x8102, 0xf074, 0x0ef3, 0xe783, 0x8814, 0x6deb, 0x0006, 0x1084, 0x8083, 0x10f8, 0x0008, 0xf845, 0x0a21, 0x71ec, 0x0001, 0x0012, 0x6e82, 0x0a1a, 0x709b, 0x0012, 0xf7b8, 0xf495, 0x1005, 0xf468, 0xf478, 0xf010, 0xfffd, 0xf843, 0x0a47, 0x11e6, 0x0002, 0x10f8, 0x000b, 0xf468, 0xf478, 0x0805, 0xf842, 0x0a60, 0x1005, 0xf468, 0xf478, 0xf010, 0x0002, 0xf843, 0x0a47, 0x1005, 0xf010, 0x0001, 0x8005, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x0002, 0x6d91, 0xf842, 0x0a3a, 0x1005, 0xf846, 0x0a53, 0x1005, 0xf000, 0x0001, 0x8005, 0x10f8, 0x0008, 0x6d89, 0xf847, 0x0a4a, 0x10e6, 0x0003, 0xf000, 0xfffe, 0x8000, 0x7001, 0x0017, 0xf274, 0x0b6c, 0xf495, 0x4811, 0x11e6, 0x0002, 0x1005, 0x7187, 0x0011, 0x8000, 0x1286, 0xf47d, 0xf030, 0x0001, 0x8001, 0x8102, 0x4818, 0x7003, 0x0017, 0xf274, 0x0a93, 0xf000, 0x0006, 0x1005, 0x8000, 0x7187, 0x0010, 0xf4a9, 0x7712, 0x0000, 0xe900, 0xf830, 0x0a7c, 0xe901, 0xe808, 0x1886, 0xf2a0, 0x10f8, 0x0008, 0xf845, 0x0a85, 0x7712, 0x0001, 0x7001, 0x0012, 0x4818, 0x7002, 0x0017, 0xf274, 0x0bc0, 0xf000, 0x0006, 0xee6a, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xeeff, 0xf495, 0x1103, 0x8100, 0xf110, 0x0001, 0x8913, 0xf495, 0x7711, 0xffff, 0x7104, 0x0015, 0x7105, 0x0014, 0x7106, 0x0010, 0xe732, 0x11ea, 0x0001, 0xfa4c, 0x0aa5, 0xf495, 0x6d91, 0x4911, 0xf500, 0xf7b8, 0xf210, 0x0001, 0x8812, 0x4814, 0x10f8, 0x0008, 0xf847, 0x0ada, 0x4814, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0ad9, 0xf6b8, 0xe731, 0xf120, 0xffff, 0x10e9, 0x0001, 0xfa44, 0x0ac1, 0xf300, 0x0001, 0xf7b8, 0xf495, 0x1000, 0xf468, 0xf478, 0x08f8, 0x000b, 0xf847, 0x0ada, 0x10f8, 0x0015, 0xf845, 0x0ada, 0x7180, 0x0011, 0x7681, 0x0030, 0x6b80, 0xffff, 0xf6b8, 0xe731, 0xf120, 0xffff, 0x10e9, 0x0001, 0xfa44, 0x0ade, 0xf300, 0x0001, 0xf7b8, 0xf495, 0x1000, 0xf468, 0xf478, 0x08f8, 0x000b, 0xf842, 0x0b22, 0x1000, 0xf843, 0x0b22, 0xf6b8, 0xe731, 0xf020, 0xffff, 0x11e9, 0x0001, 0xfa4c, 0x0af4, 0xf000, 0x0001, 0x6e85, 0x0b12, 0xf495, 0x0800, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x0b12, 0x6082, 0x0030, 0xf820, 0x0b12, 0xf010, 0x0001, 0x10f8, 0x0008, 0x6d8a, 0xf847, 0x0b22, 0x6082, 0x0030, 0xf830, 0x0b07, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x0b22, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0b21, 0x7180, 0x0015, 0xe543, 0x6b80, 0xffff, 0x1000, 0xf842, 0x0b67, 0x1000, 0xf484, 0x8811, 0x10f8, 0x0008, 0xf468, 0xf478, 0x08f8, 0x0014, 0xf842, 0x0b4a, 0xf6b8, 0xf495, 0xf020, 0xffff, 0x11eb, 0x0001, 0xfa4c, 0x0b34, 0xf000, 0x0001, 0xf7b8, 0x10f8, 0x0008, 0xf847, 0x0b4a, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0b49, 0x7180, 0x0013, 0xe541, 0x6b80, 0xffff, 0x4811, 0x10f8, 0x0008, 0xf468, 0xf478, 0x08f8, 0x0014, 0xf847, 0x0b57, 0x4814, 0xe741, 0xf484, 0x8000, 0x1000, 0xf842, 0x0b67, 0x4811, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0b66, 0x7180, 0x0011, 0x7681, 0x0030, 0x6b80, 0xffff, 0xee01, 0x8a11, 0xfe00, 0xf495, 0x1080, 0x4a11, 0xf7b8, 0x4a16, 0x4a17, 0x8816, 0xeefc, 0x10f8, 0x0008, 0x7108, 0x0017, 0xfa47, 0x0b7e, 0x7109, 0x0011, 0xf273, 0x0b80, 0xf495, 0x4816, 0x4816, 0xf484, 0x7600, 0x000a, 0x7601, 0x0064, 0x7002, 0x0011, 0xf274, 0x0e01, 0x10f8, 0x0008, 0xf7b8, 0x4816, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x000a, 0xf842, 0x0bac, 0x4816, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0xfff6, 0xf847, 0x0ba3, 0x7181, 0x0012, 0x7682, 0x0030, 0x6b81, 0xffff, 0x4816, 0x10f8, 0x0008, 0xf842, 0x0bac, 0xf273, 0x0bad, 0xf495, 0xe82d, 0xe82b, 0x7181, 0x0012, 0x8082, 0x1081, 0xee04, 0xf010, 0x0001, 0x8812, 0x8081, 0x7082, 0x0017, 0x1081, 0xf010, 0x0001, 0x8081, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xf7b8, 0x4a16, 0x7714, 0x0000, 0x7103, 0x0013, 0x11f8, 0x0013, 0x3004, 0xfa4f, 0x0be7, 0x7105, 0x0016, 0xf110, 0x0001, 0x8912, 0xf495, 0x7711, 0xffff, 0x11ea, 0x0001, 0xfa4c, 0x0bd4, 0xf495, 0x6d91, 0x11f8, 0x0013, 0xf768, 0xf778, 0x09f8, 0x0011, 0xf84e, 0x0be7, 0x4913, 0xf500, 0xf310, 0x0001, 0x8914, 0xf110, 0x0001, 0x8915, 0x11f8, 0x000e, 0xf84d, 0x0bf4, 0x7186, 0x0011, 0x7681, 0x002e, 0x6b86, 0xffff, 0x7712, 0xffff, 0xe751, 0x11e9, 0x0001, 0xfa4c, 0x0bf7, 0xf495, 0x6d92, 0x11f8, 0x0013, 0xf768, 0xf778, 0x09f8, 0x0012, 0xf84f, 0x0c1d, 0x7186, 0x0011, 0x7681, 0x0030, 0xe752, 0x7711, 0xffff, 0x6b86, 0xffff, 0x11ea, 0x0001, 0xfa4c, 0x0c0e, 0xf495, 0x6d91, 0x11f8, 0x0011, 0x6d8b, 0xf768, 0xf778, 0x09f8, 0x0013, 0xf84b, 0x0c05, 0x11f8, 0x0013, 0xf84f, 0x0c31, 0x8810, 0xf495, 0xf495, 0xf5ac, 0xf830, 0x0c37, 0x7186, 0x0012, 0xe560, 0xf5ac, 0xfa20, 0x0c27, 0x6b86, 0xffff, 0xf073, 0x0c37, 0x7186, 0x0011, 0x7681, 0x0030, 0x6b86, 0xffff, 0x1086, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x8812, 0x4a17, 0xeefa, 0xf7b8, 0x8004, 0x10e2, 0x0002, 0x110c, 0x710a, 0x0017, 0xfa43, 0x0c4f, 0x710b, 0x0011, 0xf273, 0x0c52, 0x6882, 0xffef, 0x76e2, 0x0002, 0x0001, 0x71e2, 0x0003, 0x0012, 0x7713, 0x0058, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0c79, 0x7713, 0x006f, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0c7d, 0x7713, 0x0070, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0c79, 0x7713, 0x0078, 0x10f8, 0x0012, 0x08f8, 0x0013, 0xf845, 0x0c79, 0xf273, 0x0c7f, 0x7716, 0x000a, 0xf273, 0x0c7f, 0x7716, 0x0010, 0x7716, 0x0008, 0x8100, 0x1004, 0xf074, 0x0d09, 0x7104, 0x0012, 0x11e2, 0x0002, 0xf84c, 0x0c91, 0xf540, 0xf3e0, 0xf84c, 0x0c91, 0xf273, 0x0d04, 0xf495, 0xe801, 0x71e2, 0x0003, 0x0012, 0x7713, 0x0064, 0x11f8, 0x0012, 0x09f8, 0x0013, 0xf84d, 0x0c9f, 0x6ce2, 0xff97, 0x0cad, 0xf540, 0xf7b8, 0xf768, 0xf778, 0xf84a, 0x0cad, 0x7687, 0x0001, 0x7104, 0x0012, 0xf484, 0x71e2, 0x0003, 0x0012, 0x7000, 0x0016, 0x7001, 0x0012, 0x7002, 0x0011, 0xf074, 0x0e01, 0xf7b8, 0xf000, 0x0001, 0x11f8, 0x0008, 0xf768, 0x7104, 0x0012, 0xf778, 0x09e2, 0x0002, 0xf84e, 0x0cd4, 0x7181, 0x0012, 0xf000, 0x0001, 0x7682, 0x0030, 0x11f8, 0x0008, 0x6b81, 0xffff, 0xf768, 0x7104, 0x0012, 0xf778, 0x09e2, 0x0002, 0xf84f, 0x0cc2, 0x71e2, 0x0003, 0x0013, 0xe978, 0x10f8, 0x0013, 0x08f8, 0x000b, 0xf845, 0x0ce1, 0x6ce3, 0xffa8, 0x0cf7, 0x960c, 0xf820, 0x0cf7, 0x7181, 0x0012, 0x7082, 0x0013, 0x1081, 0xf010, 0x0001, 0x8812, 0xf495, 0x8081, 0x7682, 0x0030, 0x6b81, 0xffff, 0x7104, 0x0012, 0x71e2, 0x0003, 0x0013, 0x6ce3, 0xff91, 0x0d03, 0x960c, 0xf820, 0x0d03, 0x7181, 0x0012, 0x7682, 0x0030, 0x6b81, 0xffff, 0xe800, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x8813, 0x4a11, 0xe970, 0x71e3, 0x0003, 0x0011, 0x10f8, 0x0011, 0x08f8, 0x000b, 0xfa45, 0x0df8, 0x7102, 0x0012, 0x1183, 0xf330, 0x0160, 0x8913, 0xf495, 0x7710, 0x0020, 0xf4ab, 0xe800, 0xf830, 0x0db3, 0x7710, 0x0040, 0xf4ab, 0xf830, 0x0d64, 0xf7b8, 0x11f8, 0x0011, 0xf768, 0xf778, 0xf310, 0x006f, 0xf84e, 0x0d52, 0x7713, 0x006f, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0x7713, 0x0058, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0x7713, 0x0064, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df0, 0x7713, 0x0069, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df0, 0xf073, 0x0dff, 0x7713, 0x0075, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0x7713, 0x0078, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0xf073, 0x0dff, 0xf7b8, 0x11f8, 0x0011, 0xf768, 0xf778, 0xf310, 0x006f, 0xf84e, 0x0d8f, 0x7713, 0x006f, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0da1, 0x7713, 0x0058, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0da1, 0x7713, 0x0064, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0da1, 0x7713, 0x0069, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0da1, 0xf073, 0x0dff, 0x7713, 0x0075, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0da1, 0x7713, 0x0078, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0da1, 0xf073, 0x0dff, 0x1182, 0xf693, 0xf030, 0x0001, 0xf600, 0xf000, 0x0001, 0x8811, 0xf495, 0x4911, 0x7082, 0x0011, 0xf300, 0x0001, 0xf273, 0x0dff, 0x5681, 0x8182, 0xf7b8, 0x11f8, 0x0011, 0xf768, 0xf778, 0xf310, 0x006f, 0xf84e, 0x0dde, 0x7713, 0x006f, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0x7713, 0x0058, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0x7713, 0x0064, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df0, 0x7713, 0x0069, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df0, 0xf073, 0x0dff, 0x7713, 0x0075, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0x7713, 0x0078, 0x11f8, 0x0011, 0x09f8, 0x0013, 0xf84d, 0x0df8, 0xf073, 0x0dff, 0x1082, 0xf000, 0x0001, 0x8811, 0xf273, 0x0dff, 0x8082, 0x1081, 0x1082, 0xf000, 0x0001, 0x8811, 0xf495, 0x8082, 0x1281, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeefa, 0xf495, 0x4e02, 0xf0e0, 0x710a, 0x0016, 0x710b, 0x0017, 0xfa44, 0x0e18, 0x710c, 0x0011, 0x7181, 0x0012, 0x7682, 0x0030, 0xf273, 0x0e3b, 0x6b81, 0xffff, 0xf7b8, 0x7000, 0x0016, 0x5602, 0xf074, 0x0e4f, 0x4e04, 0x4e00, 0xf7b8, 0xf274, 0x13a8, 0x10f8, 0x0016, 0xf7b8, 0x6ee7, 0xffa8, 0x0e2d, 0x5702, 0xf520, 0xf300, 0x0010, 0x8912, 0xf495, 0x7181, 0x0013, 0xf6b8, 0x6dea, 0x2a67, 0xe501, 0x6b81, 0xffff, 0x5604, 0x4e02, 0xf844, 0x0e18, 0x1081, 0xf6b8, 0xf010, 0x0001, 0x8811, 0xf020, 0xffff, 0x11e9, 0x0001, 0xfa4c, 0x0e42, 0xf000, 0x0001, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfe00, 0xf010, 0x0001, 0x4a11, 0xeefe, 0x7712, 0x0008, 0x7104, 0x0011, 0x11f8, 0x0011, 0x09f8, 0x0012, 0xf84d, 0x0e65, 0x7712, 0x0010, 0x11f8, 0x0011, 0x09f8, 0x0012, 0xf84d, 0x0e69, 0xf073, 0x0e6d, 0xf273, 0x0e82, 0xf495, 0xf0fd, 0xf273, 0x0e82, 0xf495, 0xf0fc, 0xf540, 0xf6b8, 0xf3e0, 0xf310, 0xffff, 0xf84a, 0x0e7c, 0x7000, 0x0011, 0xf074, 0x16b5, 0xf273, 0x0e82, 0xf495, 0x4808, 0xf7b8, 0x11f8, 0x0011, 0x4f00, 0xf074, 0x1353, 0xee02, 0x8a11, 0xfc00, 0x4a11, 0x7711, 0xffff, 0xeefe, 0x6ce1, 0x0001, 0x0e90, 0xf273, 0x0e96, 0xe800, 0xe900, 0xf120, 0xffff, 0x10f8, 0xffff, 0xf300, 0x0001, 0x8100, 0xf074, 0x00c2, 0xee02, 0x8a11, 0xfc00, 0x8813, 0x4a11, 0xf020, 0x2aa2, 0xeefe, 0x1183, 0x8000, 0xf600, 0x8812, 0xf495, 0xf495, 0x6d92, 0x960c, 0xf820, 0x0eb6, 0x11eb, 0x0001, 0x1000, 0xf600, 0x8812, 0xf495, 0xf495, 0x6d92, 0x960c, 0xf830, 0x0eab, 0x8911, 0xf495, 0x7712, 0x002d, 0x11f8, 0x0011, 0x09f8, 0x0012, 0xe800, 0xf84d, 0x0ec8, 0x6ee1, 0xffd5, 0x0ecd, 0x7714, 0x0000, 0xf073, 0x0eca, 0x7714, 0x0001, 0x71eb, 0x0001, 0x0011, 0x4911, 0x0100, 0x8912, 0xf495, 0xf495, 0x6d92, 0x960d, 0xf820, 0x0eeb, 0x4911, 0x880e, 0x71eb, 0x0001, 0x0011, 0xf066, 0x000a, 0xf600, 0x7001, 0x0011, 0x1100, 0x0101, 0x8912, 0xf495, 0xf495, 0x6d92, 0x960d, 0xfa30, 0x0ed6, 0xf010, 0x0030, 0x11f8, 0x0014, 0xf84d, 0x0ef0, 0xf484, 0xee02, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x4a17, 0xeef8, 0xf7b8, 0x4e02, 0x710e, 0x0011, 0x710d, 0x0017, 0x710c, 0x0016, 0x56f8, 0x2a92, 0x76f8, 0x2993, 0x0030, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xe900, 0xf842, 0x0f0f, 0xe901, 0x56f8, 0x2a92, 0x8181, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0f1f, 0x5602, 0xf074, 0x11e7, 0x4e02, 0x56f8, 0x2a94, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xfa47, 0x0f3f, 0x7711, 0x0000, 0x56f8, 0x2a96, 0x4e00, 0x5602, 0xf074, 0x1028, 0x57f8, 0x2a94, 0x4e02, 0x4f00, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0x6d91, 0xf846, 0x0f2d, 0xf020, 0x2993, 0x8004, 0x56f8, 0x2a92, 0x4e00, 0x5602, 0xf274, 0x1008, 0xf495, 0x6d96, 0xf7b8, 0x10f8, 0x0008, 0xf845, 0x0f79, 0x56f8, 0x2a98, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x0f79, 0x56f8, 0x2a96, 0x4e00, 0x5602, 0xf074, 0x1174, 0x4e02, 0xf7b8, 0x56f8, 0x2a92, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0x6d89, 0xf845, 0x0f79, 0x56f8, 0x2a98, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x0f5a, 0x1004, 0xf000, 0x0001, 0x8005, 0x5602, 0xf074, 0x10ff, 0x1105, 0x8100, 0xf074, 0x13bc, 0xf540, 0x8006, 0x1004, 0xf500, 0xf300, 0x0001, 0x8912, 0x4811, 0x1106, 0xf500, 0xf7b8, 0x8187, 0x1106, 0xf768, 0xf778, 0x09f8, 0x0016, 0xf84a, 0x0fc3, 0x4916, 0x0906, 0x8916, 0xf495, 0x4816, 0x10f8, 0x0008, 0xf847, 0x0fca, 0x4816, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x0fc0, 0xf7b8, 0xf495, 0x5602, 0xf074, 0x10ff, 0xf074, 0x114a, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x11ec, 0x4e02, 0x56f8, 0x2a96, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x1174, 0x4e02, 0xf074, 0x10c3, 0xf000, 0x0030, 0x8092, 0xf073, 0x0fca, 0x1104, 0x4816, 0xf600, 0xf000, 0x0001, 0x8812, 0xf495, 0xf7b8, 0x10ea, 0xffff, 0xf468, 0xf478, 0xf010, 0x0035, 0xf843, 0x1000, 0x4812, 0xf010, 0x0001, 0x8811, 0xf495, 0xf495, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf843, 0x0ff3, 0x7689, 0x0030, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x0fe5, 0x7104, 0x0010, 0xf7a9, 0xf830, 0x1000, 0x76ea, 0xffff, 0x0000, 0x4810, 0xf273, 0x1003, 0x6b87, 0x0001, 0x7682, 0x0000, 0x1005, 0xee08, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xf7b8, 0xf468, 0xf478, 0x5704, 0xf842, 0x1015, 0xff4b, 0xf484, 0xf784, 0xf586, 0xf808, 0x1020, 0xf587, 0xf808, 0x1024, 0xf420, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x101c, 0xe801, 0xf495, 0xf273, 0x101c, 0xf020, 0xffff, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf6b7, 0xeef3, 0xf7b8, 0xf468, 0xf478, 0xf845, 0x1095, 0x6f05, 0x0c79, 0x800b, 0xf063, 0x007f, 0xf060, 0x0080, 0x820a, 0x5612, 0xf845, 0x10b3, 0x6f06, 0x0c79, 0x8009, 0xf063, 0x007f, 0xf060, 0x0080, 0x8208, 0x1005, 0x1c06, 0xf030, 0x0100, 0x8004, 0x1005, 0xf030, 0x00ff, 0x1106, 0xf330, 0x00ff, 0xf000, 0x007f, 0xf620, 0x8001, 0xf843, 0x10ab, 0xf010, 0x00ff, 0xf846, 0x109b, 0x560a, 0xf0e6, 0x5708, 0xf3e7, 0x4f08, 0xec0e, 0x1e08, 0x8002, 0x0a02, 0xec0a, 0x1e08, 0x6f03, 0x0c85, 0x3002, 0x2409, 0xf0ff, 0xec0b, 0x1e08, 0xf0e4, 0xf030, 0xffff, 0xf0e1, 0xf484, 0x0203, 0x3c02, 0x1101, 0xf48e, 0xf495, 0xf48f, 0x8c01, 0x0901, 0xf0ff, 0xf300, 0x0001, 0xf000, 0x0020, 0xf48e, 0xf495, 0xf48f, 0x8c01, 0x0901, 0x8101, 0xf84f, 0x10ab, 0xf310, 0x00ff, 0xf84a, 0x109b, 0xf0f9, 0x8003, 0xf038, 0x7f00, 0x8202, 0x4404, 0x3c01, 0xf0e7, 0x5002, 0xee0d, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0x7600, 0x0002, 0xf074, 0x10c2, 0xf483, 0xf061, 0x0081, 0x4504, 0xf84c, 0x1095, 0xf162, 0x8000, 0xf273, 0x1095, 0xf2c0, 0xf495, 0x7600, 0x0001, 0xf074, 0x10c2, 0xf273, 0x1095, 0xf420, 0xf495, 0x7600, 0x0003, 0xf074, 0x10c2, 0x4505, 0xf363, 0x0100, 0xf061, 0x0081, 0xf065, 0x8000, 0xf273, 0x1095, 0xf2a7, 0xf495, 0xfc00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf6b8, 0xeefd, 0xf845, 0x10e5, 0x6f01, 0x0c79, 0xf0e9, 0xf0f7, 0xf060, 0x0080, 0x6f02, 0x0c67, 0x1101, 0xf330, 0x00ff, 0xf310, 0x007f, 0xf84b, 0x10eb, 0xf310, 0x000e, 0xf84e, 0x10ef, 0x890e, 0x6101, 0x0100, 0x1402, 0xfd30, 0xf484, 0xee03, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x10e5, 0xf420, 0xf495, 0x7600, 0x0002, 0xf074, 0x10c2, 0x6101, 0x0100, 0xf020, 0x7fff, 0xf820, 0x10e5, 0xf000, 0x0001, 0xf273, 0x10e5, 0xf484, 0xf495, 0xf845, 0x1132, 0x4a0e, 0x4a0d, 0x4a0b, 0x4a0c, 0xf6b8, 0xeefd, 0x6f01, 0x0c79, 0xf0e9, 0xf0f7, 0xf060, 0x0080, 0xf447, 0x1101, 0xf330, 0x00ff, 0xf310, 0x007f, 0xf84b, 0x1133, 0xf310, 0x001e, 0xf84e, 0x1137, 0xf84d, 0x1128, 0xf300, 0x0010, 0xf84a, 0x1123, 0xf273, 0x1125, 0xf0f0, 0xf495, 0xf310, 0x0010, 0x890e, 0xf495, 0xf48f, 0x6101, 0x0100, 0xf495, 0xfd30, 0xf484, 0xee03, 0x8a0c, 0x8a0b, 0x8a0d, 0x8a0e, 0xfc00, 0xf273, 0x112d, 0xf420, 0xf495, 0x7600, 0x0002, 0xf074, 0x10c2, 0x6101, 0x0100, 0xf062, 0x7fff, 0xf040, 0xffff, 0xf483, 0xf820, 0x112d, 0xf000, 0x0001, 0xf273, 0x112d, 0xf484, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf7b8, 0xeefd, 0xf468, 0xf478, 0xf845, 0x116a, 0x8201, 0xf4ba, 0xf485, 0xf870, 0x1170, 0xf48e, 0xe99d, 0x8c00, 0x0900, 0xf48f, 0xf0e2, 0xf0fe, 0xf459, 0x6101, 0x8000, 0xf3ef, 0xf2a8, 0xf820, 0x116a, 0xf064, 0x8000, 0xee03, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x116a, 0xf062, 0xcf00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xf6b7, 0xeef3, 0xf7b8, 0xf468, 0xf478, 0xf845, 0x11cd, 0x6f05, 0x0c79, 0x800b, 0xf063, 0x007f, 0xf060, 0x0080, 0x820a, 0x5612, 0xf845, 0x11cd, 0x6f06, 0x0c79, 0x8009, 0xf063, 0x007f, 0xf060, 0x0080, 0x8208, 0x1005, 0x1c06, 0xf030, 0x0100, 0x8004, 0x1005, 0xf030, 0x00ff, 0x1106, 0xf330, 0x00ff, 0xf310, 0x007f, 0xf600, 0x8001, 0xf843, 0x11df, 0xf010, 0x00ff, 0xf846, 0x11d3, 0x300b, 0x2409, 0x2508, 0xf510, 0x300a, 0x2409, 0xf600, 0x2508, 0x8102, 0x3c02, 0xf000, 0x0040, 0xf468, 0xf478, 0xf6b8, 0x1101, 0xf842, 0x11be, 0xf0ff, 0xf300, 0x0001, 0x8101, 0xf84f, 0x11df, 0xf310, 0x00ff, 0xf84a, 0x11d3, 0xf0f9, 0x8003, 0xf038, 0x7f00, 0x8202, 0x4404, 0x3c01, 0xf0e7, 0x5002, 0xee0d, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0x7600, 0x0002, 0xf074, 0x10c2, 0x4504, 0xf020, 0xffff, 0xf2a7, 0xf273, 0x11cd, 0xf060, 0x7f7f, 0x7600, 0x0001, 0xf074, 0x10c2, 0xf273, 0x11cd, 0xf420, 0xf495, 0xf495, 0xff44, 0xf065, 0x8000, 0xfc00, 0xf495, 0x6001, 0x0000, 0xf495, 0xff20, 0x6a01, 0x8000, 0xf073, 0x16c1, 0x4a11, 0x4a16, 0x4a17, 0xeefa, 0xf7b8, 0x4e02, 0x710c, 0x0011, 0x710b, 0x0017, 0x710a, 0x0016, 0x56f8, 0x2a9a, 0x76f8, 0x29f7, 0x0030, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xe900, 0xf842, 0x1211, 0xe901, 0x56f8, 0x2a9a, 0x8181, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x1221, 0x5602, 0xf074, 0x11e7, 0x4e02, 0x56f8, 0x2a9c, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xfa47, 0x1241, 0x7711, 0x0000, 0x56f8, 0x2a9e, 0x4e00, 0x5602, 0xf074, 0x1028, 0x57f8, 0x2a9c, 0x4e02, 0x4f00, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0x6d91, 0xf846, 0x122f, 0xf020, 0x29f7, 0x8004, 0x56f8, 0x2a9a, 0x4e00, 0x5602, 0xf274, 0x1008, 0xf495, 0x6d96, 0xf7b8, 0x10f8, 0x0008, 0xf845, 0x127b, 0x56f8, 0x2aa0, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xf842, 0x127b, 0x56f8, 0x2a9e, 0x4e00, 0x5602, 0xf074, 0x1174, 0x4e02, 0xf7b8, 0x56f8, 0x2a9a, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0x6d89, 0xf845, 0x127b, 0x56f8, 0x2aa0, 0x4e00, 0x5602, 0xf074, 0x1008, 0xf7b8, 0x10f8, 0x0008, 0xf843, 0x125c, 0x1004, 0xf000, 0x0001, 0x8005, 0x5602, 0xf074, 0x10ff, 0x1105, 0x8100, 0xf074, 0x13bc, 0x8812, 0x1104, 0xf600, 0xf100, 0x0001, 0x8913, 0x4911, 0x4812, 0xf600, 0x8087, 0x4816, 0xf600, 0xf7b8, 0x8816, 0x10f8, 0x0008, 0xf847, 0x12b9, 0x4816, 0xf010, 0x0001, 0x881a, 0xf495, 0xf072, 0x12b8, 0xf7b8, 0xf495, 0x5602, 0xf074, 0x10ff, 0xf074, 0x114a, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x11ec, 0x4e02, 0x56f8, 0x2a9e, 0xf7b8, 0x4e00, 0x5602, 0xf074, 0x1174, 0x4e02, 0xf074, 0x10c3, 0xf000, 0x0030, 0x8093, 0xf7b8, 0x10eb, 0xffff, 0xf468, 0xf478, 0xf010, 0x0035, 0xf843, 0x12e7, 0x4813, 0xf010, 0x0001, 0x8811, 0xf495, 0xf495, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf843, 0x12e2, 0x7689, 0x0030, 0x1081, 0xf000, 0x0001, 0x8081, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x003a, 0xf842, 0x12d4, 0x7104, 0x0010, 0xf4a9, 0xf830, 0x12ed, 0x7683, 0x0000, 0xf273, 0x12fe, 0xf495, 0x1005, 0xf6ab, 0xf830, 0x12f9, 0x7711, 0x29f7, 0x76e1, 0x0001, 0x0000, 0xf273, 0x12fb, 0x7004, 0x0011, 0x7683, 0x0000, 0x6b87, 0x0001, 0x1004, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf7b8, 0xf468, 0xf478, 0x4506, 0xf1c0, 0x8300, 0xf485, 0x5706, 0xf785, 0x4f06, 0xf520, 0xf84d, 0x1323, 0xf84e, 0x1327, 0xf074, 0x1388, 0x6100, 0x8000, 0xf820, 0x131e, 0xf484, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x1319, 0xe801, 0xf495, 0xf273, 0x131e, 0xf420, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf7b8, 0x8200, 0xf468, 0xf478, 0xf485, 0x5706, 0xf785, 0x4f06, 0xf520, 0xf84d, 0x134b, 0xf84e, 0x134f, 0xf074, 0x1388, 0x6100, 0x8000, 0xfa20, 0x1346, 0xf640, 0xf495, 0xf484, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x1346, 0xf420, 0xf495, 0xf273, 0x133f, 0xf540, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf6b8, 0xf0e0, 0x5706, 0xf520, 0xf84d, 0x1367, 0xf84e, 0x136b, 0xf074, 0x1388, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x1362, 0xe801, 0xf495, 0xf273, 0x1362, 0xf420, 0xf495, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0xeefe, 0xf6b8, 0xf0e0, 0x5706, 0xf520, 0xf84d, 0x1384, 0xf84e, 0x137f, 0xf074, 0x1388, 0xf640, 0xee02, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf273, 0x137f, 0xf420, 0xf495, 0xf495, 0x4a11, 0xf6b8, 0xf273, 0x1390, 0x7711, 0x001f, 0x6d89, 0xf0e1, 0xf808, 0x138f, 0xe901, 0x5508, 0xf84b, 0x139b, 0xf273, 0x139c, 0xf040, 0x0001, 0x5308, 0x6c89, 0x13a0, 0x8a11, 0xfc00, 0xf3e1, 0xf0e1, 0xf808, 0x1394, 0xf273, 0x1394, 0xf340, 0x0001, 0xf495, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0xeefd, 0xf495, 0x4e00, 0x3109, 0x4408, 0x3501, 0x2409, 0xf76f, 0xf601, 0xee03, 0x8a0e, 0x8a0d, 0x8a0c, 0x8a0b, 0xfc00, 0xf540, 0x4a11, 0xf7b8, 0xf768, 0x7711, 0x0000, 0xeee8, 0xf778, 0xfa4a, 0x13ca, 0x711a, 0x0013, 0x7711, 0x0001, 0xe782, 0x6dea, 0x0015, 0xf540, 0x7682, 0x0000, 0xe80a, 0x4e00, 0xf274, 0x132b, 0xf495, 0xf640, 0xf7b8, 0x10f8, 0x0008, 0xf485, 0xf000, 0x0030, 0x80ea, 0xffff, 0xe80a, 0x4e00, 0xf274, 0x1303, 0xf495, 0xf640, 0xf7b8, 0xf540, 0xf468, 0xf478, 0xf844, 0x13d0, 0x10f8, 0x0011, 0xf845, 0x13f1, 0x76ea, 0xffff, 0x002d, 0x4818, 0x4912, 0xf000, 0x0002, 0xf620, 0x7000, 0x0012, 0xf000, 0x0014, 0x10f8, 0x0008, 0x4e16, 0x8001, 0xf274, 0x142a, 0xf495, 0x4813, 0xf7b8, 0xf495, 0x5616, 0xee18, 0x8a11, 0xfe00, 0xf010, 0x0001, 0xf7b8, 0x4a11, 0x8812, 0x1004, 0x1103, 0xfa47, 0x1427, 0x7102, 0x0011, 0xf010, 0x0001, 0x881a, 0x6d89, 0xf072, 0x1426, 0x10e9, 0x0001, 0x8092, 0x10f8, 0x0008, 0x08f8, 0x000b, 0xf844, 0x1426, 0xf273, 0x1428, 0xf495, 0x4812, 0xf495, 0xe800, 0x8a11, 0xfc00, 0x1302, 0x7101, 0x0012, 0x8813, 0xf84d, 0x1437, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x1436, 0xe589, 0xfc00, 0x4a11, 0x7211, 0x2a5b, 0xf495, 0x8813, 0x6c81, 0x1443, 0xf273, 0x146e, 0x7313, 0x2a5b, 0xf495, 0x7712, 0x0000, 0x1183, 0xf7b8, 0x10f8, 0x000b, 0xf468, 0xf478, 0x0881, 0xf842, 0x1457, 0xe712, 0x71e2, 0x0001, 0x0011, 0x6c81, 0x1447, 0xf073, 0x146b, 0x4811, 0xf845, 0x146b, 0x6c82, 0x1463, 0x70e3, 0x0001, 0x2a5b, 0xf273, 0x1471, 0x7313, 0x2a5b, 0x70e3, 0x0001, 0x0011, 0x70e2, 0x0001, 0x0013, 0xf073, 0x1471, 0x70e2, 0x0001, 0x0013, 0x76e3, 0x0001, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x8813, 0x7211, 0x2a5b, 0x4811, 0xf845, 0x1496, 0xe730, 0xf4a9, 0xf830, 0x1491, 0xe712, 0x71e2, 0x0001, 0x0011, 0x4811, 0xf845, 0x1496, 0xf7a9, 0xf830, 0x147e, 0x4812, 0xf845, 0x1491, 0x10e3, 0x0001, 0xf273, 0x1499, 0x80e2, 0x0001, 0x71e3, 0x0001, 0x2a5b, 0xf073, 0x1499, 0x76f8, 0x2a5b, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x10f8, 0x2801, 0xf4e3, 0x7711, 0x2bb1, 0x61f8, 0x0011, 0x0001, 0xf830, 0x14b6, 0x4811, 0x7681, 0x0000, 0xf000, 0x0001, 0x80f8, 0x2a5b, 0xf020, 0x00fe, 0x80f8, 0x2a5c, 0xf484, 0xf273, 0x14bf, 0x80e1, 0x0001, 0xf020, 0x00ff, 0x80f8, 0x2a5c, 0x7311, 0x2a5b, 0xf484, 0x80f8, 0x2bb1, 0x7211, 0x2a5b, 0xf495, 0x76e1, 0x0001, 0x0000, 0x10f8, 0x2802, 0xf4e3, 0x8a11, 0xfc00, 0x4a11, 0x8811, 0x4a16, 0xeeff, 0x10f8, 0x2801, 0xf4e3, 0x10f8, 0x2a5d, 0xf845, 0x14da, 0xf074, 0x149b, 0x76f8, 0x2a5d, 0x0000, 0xf7b8, 0x4811, 0x10f8, 0x0008, 0xfa43, 0x14fc, 0x7216, 0x2a5b, 0x61f8, 0x0011, 0x0001, 0xf830, 0x14e8, 0x6d91, 0x4811, 0xf484, 0x8811, 0x4816, 0xf845, 0x14fc, 0x1186, 0x10f8, 0x000b, 0xf468, 0xf478, 0x08f8, 0x0011, 0xf847, 0x150b, 0x71e6, 0x0001, 0x0016, 0x6c86, 0x1502, 0x10f8, 0x2802, 0xf4e3, 0xe800, 0xf073, 0x1537, 0x1186, 0x10f8, 0x000b, 0xf468, 0xf478, 0x08f8, 0x0011, 0xf846, 0x14f7, 0x8100, 0xf274, 0x1473, 0xf495, 0x4816, 0xf7b8, 0x4811, 0x0800, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x0002, 0xf842, 0x151f, 0xf273, 0x152f, 0xf495, 0xf640, 0x4911, 0x4816, 0xf620, 0xf000, 0x0001, 0x8812, 0x1000, 0xf620, 0xf000, 0x0001, 0x8082, 0xf274, 0x1438, 0xf495, 0x4812, 0x4811, 0xf484, 0x8086, 0x10f8, 0x2802, 0xf4e3, 0x4816, 0xf000, 0x0001, 0xee01, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0xf495, 0x3002, 0x20f8, 0x0008, 0xf274, 0x14ca, 0x8811, 0xf495, 0x8812, 0xf495, 0xf495, 0x6c82, 0x154d, 0xf273, 0x155b, 0xf495, 0xe800, 0x4911, 0xf495, 0x490b, 0xf84d, 0x155b, 0x4911, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x155a, 0x7692, 0x0000, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0xf7b8, 0x4a17, 0x8817, 0xf010, 0x0001, 0xeefa, 0x8816, 0x110a, 0x10f8, 0x000b, 0x76f8, 0x2a5c, 0x0100, 0x8911, 0xf843, 0x15d8, 0x6c87, 0x1577, 0xf274, 0x14ca, 0xf495, 0xf640, 0xf073, 0x1620, 0x6c81, 0x157f, 0xf274, 0x1625, 0xf495, 0x4817, 0xf073, 0x15d8, 0x1086, 0xfa47, 0x15d8, 0xf495, 0x8002, 0x61f8, 0x0011, 0x0001, 0xf830, 0x158a, 0x6d91, 0x10f8, 0x0011, 0x1102, 0xf468, 0xf478, 0x08f8, 0x000b, 0xf847, 0x1603, 0xf640, 0x4916, 0xf600, 0xf000, 0x0001, 0x8003, 0x8004, 0x10f8, 0x2801, 0xf4e3, 0x6bf8, 0x2a5c, 0xfffe, 0x7210, 0x2a5c, 0x7103, 0x0012, 0x6de8, 0x2bb1, 0xf5aa, 0xf820, 0x15b8, 0xf7b8, 0xf495, 0x1182, 0xf84a, 0x15b8, 0x1002, 0xf620, 0x4911, 0xf620, 0xf100, 0x0001, 0x11f8, 0x000b, 0xf84a, 0x15dc, 0xf274, 0x14ca, 0xf495, 0x4811, 0x8811, 0xf495, 0x4811, 0xf845, 0x15d5, 0x4816, 0xf000, 0x0001, 0x8000, 0x1002, 0x8001, 0xf274, 0x1760, 0xf495, 0x4811, 0xf274, 0x1625, 0xf495, 0x4817, 0x10f8, 0x2802, 0xf4e3, 0x4811, 0xf073, 0x1620, 0x10f8, 0x2802, 0xf4e3, 0xf273, 0x1620, 0xf495, 0xe800, 0xf274, 0x1473, 0xf495, 0x4812, 0xf7b8, 0x10f8, 0x000b, 0xf468, 0xf478, 0xf010, 0x0002, 0xf842, 0x15ee, 0x4811, 0xf273, 0x15fe, 0xf500, 0x8186, 0x7086, 0x0011, 0x4816, 0x7002, 0x0011, 0x0002, 0xf000, 0x0001, 0x8816, 0xe801, 0xf620, 0x8086, 0xf274, 0x1438, 0xf495, 0x4816, 0x10f8, 0x2802, 0xf4e3, 0xf073, 0x161f, 0xf640, 0x4911, 0xf620, 0x8812, 0x10f8, 0x0008, 0xf468, 0xf478, 0xf010, 0x0002, 0xf843, 0x161f, 0x4816, 0xf600, 0x7086, 0x0011, 0xf000, 0x0001, 0x8816, 0x4812, 0xf010, 0x0001, 0x8086, 0x4816, 0xf274, 0x1625, 0xf000, 0x0001, 0x4817, 0xee06, 0x8a17, 0x8a16, 0x8a11, 0xfc00, 0x4a11, 0x4a16, 0x8816, 0x4808, 0xeeff, 0xf845, 0x16b1, 0x10f8, 0x2801, 0xf4e3, 0xf020, 0x0100, 0x6d8e, 0x80f8, 0x2a5c, 0x8000, 0x4816, 0x8810, 0xf495, 0x7712, 0x2bb1, 0xe721, 0xf5a9, 0xf830, 0x1645, 0xf7a9, 0xf830, 0x16ae, 0xf273, 0x1659, 0x7714, 0x0000, 0xf7b8, 0xf495, 0x1081, 0xe714, 0xf842, 0x164c, 0xf484, 0x4911, 0xf600, 0xf000, 0x0001, 0x8811, 0xf495, 0xf495, 0xf5a9, 0xf830, 0x1645, 0xf7a9, 0xf830, 0x16ae, 0xf7b8, 0xf495, 0x1081, 0xf843, 0x16ae, 0xf484, 0x8081, 0x4811, 0x0881, 0xf000, 0x0001, 0x8815, 0x1000, 0xf010, 0x0001, 0x80f8, 0x2a5c, 0x4812, 0x0000, 0x8810, 0xf495, 0xf495, 0x6d88, 0xf6ad, 0xf820, 0x1675, 0x7715, 0x0000, 0x4814, 0xf845, 0x169c, 0x1084, 0xf842, 0x169c, 0x4815, 0xf845, 0x1692, 0x1085, 0xf842, 0x1692, 0xf274, 0x1473, 0xf495, 0x4814, 0xf274, 0x1473, 0xf495, 0x4815, 0x1085, 0x0084, 0x0081, 0xf010, 0x0002, 0xf273, 0x16ac, 0x8084, 0x4814, 0xf274, 0x1473, 0xf495, 0x4814, 0x1081, 0x0084, 0xf273, 0x168e, 0xf010, 0x0001, 0x4815, 0xf845, 0x16ab, 0x1085, 0xf842, 0x16ab, 0xf274, 0x1473, 0xf495, 0x4815, 0x1085, 0x0081, 0xf010, 0x0001, 0x8081, 0x4811, 0xf074, 0x1438, 0x10f8, 0x2802, 0xf4e3, 0xee01, 0x8a16, 0x8a11, 0xfc00, 0xf6b8, 0x4808, 0xec0f, 0x1e01, 0xfc00, 0xf6b8, 0x4808, 0xec0f, 0x1e01, 0xfe00, 0xf0f0, 0xf495, 0xf495, 0x4a0e, 0x4a0b, 0x4a0c, 0x4a0d, 0xf6b7, 0xeef3, 0xf7b8, 0xf468, 0xf478, 0xf845, 0x173a, 0xf540, 0xf6b8, 0xf0e1, 0x6f05, 0x0c78, 0xf0e8, 0xf0f7, 0xf060, 0x0080, 0xfd4b, 0xf484, 0xf7b8, 0x4e0a, 0x5612, 0xf845, 0x173e, 0xf540, 0xf0e1, 0x6f06, 0x0c78, 0xf6b8, 0xf0e8, 0xf0f7, 0xf060, 0x0080, 0xfd4b, 0xf484, 0xf7b8, 0x4e08, 0x1005, 0x1106, 0xf520, 0xf84b, 0x1719, 0xf84e, 0x172a, 0x560a, 0x5008, 0xf845, 0x175c, 0x1105, 0x8204, 0xf485, 0xf0e6, 0xf48e, 0xf495, 0xf48f, 0x8c01, 0xf300, 0x0001, 0x0901, 0x8101, 0xf84f, 0x1758, 0xf310, 0x00ff, 0xf84a, 0x174b, 0xf0f9, 0x8003, 0xf038, 0x7f00, 0x8202, 0x6f04, 0x0c49, 0xf063, 0x0100, 0x3c01, 0xf0e7, 0x5002, 0xee0d, 0x8a0d, 0x8a0c, 0x8a0b, 0x8a0e, 0xfc00, 0xf785, 0xf310, 0x0018, 0xf84a, 0x173e, 0xf300, 0x0017, 0x8104, 0x5608, 0x4704, 0xf47f, 0x1105, 0x500a, 0xf844, 0x16f6, 0xf073, 0x1713, 0xf310, 0x0018, 0xf84a, 0x173a, 0xf300, 0x0017, 0x8104, 0x560a, 0x4704, 0xf47f, 0x1106, 0x5008, 0xf844, 0x16f6, 0xf073, 0x1713, 0xf273, 0x1713, 0x5612, 0xf495, 0x560a, 0xf846, 0x1744, 0xf484, 0x6b05, 0x0100, 0xf061, 0x0080, 0x4505, 0xf273, 0x1713, 0xf3e7, 0xf600, 0x7600, 0x0002, 0xf074, 0x10c2, 0x4404, 0xf063, 0x1f40, 0xf040, 0xffff, 0xf273, 0x1713, 0xf060, 0x7f7f, 0x7600, 0x0001, 0xf074, 0x10c2, 0xf273, 0x1713, 0xf420, 0xf495, 0x4a11, 0x8811, 0xf495, 0xeefe, 0xe710, 0x7104, 0x0012, 0xf6aa, 0x1105, 0xf820, 0x1772, 0x7000, 0x0012, 0x8101, 0xf074, 0x142a, 0xf073, 0x1787, 0x00f8, 0x000b, 0x8813, 0x4812, 0x00f8, 0x000b, 0x490b, 0x8812, 0xf84d, 0x1786, 0xf310, 0x0001, 0x891a, 0xf495, 0xf072, 0x1785, 0x10ea, 0xffff, 0x80eb, 0xffff, 0x4811, 0xee02, 0x8a11, 0xfc00,
+};
+static const unsigned short _section_cinit[] = {
+ 0x0001, 0x27de, 0x0000, 0x0001, 0x27ff, 0x0000, 0x0001, 0x2800, 0x0000, 0x0001, 0x2801, 0x030f, 0x0001, 0x2802, 0x030f, 0x0001, 0x2a5d, 0x0001, 0x0000,
+};
+static const unsigned short _section_const[] = {
+ 0x0028, 0x006e, 0x0075, 0x006c, 0x006c, 0x0029, 0x0000, 0x0025, 0x0000, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0000, 0x0000, 0x0000, 0x7f7f, 0xffff, 0xff7f, 0xffff, 0x3f80, 0x0000, 0x4120, 0x0000, 0x0000, 0x0000, 0x4f00, 0x0000, 0x4120, 0x0000, 0x3f80, 0x0000, 0x0000, 0x0000, 0x4f00, 0x0000, 0x4120, 0x0000, 0x3f80, 0x0000, 0x0000, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0088, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0044, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0041, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0042, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0010, 0x0010, 0x0010, 0x0010, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0044, 0x0053, 0x0050, 0x0020, 0x0069, 0x006e, 0x0069, 0x0074, 0x0065, 0x0064, 0x002e, 0x002e, 0x002e, 0x0000,
+};
+static const unsigned short _section_vectors[] = {
+ 0xf273, 0x01f7, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf273, 0x0085, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf273, 0x00e6, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495, 0xf273, 0x017e, 0xf495, 0xf495, 0xf4eb, 0xf495, 0xf495, 0xf495,
+};
+
+
+static const struct dsp_section dsp_image[] = {
+ {_section_text, 0x0080, 0x170a},
+ {_section_cinit, 0x2cb1, 0x0013},
+ {NULL /* .bss */, 0x278a, 0x02d4},
+ {_section_const, 0x2a5e, 0x0153},
+ {NULL /* .sysmem */, 0x2bb1, 0x0100},
+ {NULL /* .stack */, 0x178a, 0x1000},
+ {_section_vectors, 0x7f80, 0x0080},
+ {NULL /* .dma */, 0x8000, 0x4000},
+ {NULL, 0, 0}
+};
+
+/* Symbol table, usable with the DSP_() macro (see dsp-target.h). */
+#define _acked 0x27db
+#define _debugf 0x009c
+#define _handle_int0 0x0085
+#define _status 0x278a
+#define _vsnprintf 0x0293
+#define _main 0x00c2
+#define _audiohw_postinit 0x01ec
+#define _dma_init 0x0192
+#define _audiohw_init 0x01c1
+#define _c_int00 0x01f7
+#define _handle_dma0 0x00e6
+#define _handle_dmac 0x017e
+#define _data 0x8000
+#define _sdem_addrh 0x27dc
+#define _sdem_addrl 0x27dd
+#define cinit 0x2cb1
+#define __args_main 0x0e85
+#define _exit 0x0241
+#define _atexit 0x026e
+#define __dtors_ptr 0x2800
+#define __cleanup_ptr 0x27ff
+#define _abort 0x0290
+#define __lock 0x2801
+#define __unlock 0x2802
+#define __printfi 0x0316
+#define _memcpy 0x142a
+#define __register_lock 0x0310
+#define __register_unlock 0x0313
+#define __nop 0x030f
+#define _malloc 0x14ca
+#define _memccpy 0x140a
+#define _ecvt 0x0ef3
+#define _fcvt 0x11f5
+#define _atoi 0x0e9c
+#define _free 0x1625
+#define __ctypes_ 0x2aa2
+#define _ltoa 0x13bc
+#define __sys_memory 0x2bb1
+#define _minit 0x149b
+#define _realloc 0x155d
+#define _calloc 0x153b
+#define _memmove 0x1760
+#define ___text__ 0x0080
+#define etext 0x178a
+#define ___etext__ 0x178a
+#define ___cinit__ 0x2cb1
+#define ___bss__ 0x278a
+#define end 0x2a5e
+#define ___end__ 0x2a5e
+#define ___data__ 0x0000
+#define edata 0x0000
+#define ___edata__ 0x0000
+
+#endif
diff --git a/firmware/target/arm/tms320dm320/dsp/ipc.h b/firmware/target/arm/tms320dm320/dsp/ipc.h
index fafbc23c2c..b307753c0f 100644
--- a/firmware/target/arm/tms320dm320/dsp/ipc.h
+++ b/firmware/target/arm/tms320dm320/dsp/ipc.h
@@ -34,7 +34,7 @@
#define PACKED
#endif
-#define PCM_SIZE 32768 /* bytes */
+#define PCM_SIZE 0x8000 /* bytes */
struct sdram_buffer {
unsigned long addr;
diff --git a/firmware/target/arm/tms320dm320/dsp/main.c b/firmware/target/arm/tms320dm320/dsp/main.c
index aaeea21513..57156e0451 100644
--- a/firmware/target/arm/tms320dm320/dsp/main.c
+++ b/firmware/target/arm/tms320dm320/dsp/main.c
@@ -41,9 +41,10 @@ void main(void) {
audiohw_postinit();
-#if 0
- for (i = 0; i < 32; i++)
- {
+ debugf("DSP inited...");
+
+#ifdef DATA_32_SINE
+ for (i = 0; i < 32; i++) {
double ratio = ((double)i)/32.0;
double rad = 3.0*3.141592*ratio;
double normal = sin(rad);
@@ -51,24 +52,7 @@ void main(void) {
data[2*i + 0] = -(signed short)scaled;
data[2*i + 1] = (signed short)scaled;
}
-
- debugf("starting write");
-
- i = 0;
- p = data;
- SPSA0 = 0x01;
- for (;;) {
- while ((SPSD0 & (1 << 1)) == 0);
- DXR20 = *p++; // left channel
- DXR10 = *p++; // right channel
- if (++i == 32)
- {
- p = data;
- i = 0;
- }
- }
#endif
- debugf("DSP inited...");
for (;;) {
asm(" IDLE 1");
@@ -85,16 +69,6 @@ void main(void) {
memset((unsigned short *)0x7f80, 0, 0x80);
#endif
-#ifdef DATA_32_SINE
- for (i = 0; i < 32; i++) {
- double ratio = ((double)i)/32.0;
- double rad = 3.0*3.141592*ratio;
- double normal = sin(rad);
- double scaled = 32767.0*(normal);
- data[2*i + 0] = -(signed short)scaled;
- data[2*i + 1] = (signed short)scaled;
- }
-#endif
#ifdef MANUAL_TRANSFER
register signed short *p;
diff --git a/firmware/target/arm/tms320dm320/dsp/xml2h.py b/firmware/target/arm/tms320dm320/dsp/xml2h.py
new file mode 100644
index 0000000000..2d25c9028e
--- /dev/null
+++ b/firmware/target/arm/tms320dm320/dsp/xml2h.py
@@ -0,0 +1,193 @@
+#!/usr/bin/python
+# __________ __ ___.
+# Open \______ \ ____ ____ | | _\_ |__ _______ ___
+# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+# \/ \/ \/ \/ \/
+# $Id$
+#
+# Copyright (C) 2007 Catalin Patulea <cat@vv.carleton.ca>
+#
+# All files in this archive are subject to the GNU General Public License.
+# See the file COPYING in the source tree root for full license agreement.
+#
+# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+# KIND, either express or implied.
+#
+
+import sys, os.path, array, re
+from xml.dom import Node
+from xml.dom.minidom import parse
+
+
+C_IDENT_RE = re.compile('^[0-9a-zA-Z_]+$')
+
+
+def getText(nodelist):
+ rc = ""
+ for node in nodelist:
+ if node.nodeType == node.TEXT_NODE:
+ rc = rc + node.data
+ return rc
+
+
+def descendAll(root, tagname):
+ for child in root.childNodes:
+ if child.nodeType == Node.ELEMENT_NODE and child.tagName == tagname:
+ yield child
+
+
+def descend(root, tagname):
+ return descendAll(root, tagname).next()
+
+
+def getTagText(root, tagname):
+ try:
+ tag = descend(root, tagname)
+ except StopIteration:
+ return None
+ return getText(tag.childNodes)
+
+
+def main():
+ dom = parse(sys.stdin)
+
+ ofd = descend(dom, "ofd")
+ object_file = descend(ofd, "object_file")
+ object_file_name = descend(object_file, "name")
+
+ out_filepath = getText(object_file_name.childNodes)
+ sys.stderr.write("*.out filename (input): %s\n" % out_filepath)
+
+ out_file = open(out_filepath, "rb")
+ h_file = sys.stdout
+
+ h_file.write("""#ifndef DSP_IMAGE
+#define DSP_IMAGE
+/*
+ * Automatically generated by xml2h.py from %s.
+ *
+ * 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
+ *
+ */
+""" % out_filepath)
+
+ # Section data and directory.
+ h_directory = ["""
+static const struct dsp_section dsp_image[] = {"""]
+
+ ti_coff = descend(object_file, "ti_coff")
+ for section in descendAll(ti_coff, "section"):
+ page = int(getTagText(section, "page") or "0", 16)
+ name = getTagText(section, "name")
+ physical_addr = int(getTagText(section, "physical_addr"), 16)
+ raw_data_size = int(getTagText(section, "raw_data_size"), 16)
+ copy = getTagText(section, "copy")
+ data = getTagText(section, "data")
+ regular = getTagText(section, "regular")
+ text = getTagText(section, "text")
+ bss = getTagText(section, "bss")
+
+ file_offsets = descend(section, "file_offsets")
+ raw_data_ptr = int(getTagText(file_offsets, "raw_data_ptr"), 16)
+
+ if copy:
+ # Empirically, .debug* sections have this attribute set.
+ sys.stderr.write(
+ "%s: didn't copy debug section ('copy' attribute set)\n" %
+ name)
+ continue
+
+ if raw_data_size == 0:
+ sys.stderr.write("%s: not copying empty section\n" % name)
+ continue
+
+ if raw_data_size % 2 != 0:
+ sys.stderr.write("%s: error, raw_data_size 0x%04x not a multiple "
+ "of word size (2 bytes)\n" % (name, raw_data_size))
+ break
+
+ if data or regular or text:
+ sys.stderr.write("%s: placing 0x%04x words at 0x%04x from offset "
+ "0x%08x\n" % (
+ name, raw_data_size >> 1, physical_addr, raw_data_ptr))
+
+ sanitized_name = name.replace(".", "_")
+ h_file.write(("static const unsigned short _section%s[] = {\n" %
+ sanitized_name))
+
+ out_file.seek(raw_data_ptr)
+ data = array.array('H')
+ data.fromfile(out_file, raw_data_size >> 1)
+ h_file.write("\t")
+ for word in data:
+ h_file.write("0x%04x, " % word)
+ h_file.write("""
+};
+""")
+
+ h_directory.append("\t{_section%s, 0x%04x, 0x%04x}," % (
+ sanitized_name, physical_addr, raw_data_size >> 1))
+
+ continue
+
+ if bss:
+ sys.stderr.write("%s: bss section, 0x%04x words at 0x%04x\n" % (
+ name, raw_data_size >> 1, physical_addr))
+
+ h_directory.append("\t{NULL /* %s */, 0x%04x, 0x%04x}," % (
+ name, physical_addr, raw_data_size >> 1))
+ continue
+
+ sys.stderr.write("%s: error, unprocessed section\n" % name)
+
+ h_file.write("\n")
+
+ h_directory.append("\t{NULL, 0, 0}")
+ h_directory.append("};")
+
+ h_file.write("\n".join(h_directory))
+ h_file.write("\n")
+
+ # Symbols.
+ symbol_table = descend(ti_coff, "symbol_table")
+ h_file.write("""
+/* Symbol table, usable with the DSP_() macro (see dsp-target.h). */
+""")
+ for symbol in descendAll(symbol_table, "symbol"):
+ name = getTagText(symbol, "name")
+ kind = getTagText(symbol, "kind")
+ value = int(getTagText(symbol, "value"), 16)
+
+ if kind != "defined":
+ continue
+
+ if not C_IDENT_RE.match(name):
+ continue
+
+ h_file.write("#define %s 0x%04x\n" % (name, value))
+
+ h_file.write("\n#endif\n")
+ h_file.close()
+ out_file.close()
+
+ dom.unlink()
+
+
+if __name__ == "__main__":
+ main()
+