changeset 130:eb9fd8c04db3 ecos-sw-2000-10-23

Merge from eCos master repository on 2000-10-23-17:01:37-BST
author jlarmour
date Mon, 23 Oct 2000 17:10:57 +0000
parents 605a0fc6f385
children 8461114e4f19
files host/ChangeLog host/configure host/configure.in host/tools/Utils/win32/CellEdit.cpp host/tools/Utils/win32/CellEdit.h host/tools/Utils/win32/ComboEdit.cpp host/tools/Utils/win32/ComboEdit.h host/tools/ecostest/ChangeLog host/tools/ecostest/common/eCosTestSerialFilter.cpp packages/ChangeLog packages/NEWS packages/compat/posix/current/ChangeLog packages/compat/posix/current/cdl/posix.cdl packages/compat/posix/current/include/sigsetjmp.h packages/compat/posix/current/src/signal.cxx packages/compat/posix/current/tests/signal2.c packages/compat/posix/current/tests/sigsetjmp.c packages/compat/posix/current/tests/timer1.c packages/cygmon/current/ChangeLog packages/cygmon/current/misc/monitor.h packages/cygmon/current/misc/monitor_cmd.c packages/cygmon/current/misc/utils.c packages/devs/flash/powerpc/mbx/current/ChangeLog packages/devs/flash/powerpc/mbx/current/cdl/flash_mbx.cdl packages/devs/flash/powerpc/mbx/current/src/flash.h packages/devs/flash/powerpc/mbx/current/src/flash_erase_block.c packages/devs/flash/powerpc/mbx/current/src/flash_program_buf.c packages/devs/flash/powerpc/mbx/current/src/flash_query.c packages/devs/flash/powerpc/mbx/current/src/mbx_flash.c packages/devs/serial/arm/aeb/current/ChangeLog packages/devs/serial/arm/aeb/current/cdl/ser_arm_aeb.cdl packages/devs/serial/arm/cma230/current/ChangeLog packages/devs/serial/arm/cma230/current/cdl/ser_arm_cma230.cdl packages/devs/serial/arm/cma230/current/src/cma230_serial.c packages/devs/serial/arm/ebsa285/current/ChangeLog packages/devs/serial/arm/ebsa285/current/cdl/ser_arm_ebsa285.cdl packages/devs/serial/arm/edb7xxx/current/ChangeLog packages/devs/serial/arm/edb7xxx/current/cdl/ser_arm_edb7xxx.cdl packages/devs/serial/arm/sa11x0/current/ChangeLog packages/devs/serial/arm/sa11x0/current/cdl/ser_arm_sa11x0.cdl packages/devs/serial/i386/pc/current/ChangeLog packages/devs/serial/i386/pc/current/cdl/ser_i386_pc.cdl packages/devs/serial/loop/current/ChangeLog packages/devs/serial/loop/current/cdl/ser_loop.cdl packages/devs/serial/mips/jmr3904/current/ChangeLog packages/devs/serial/mips/jmr3904/current/cdl/ser_mips_jmr3904.cdl packages/devs/serial/mips/vrc4373/current/ChangeLog packages/devs/serial/mips/vrc4373/current/cdl/ser_mips_vrc4373.cdl packages/devs/serial/powerpc/cogent/current/ChangeLog packages/devs/serial/powerpc/cogent/current/cdl/ser_powerpc_cogent.cdl packages/devs/serial/sh/scif/current/ChangeLog packages/devs/serial/sh/scif/current/cdl/ser_sh_scif.cdl packages/devs/serial/sh/scif/current/src/sh_scif_serial.c packages/devs/serial/sparclite/sleb/current/ChangeLog packages/devs/serial/sparclite/sleb/current/cdl/ser_sparclite_sleb.cdl packages/devs/serial/sparclite/sleb/current/src/sleb_sdtr.c packages/devs/serial/v85x/v850/current/ChangeLog packages/devs/serial/v85x/v850/current/cdl/ser_v85x_v850.cdl packages/ecos.db packages/hal/arm/aeb/current/ChangeLog packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.h packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.ldi packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.mlt packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.h packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.ldi packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.mlt packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.h packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.ldi packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.mlt packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.h packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.ldi packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.mlt packages/hal/arm/arch/current/ChangeLog packages/hal/arm/arch/current/src/hal_misc.c packages/hal/arm/cma230/current/ChangeLog packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.h packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.ldi packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.mlt packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.h packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.ldi packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.mlt packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.h packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.ldi packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.mlt packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.h packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.ldi packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.mlt packages/hal/arm/ebsa285/current/ChangeLog packages/hal/arm/ebsa285/current/cdl/hal_arm_ebsa285.cdl packages/hal/arm/ebsa285/current/include/hal_ebsa285.h packages/hal/arm/ebsa285/current/src/redboot_cmds.c packages/hal/arm/edb7xxx/current/ChangeLog packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.h packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.ldi packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.mlt packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.h packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.ldi packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.mlt packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.h packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.ldi packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.mlt packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.h packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.ldi packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.mlt packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.h packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.ldi packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.mlt packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.h packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.ldi packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.mlt packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.h packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.ldi packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.mlt packages/hal/arm/pid/current/ChangeLog packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_ram.h packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_ram.ldi packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_rom.h packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_rom.ldi packages/hal/arm/sa11x0/assabet/current/ChangeLog packages/hal/arm/sa11x0/assabet/current/include/hal_platform_setup.h packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.h packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.ldi packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.mlt packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.h packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.ldi packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.mlt packages/hal/arm/sa11x0/brutus/current/ChangeLog packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.h packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.ldi packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.mlt packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.h packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.ldi packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.mlt packages/hal/common/current/ChangeLog packages/hal/common/current/include/drv_api.h packages/hal/common/current/include/hal_if.h packages/hal/common/current/src/drv_api.c packages/hal/common/current/src/generic-stub.c packages/hal/common/current/src/hal_stub.c packages/hal/common/current/src/stubrom/stubrom.c packages/hal/i386/arch/current/ChangeLog packages/hal/i386/arch/current/src/vectors.S packages/hal/i386/linux/current/ChangeLog packages/hal/i386/linux/current/cdl/hal_i386_linux.cdl packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.h packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.ldi packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.mlt packages/hal/i386/pc/current/ChangeLog packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.h packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.ldi packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.mlt packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.h packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.ldi packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.mlt packages/hal/mips/arch/current/ChangeLog packages/hal/mips/arch/current/src/hal_misc.c packages/hal/mips/jmr3904/current/ChangeLog packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.h packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.ldi packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.mlt packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.h packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.ldi packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.mlt packages/hal/mips/sim/current/ChangeLog packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.h packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.ldi packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.mlt packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.h packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.ldi packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.mlt packages/hal/mips/tx39/current/ChangeLog packages/hal/mips/tx39/current/include/var_cache.h packages/hal/mips/vrc4373/current/ChangeLog packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.h packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.ldi packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.mlt packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.h packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.ldi packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.mlt packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.h packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.ldi packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.mlt packages/hal/mn10300/arch/current/ChangeLog packages/hal/mn10300/arch/current/src/hal_misc.c packages/hal/mn10300/sim/current/ChangeLog packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.h packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.ldi packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.mlt packages/hal/mn10300/stb/current/ChangeLog packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.h packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.ldi packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.mlt packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.h packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.ldi packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.mlt packages/hal/mn10300/stdeval1/current/ChangeLog packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_ram.h packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_ram.ldi packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_rom.h packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_rom.ldi packages/hal/powerpc/arch/current/ChangeLog packages/hal/powerpc/arch/current/include/hal_arch.h packages/hal/powerpc/arch/current/include/hal_intr.h packages/hal/powerpc/arch/current/src/hal_intr.c packages/hal/powerpc/arch/current/src/hal_misc.c packages/hal/powerpc/cogent/current/ChangeLog packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.h packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.ldi packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.mlt packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.h packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.ldi packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.mlt packages/hal/powerpc/fads/current/ChangeLog packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.h packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.ldi packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.mlt packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.h packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.ldi packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.mlt packages/hal/powerpc/mbx/current/ChangeLog packages/hal/powerpc/mbx/current/cdl/hal_powerpc_mbx.cdl packages/hal/powerpc/mbx/current/images/redboot_RAM.bin packages/hal/powerpc/mbx/current/images/redboot_RAM.img packages/hal/powerpc/mbx/current/images/redboot_RAM.srec packages/hal/powerpc/mbx/current/images/redboot_ROM.bin packages/hal/powerpc/mbx/current/images/redboot_ROM.img packages/hal/powerpc/mbx/current/images/redboot_ROM.srec packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.h packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.ldi packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.mlt packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.h packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.ldi packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.mlt packages/hal/powerpc/mbx/current/misc/STUBS_config packages/hal/powerpc/mbx/current/misc/redboot_RAM.cfg packages/hal/powerpc/mbx/current/misc/redboot_ROM.cfg packages/hal/powerpc/mbx/current/tests/mbxtime.cxx packages/hal/powerpc/sim/current/ChangeLog packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.h packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.ldi packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.mlt packages/hal/sh/arch/current/ChangeLog packages/hal/sh/arch/current/cdl/hal_sh.cdl packages/hal/sh/arch/current/include/hal_arch.h packages/hal/sh/arch/current/include/sh_regs.h packages/hal/sh/arch/current/src/hal_misc.c packages/hal/sh/arch/current/src/sh.ld packages/hal/sh/arch/current/src/sh3_sci.c packages/hal/sh/arch/current/src/sh3_scif.c packages/hal/sh/arch/current/src/vectors.S packages/hal/sh/cq7708/current/ChangeLog packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.h packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.ldi packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.mlt packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.h packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.ldi packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.mlt packages/hal/sh/edk/current/ChangeLog packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.h packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.ldi packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.mlt packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.h packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.ldi packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.mlt packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.h packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.ldi packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.mlt packages/hal/sparclite/arch/current/ChangeLog packages/hal/sparclite/arch/current/include/hal_arch.h packages/hal/sparclite/sim/current/ChangeLog packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.h packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.ldi packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.mlt packages/hal/sparclite/sleb/current/ChangeLog packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.h packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.ldi packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.mlt packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.h packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.ldi packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.mlt packages/hal/sparclite/sleb/current/tests/slebtime.cxx packages/hal/v85x/arch/current/ChangeLog packages/hal/v85x/arch/current/include/hal_arch.h packages/hal/v85x/arch/current/src/hal_misc.c packages/hal/v85x/ceb_v850/current/ChangeLog packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.h packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.ldi packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.mlt packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.h packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.ldi packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.mlt packages/io/eth/current/ChangeLog packages/io/eth/current/cdl/eth_drivers.cdl packages/io/eth/current/src/net/eth_drv.c packages/io/fileio/current/ChangeLog packages/io/fileio/current/doc/fileio.txt packages/io/fileio/current/include/fileio.h packages/io/fileio/current/src/io.cxx packages/io/serial/current/ChangeLog packages/io/serial/current/cdl/io_serial.cdl packages/io/serial/current/src/common/serial.c packages/io/serial/current/tests/ser_test_protocol.inl packages/io/wallclock/current/ChangeLog packages/io/wallclock/current/tests/wallclock.cxx packages/io/wallclock/current/tests/wallclock2.cxx packages/kernel/current/ChangeLog packages/kernel/current/include/intr.hxx packages/kernel/current/src/intr/intr.cxx packages/kernel/current/src/sched/sched.cxx packages/kernel/current/tests/bin_sem0.cxx packages/kernel/current/tests/bin_sem1.cxx packages/kernel/current/tests/bin_sem2.cxx packages/kernel/current/tests/clock0.cxx packages/kernel/current/tests/clock1.cxx packages/kernel/current/tests/clockcnv.cxx packages/kernel/current/tests/cnt_sem0.cxx packages/kernel/current/tests/cnt_sem1.cxx packages/kernel/current/tests/except1.cxx packages/kernel/current/tests/flag0.cxx packages/kernel/current/tests/flag1.cxx packages/kernel/current/tests/intr0.cxx packages/kernel/current/tests/kill.cxx packages/kernel/current/tests/mbox1.cxx packages/kernel/current/tests/mqueue1.cxx packages/kernel/current/tests/mutex0.cxx packages/kernel/current/tests/mutex1.cxx packages/kernel/current/tests/mutex2.cxx packages/kernel/current/tests/mutex3.cxx packages/kernel/current/tests/philo.cxx packages/kernel/current/tests/release.cxx packages/kernel/current/tests/sched1.cxx packages/kernel/current/tests/sync2.cxx packages/kernel/current/tests/sync3.cxx packages/kernel/current/tests/testaux.hxx packages/kernel/current/tests/thread0.cxx packages/kernel/current/tests/thread1.cxx packages/kernel/current/tests/thread2.cxx packages/kernel/current/tests/tm_basic.cxx packages/net/tcpip/current/ChangeLog packages/net/tcpip/current/src/ecos/support.c packages/net/tcpip/current/src/lib/dhcp_support.c packages/net/tcpip/current/src/sys/net/if_bridge.c packages/redboot/current/ChangeLog packages/redboot/current/cdl/redboot.cdl packages/redboot/current/include/fis.h packages/redboot/current/include/redboot.h packages/redboot/current/src/flash.c packages/redboot/current/src/main.c packages/redboot/current/src/misc_funs.c packages/redboot/current/src/net/enet.c packages/redboot/current/src/net/eth_drv.c packages/redboot/current/src/net/pktbuf.c packages/redboot/current/src/parse.c packages/services/memalloc/common/current/ChangeLog packages/services/memalloc/common/current/tests/dlmalloc1.cxx packages/services/memalloc/common/current/tests/dlmalloc2.cxx packages/services/memalloc/common/current/tests/malloc4.cxx packages/services/memalloc/common/current/tests/memfix1.cxx packages/services/memalloc/common/current/tests/memfix2.cxx packages/services/memalloc/common/current/tests/memvar1.cxx packages/services/memalloc/common/current/tests/memvar2.cxx
diffstat 361 files changed, 12875 insertions(+), 2510 deletions(-) [+]
line wrap: on
line diff
--- a/host/ChangeLog
+++ b/host/ChangeLog
@@ -1,3 +1,13 @@
+2000-10-23  Jesper Skov  <jskov@redhat.com>
+
+	* configure: Disable ser_filter magic for now - properly this time!
+	* configure.in: Ditto.
+
+2000-10-17  Jesper Skov  <jskov@redhat.com>
+
+	* configure: Disable ser_filter magic for now.
+	* configure.in: Ditto.
+
 2000-09-15  Jesper Skov  <jskov@redhat.com>
 
 	* Makefile.in: Added ser_filter rules.
--- a/host/configure
+++ b/host/configure
@@ -1673,15 +1673,7 @@ ECOS_DIRS="infra libcdl"
 
 
 
-if test -f ${srcdir}/tools/Utils/common/configure; then
-  ECOS_DIRS="${ECOS_DIRS} tools/Utils/common"
-  
-fi
 
-if test -f ${srcdir}/tools/ecostest/common/configure; then
-  ECOS_DIRS="${ECOS_DIRS} tools/ecostest/common"
-  
-fi
 
 if test -d ${srcdir}/tools/configtool/standalone/common; then
   ECOS_DIRS="${ECOS_DIRS} tools/configtool/standalone/common"
@@ -1972,21 +1964,9 @@ EOF
 cat >> $CONFIG_STATUS <<EOF
 
 
-
-
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 
-	test -d tools 			     || mkdir tools
-	test -d tools/Utils 		     || mkdir tools/Utils
-	test -d tools/Utils/common 	     || mkdir tools/Utils/common
-  
-
-    test -d tools 			     || mkdir tools
-    test -d tools/ecostest 		     || mkdir tools/ecostest
-    test -d tools/ecostest/common 	     || mkdir tools/ecostest/common
-  
-
     test -d tools   			       || mkdir tools
     test -d tools/configtool                   || mkdir tools/configtool
     test -d tools/configtool/standalone        || mkdir tools/configtool/standalone
--- a/host/configure.in
+++ b/host/configure.in
@@ -132,23 +132,25 @@ dnl ])
 dnl --------------------------------------------------------------------
 
 dnl Add any other directories that are autoconfiscated and present
-if test -f ${srcdir}/tools/Utils/common/configure; then
-  ECOS_DIRS="${ECOS_DIRS} tools/Utils/common"
-  AC_OUTPUT_COMMANDS([
-	test -d tools 			     || mkdir tools
-	test -d tools/Utils 		     || mkdir tools/Utils
-	test -d tools/Utils/common 	     || mkdir tools/Utils/common
-  ])
-fi
 
-if test -f ${srcdir}/tools/ecostest/common/configure; then
-  ECOS_DIRS="${ECOS_DIRS} tools/ecostest/common"
-  AC_OUTPUT_COMMANDS([
-    test -d tools 			     || mkdir tools
-    test -d tools/ecostest 		     || mkdir tools/ecostest
-    test -d tools/ecostest/common 	     || mkdir tools/ecostest/common
-  ])
-fi
+dnl  ---- Delete the dnl column below to configure ser_filter on Linux ----
+dnl if test -f ${srcdir}/tools/Utils/common/configure; then
+dnl   ECOS_DIRS="${ECOS_DIRS} tools/Utils/common"
+dnl   AC_OUTPUT_COMMANDS([
+dnl 	    test -d tools 			     || mkdir tools
+dnl 	    test -d tools/Utils 		     || mkdir tools/Utils
+dnl 	    test -d tools/Utils/common 	     || mkdir tools/Utils/common
+dnl   ])
+dnl fi
+dnl 
+dnl if test -f ${srcdir}/tools/ecostest/common/configure; then
+dnl   ECOS_DIRS="${ECOS_DIRS} tools/ecostest/common"
+dnl   AC_OUTPUT_COMMANDS([
+dnl 	test -d tools 			     || mkdir tools
+dnl 	test -d tools/ecostest 		     || mkdir tools/ecostest
+dnl 	test -d tools/ecostest/common 	     || mkdir tools/ecostest/common
+dnl   ])
+dnl fi
 
 if test -d ${srcdir}/tools/configtool/standalone/common; then
   ECOS_DIRS="${ECOS_DIRS} tools/configtool/standalone/common"
--- a/host/tools/Utils/win32/CellEdit.cpp
+++ b/host/tools/Utils/win32/CellEdit.cpp
@@ -27,6 +27,8 @@
 
 #include "stdafx.h"
 #include "CellEdit.h"
+#include "cellview.h"
+#include "Configtool.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -51,6 +53,7 @@ BEGIN_MESSAGE_MAP(CCellEdit, CCell)
 	//{{AFX_MSG_MAP(CCellEdit)
 	ON_WM_CREATE()
 	ON_WM_CHAR()
+	ON_WM_KILLFOCUS()
 	//}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
@@ -72,6 +75,11 @@ int CCellEdit::OnCreate(LPCREATESTRUCT l
 	return 0;
 }
 
+void CCellEdit::OnKillFocus(CWnd*)
+{
+    CConfigTool::GetCellView()->CancelCellEdit();
+}
+
 void CCellEdit::OnEditCopy   ()
 {
  SendMessage(WM_COPY,0,0);
--- a/host/tools/Utils/win32/CellEdit.h
+++ b/host/tools/Utils/win32/CellEdit.h
@@ -71,6 +71,7 @@ protected:
 	//{{AFX_MSG(CCellEdit)
 	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 	afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
+    afx_msg void OnKillFocus(CWnd* pNewWnd);
 	//}}AFX_MSG
 
 	DECLARE_MESSAGE_MAP()
--- a/host/tools/Utils/win32/ComboEdit.cpp
+++ b/host/tools/Utils/win32/ComboEdit.cpp
@@ -27,6 +27,8 @@
 
 #include "stdafx.h"
 #include "ComboEdit.h"
+#include "cellview.h"
+#include "Configtool.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -51,6 +53,7 @@ CComboEdit::~CComboEdit()
 BEGIN_MESSAGE_MAP(CComboEdit, CCell)
 	//{{AFX_MSG_MAP(CComboEdit)
 	ON_WM_CREATE()
+	ON_WM_KILLFOCUS()
 	//}}AFX_MSG_MAP
 END_MESSAGE_MAP()
 
@@ -79,3 +82,9 @@ int CComboEdit::OnCreate(LPCREATESTRUCT 
 	
 	return 0;
 }
+
+void CComboEdit::OnKillFocus(CWnd*)
+{
+    CConfigTool::GetCellView()->CancelCellEdit();
+}
+
--- a/host/tools/Utils/win32/ComboEdit.h
+++ b/host/tools/Utils/win32/ComboEdit.h
@@ -62,6 +62,7 @@ protected:
 	CStringArray m_arValues;
   //{{AFX_MSG(CComboEdit)
 	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
+    afx_msg void OnKillFocus(CWnd* pNewWnd);
 	//}}AFX_MSG
 
 	DECLARE_MESSAGE_MAP()
--- a/host/tools/ecostest/ChangeLog
+++ b/host/tools/ecostest/ChangeLog
@@ -1,3 +1,9 @@
+2000-09-28  Jesper Skov  <jskov@redhat.com>
+
+	* common/eCosTestSerialFilter.cpp (CMD_TestBinary): Reset counter
+	for each test so the failure data is the same from two different
+	runs of the test.
+
 2000-09-15  Jesper Skov  <jskov@redhat.com>
 
 	* common/ser_filter.cpp (main): Don't require ResourceServer.
--- a/host/tools/ecostest/common/eCosTestSerialFilter.cpp
+++ b/host/tools/ecostest/common/eCosTestSerialFilter.cpp
@@ -736,8 +736,8 @@ CeCosTestSerialFilter::CMD_TestBinary(Ce
         fprintf(stderr, "Could not allocate %d byte buffer for data!\n", size);
         throw "data_in malloc failed";
     }
+    int count = 0;
     for (i = 0; i < size; i++) {
-        static int count = 0;
         // Output 255 chars, not 256 so that we aren't a multiple/factor of the
         // likely buffer sizes in the system, this can mask problems as I've
         // found to my cost!
--- a/packages/ChangeLog
+++ b/packages/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-20  Gary Thomas  <gthomas@redhat.com>
+
+	* ecos.db: Add FLASH drivers for PowerPC/MBX.
+
 2000-09-15  Jesper Skov  <jskov@redhat.com>
 
 	* ecos.db: Made PID use generic 16x5x driver.
--- a/packages/NEWS
+++ b/packages/NEWS
@@ -1,5 +1,6 @@
 * SH serial driver cleanup. SCIF driver added. SCI and SCIF drivers are
-  now separate packages.
+  now separate packages. SCIF driver uses full FIFO and can utilize
+  DMA for transmit operations.
 * Move logical ethernet "driver" into io/eth where the interface can be shared
   between multiple implementations, e.g. BSD TCP/IP and Red Boot's TCP/IP
   stacks.
--- a/packages/compat/posix/current/ChangeLog
+++ b/packages/compat/posix/current/ChangeLog
@@ -1,3 +1,36 @@
+2000-10-16  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/sigsetjmp.h (sigsetjmp): Various fixes to make portable
+	across all HALs (by avoiding CYGARC_JMP_BUF_SIZE) and remove warnings.
+	* src/signal.cxx (siglongjmp): Likewise
+
+2000-10-12  Nick Garnett  <nickg@cygnus.co.uk>
+
+	* include/sigsetjmp.h: Added this header to define
+	sigjmp_buf,sigsetjmp() and siglongjmp().
+
+	* cdl/posix.cdl:
+	Added support for providing sigsetjmp implementation and header.
+	Added sigsetjmp test.
+
+	* src/signal.cxx: Added siglongjmp().
+
+	* tests/sigsetjmp.c: Added this test for sigsetjmp(), siglongjmp()
+	functionality. This is also a test for longjmping out of signal
+	handlers.
+
+	* tests/signal2.c:
+	Ifdeffed around cause_* functions to avoid compiler warnings when
+	they are not needed.
+	Changed CYG_TEST_NA() calls to CYG_TEST_INFO() and changed
+	CYG_TEST_FINISH() to CYG_TEST_PASS_FINISH(). With the _NA's there,
+	the first unsupported exception just terminates the program, and
+	does not give any subsequent supported ones a chance to run.
+
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* tests/timer1.c (main): Fix exit check.
+
 2000-10-11  Nick Garnett  <nickg@cygnus.co.uk>
 
 	* src/pthread.cxx: Fixed cyg_posix_pthread_release_thread() to
--- a/packages/compat/posix/current/cdl/posix.cdl
+++ b/packages/compat/posix/current/cdl/posix.cdl
@@ -56,12 +56,15 @@ cdl_package CYGPKG_POSIX {
     implements     CYGINT_ISO_SIGNAL_NUMBERS
     implements     CYGINT_ISO_SIGNAL_IMPL
     implements     CYGINT_ISO_POSIX_LIMITS
+    implements     CYGINT_ISO_SIGSETJMP
     requires       { CYGBLD_ISO_SIGNAL_NUMBERS_HEADER == \
                          "<cyg/posix/signal.h>" }
     requires       { CYGBLD_ISO_SIGNAL_IMPL_HEADER == \
                          "<cyg/posix/signal.h>" }
     requires       { CYGBLD_ISO_POSIX_LIMITS_HEADER == \
                          "<cyg/posix/limits.h>" }
+    requires       { CYGBLD_ISO_SIGSETJMP_HEADER == \
+                         "<cyg/posix/sigsetjmp.h>" }
     
     compile        pthread.cxx mqueue.cxx sem.cxx time.cxx signal.cxx \
                    sched.cxx except.cxx misc.cxx
@@ -231,7 +234,7 @@ cdl_package CYGPKG_POSIX {
             display "POSIX tests"
             flavor  data
             no_define
-            calculated { "tests/pthread1 tests/pthread2 tests/pthread3 tests/mutex3 tests/signal1 tests/timer1 tests/tm_basic tests/signal2 tests/mqueue1 tests/mqueue2" }
+            calculated { "tests/pthread1 tests/pthread2 tests/pthread3 tests/mutex3 tests/signal1 tests/timer1 tests/tm_basic tests/signal2 tests/mqueue1 tests/mqueue2 tests/sigsetjmp" }
             description   "
                 This option specifies the set of tests for the POSIX package."
         }
new file mode 100644
--- /dev/null
+++ b/packages/compat/posix/current/include/sigsetjmp.h
@@ -0,0 +1,86 @@
+#ifndef CYGONCE_SIGSETJMP_H
+#define CYGONCE_SIGSETJMP_H
+//=============================================================================
+//
+//      sigsetjmp.h
+//
+//      POSIX sigsetjmp header
+//
+//=============================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//=============================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     nickg, jlarmour
+// Contributors:  
+// Date:          2000-03-17
+// Purpose:       POSIX sigsetjmp header
+// Description:   This header contains all the definitions needed to support
+//                the POSIX sigsetjmp/siglongjmp API under eCos.
+//              
+// Usage:         This file must be included indirectly via
+//                the C library setjmp.h header.
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include <pkgconf/kernel.h>
+#include <pkgconf/posix.h>
+
+#include <signal.h>
+
+//=============================================================================
+// sigjmp_buf structure
+// The API requires this to be an array type, but this array actually
+// contains three fields:
+// 0..sizeof(hal_jmp_buf)-1               HAL jump buffer
+// sizeof(hal_jmp_buf)                    savemask value (an int)
+// sizeof(hal_jmp_buf)+sizeof(int)...     sigset_t containing saved mask
+
+typedef cyg_uint8 sigjmp_buf[sizeof(hal_jmp_buf)+sizeof(int)+(sizeof(sigset_t))];
+
+//=============================================================================
+// sigsetjmp() macro
+
+#define sigsetjmp( _env_, _savemask_ )                                        \
+(                                                                             \
+ (*(int *)&((_env_)[sizeof(hal_jmp_buf)])=(_savemask_)),                      \
+ ((_savemask_)?pthread_sigmask(SIG_BLOCK,NULL,                                \
+                                  (sigset_t *)&(_env_)[sizeof(hal_jmp_buf)+   \
+                                                      sizeof(int)]):0),       \
+ hal_setjmp(*(hal_jmp_buf *)&_env_[0])                                        \
+)
+
+//=============================================================================
+// siglongjmp function
+
+__externC void siglongjmp( sigjmp_buf env, int val );
+
+//-----------------------------------------------------------------------------
+#endif // ifndef CYGONCE_SIGSETJMP_H
+// End of sigsetjmp.h
--- a/packages/compat/posix/current/src/signal.cxx
+++ b/packages/compat/posix/current/src/signal.cxx
@@ -55,6 +55,7 @@
 #include "pprivate.h"                   // POSIX private header
 
 #include <signal.h>                     // our header
+#include <setjmp.h>
 
 #include <cyg/kernel/clock.hxx>
 
@@ -1046,6 +1047,34 @@ externC int raise(int sig)
     return kill( 0, sig );
 }
 
+// -------------------------------------------------------------------------
+// siglongjmp()
+// Restores signal mask and longjumps.
+
+__externC void siglongjmp( sigjmp_buf env, int val )
+{
+    CYG_REPORT_FUNCNAME( "siglongjmp" );
+    CYG_REPORT_FUNCARG2( "&env=%08x, val=%d", &env, val );
+
+    // ISO C says that if we are passed val == 0, then we change it to 1
+    if( val == 0 )
+        val = 1;
+
+    if( *(int *)&env[sizeof(hal_jmp_buf)] )
+        pthread_sigmask( SIG_SETMASK, (sigset_t *)&(env)[sizeof(hal_jmp_buf)+sizeof(int)], NULL );
+    
+    HAL_REORDER_BARRIER(); // prevent any chance of optimisation re-ordering
+    hal_longjmp( (hal_jmp_buf)env, val );
+    HAL_REORDER_BARRIER(); // prevent any chance of optimisation re-ordering
+
+#ifdef CYGDBG_USE_ASSERTS
+    CYG_ASSERT( 0, "siglongjmp should not have reached this point!" );
+#else
+    for (;;)
+        CYG_EMPTY_STATEMENT;
+#endif
+    
+}
 
 // -------------------------------------------------------------------------
 // EOF signal.cxx
--- a/packages/compat/posix/current/tests/signal2.c
+++ b/packages/compat/posix/current/tests/signal2.c
@@ -71,6 +71,8 @@ static jmp_buf jbuf;
 
 //--------------------------------------------------------------------------
 
+#ifdef CYGNUM_HAL_EXCEPTION_DATA_UNALIGNED_ACCESS
+
 static void
 cause_unaligned_access(void)
 {
@@ -81,8 +83,12 @@ cause_unaligned_access(void)
 
 } // cause_unaligned_access()
 
+#endif
+
 //--------------------------------------------------------------------------
 
+#ifdef CYGNUM_HAL_EXCEPTION_DATA_ACCESS
+
 static void
 cause_illegal_access(void)
 {
@@ -97,8 +103,12 @@ cause_illegal_access(void)
 
 } // cause_unaligned_access()
 
+#endif
+
 //--------------------------------------------------------------------------
 
+#ifdef CYGNUM_HAL_EXCEPTION_FPU_DIV_BY_ZERO
+
 // num must always be 0 - do it this way in case the optimizer tries to
 // get smart
 
@@ -117,6 +127,8 @@ cause_fpe(int num)
                                         // (integer division by zero).
 } // cause_fpe()
 
+#endif
+
 //--------------------------------------------------------------------------
 // Signal handler functions
 
@@ -214,7 +226,7 @@ int main(int argc, char **argv)
 
 #else
 
-    CYG_TEST_NA("Test 1 - provoke unaligned access - not supported");
+    CYG_TEST_INFO("Test 1 - provoke unaligned access - not supported");
 
 #endif    
 
@@ -231,7 +243,7 @@ int main(int argc, char **argv)
 
 #else
 
-    CYG_TEST_NA("Test 1 - provoke illegal access - not supported");
+    CYG_TEST_INFO("Test 1 - provoke illegal access - not supported");
 
 #endif    
     
@@ -248,11 +260,11 @@ int main(int argc, char **argv)
 
 #else
 
-    CYG_TEST_NA("Test 3 - provoke FP error - not supported");    
+    CYG_TEST_INFO("Test 3 - provoke FP error - not supported");    
     
 #endif    
-    
-    CYG_TEST_FINISH( "signal2" );
+
+    CYG_TEST_PASS_FINISH( "signal2" );
 }
 
 #endif // ifndef NA_MSG
new file mode 100644
--- /dev/null
+++ b/packages/compat/posix/current/tests/sigsetjmp.c
@@ -0,0 +1,354 @@
+//==========================================================================
+//
+//        sigsetjmp.c
+//
+//        POSIX sigsetjmp test
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):     nickg
+// Contributors:  nickg
+// Date:          2000-04-10
+// Description:   Tests POSIX sigsetjmp functionality.
+//
+//####DESCRIPTIONEND####
+//==========================================================================
+
+#include <sys/types.h>
+#include <pthread.h>
+#include <signal.h>
+#include <semaphore.h>
+#include <time.h>
+#include <setjmp.h>
+
+#include <cyg/infra/testcase.h>
+
+//--------------------------------------------------------------------------
+// Thread stack.
+
+char thread1_stack[PTHREAD_STACK_MIN*2];
+char thread2_stack[PTHREAD_STACK_MIN*2];
+
+//--------------------------------------------------------------------------
+// Local variables
+
+// Sync semaphore
+sem_t sem;
+
+// Thread IDs
+pthread_t thread1;
+pthread_t thread2;
+
+timer_t timer1;
+timer_t timer2;
+
+volatile int sigusr1_called = 0;
+volatile int sigusr2_called = 0;
+
+sigjmp_buf jmpbuf1;
+sigjmp_buf jmpbuf2;
+
+//--------------------------------------------------------------------------
+// Signal handler functions
+
+static void sigusr1( int signo, siginfo_t *info, void *context )
+{
+    CYG_TEST_INFO( "sigusr1() handler called" );
+    CYG_TEST_CHECK( signo == SIGUSR1, "Signal not SIGUSR1");
+    CYG_TEST_CHECK( signo == info->si_signo, "Bad signal number in siginfo" );
+    CYG_TEST_CHECK( info->si_code == SI_TIMER, "Siginfo code not SI_TIMER" );
+    CYG_TEST_CHECK( info->si_value.sival_int == 0xABCDEF01, "Siginfo value wrong");
+    CYG_TEST_CHECK( pthread_equal(pthread_self(), thread1), "Not called in thread1");
+
+    sigusr1_called++;
+
+    CYG_TEST_INFO( "sigusr1() handler calling siglongjmp()" );
+    
+    siglongjmp( jmpbuf1, sigusr1_called );
+}
+
+static void sigusr2( int signo, siginfo_t *info, void *context )
+{
+    CYG_TEST_INFO( "sigusr2() handler called" );
+    CYG_TEST_CHECK( signo == SIGUSR2, "Signal not SIGUSR2");
+    CYG_TEST_CHECK( signo == info->si_signo, "Bad signal number in siginfo" );
+    CYG_TEST_CHECK( info->si_code == SI_TIMER, "Siginfo code not SI_TIMER" );
+    CYG_TEST_CHECK( info->si_value.sival_int == 0xABCDEF02, "Siginfo value wrong");
+    CYG_TEST_CHECK( pthread_equal(pthread_self(), thread2), "Not called in thread2");
+
+    sigusr2_called++;
+
+    CYG_TEST_INFO( "sigusr2() handler calling siglongjmp()" );
+    siglongjmp( jmpbuf2, sigusr2_called );    
+}
+
+//--------------------------------------------------------------------------
+
+void *pthread_entry1( void *arg)
+{
+    sigset_t mask;
+
+    
+    CYG_TEST_INFO( "Thread 1 running" );
+
+    // Make a full set
+    sigfillset( &mask );
+
+    // remove USR1 signal
+    sigdelset( &mask, SIGUSR1 );
+
+    // Set signal mask
+    pthread_sigmask( SIG_SETMASK, &mask, NULL );
+    
+    // Get main thread going again
+    sem_post( &sem );
+
+    do
+    {
+        sigset_t curmask;
+
+        CYG_TEST_INFO( "Thread1: calling sigsetjmp()");                
+        if( sigsetjmp( jmpbuf1, 1 ) != 0 )
+            CYG_TEST_INFO( "Thread1: sigsetjmp() returned non-zero");
+        
+        pthread_sigmask( SIG_SETMASK, NULL, &curmask );
+        CYG_TEST_CHECK( curmask == mask, "Thread1: Signal masks not equal" );
+
+        if ( sigusr1_called >= 1 )
+            break;
+        
+        CYG_TEST_INFO( "Thread1: calling pause()");        
+        pause();
+
+        CYG_TEST_INFO( "Thread2: pause() returned");        
+    } while(1);
+
+    CYG_TEST_INFO( "Thread1: calling pthread_exit()");    
+    pthread_exit( arg );
+}
+
+//--------------------------------------------------------------------------
+
+void *pthread_entry2( void *arg)
+{
+    sigset_t mask;
+    
+    CYG_TEST_INFO( "Thread 2 running" );
+
+    // Make a full set
+    sigfillset( &mask );
+
+    // remove USR2 signal
+    sigdelset( &mask, SIGUSR2 );
+
+    // Set signal mask
+    pthread_sigmask( SIG_SETMASK, &mask, NULL );
+    
+    // Get main thread going again
+    sem_post( &sem );
+
+    do 
+    {
+        sigset_t curmask;
+
+        CYG_TEST_INFO( "Thread2: calling sigsetjmp()");
+        if( sigsetjmp( jmpbuf2, 1 ) != 0 )
+            CYG_TEST_INFO( "Thread2: sigsetjmp() returned non-zero");
+        
+        pthread_sigmask( SIG_SETMASK, NULL, &curmask );
+        CYG_TEST_CHECK( curmask == mask, "Thread2: Signal masks not equal" );
+
+        if ( sigusr2_called >= 6 )
+            break;
+        
+        CYG_TEST_INFO( "Thread2: calling pause()");        
+        pause();
+
+        CYG_TEST_INFO( "Thread2: pause() returned");
+    } while(1);
+
+    CYG_TEST_INFO( "Thread2: calling pthread_exit()");    
+    pthread_exit( arg );
+}
+
+//--------------------------------------------------------------------------
+
+int main(int argc, char **argv)
+{
+    int ret;
+    sigset_t mask;
+    pthread_attr_t attr;
+    void *retval;
+    
+    CYG_TEST_INIT();
+
+    // Make a full signal set
+    sigfillset( &mask );
+
+    
+    // Install signal handlers
+    {
+        struct sigaction sa;
+
+        sa.sa_sigaction = sigusr1;
+        sa.sa_mask = mask;
+        sa.sa_flags = SA_SIGINFO;
+
+        ret = sigaction( SIGUSR1, &sa, NULL );
+
+        CYG_TEST_CHECK( ret == 0 , "sigaction returned error");
+    }
+    {
+        struct sigaction sa;
+
+        sa.sa_sigaction = sigusr2;
+        sa.sa_mask = mask;
+        sa.sa_flags = SA_SIGINFO;
+
+        ret = sigaction( SIGUSR2, &sa, NULL );
+
+        CYG_TEST_CHECK( ret == 0 , "sigaction returned error");
+    }
+
+
+    // Create the timers
+
+    {
+        struct sigevent sev;
+        struct itimerspec value;
+        
+        sev.sigev_notify                = SIGEV_SIGNAL;
+        sev.sigev_signo                 = SIGUSR1;
+        sev.sigev_value.sival_int       = 0xABCDEF01;
+
+        value.it_value.tv_sec           = 1;
+        value.it_value.tv_nsec          = 0;
+        value.it_interval.tv_sec        = 0;
+        value.it_interval.tv_nsec       = 0;
+        
+        ret = timer_create( CLOCK_REALTIME, &sev, &timer1 );
+
+        CYG_TEST_CHECK( ret == 0 , "timer_create returned error");
+
+        ret = timer_settime( timer1, 0, &value, NULL );
+
+        CYG_TEST_CHECK( ret == 0 , "timer_settime returned error");
+    }
+
+    {
+        struct sigevent sev;
+        struct itimerspec value;
+        
+        sev.sigev_notify                = SIGEV_SIGNAL;
+        sev.sigev_signo                 = SIGUSR2;
+        sev.sigev_value.sival_int       = 0xABCDEF02;
+
+        value.it_value.tv_sec           = 0;
+        value.it_value.tv_nsec          = 500000000;
+        value.it_interval.tv_sec        = 0;
+        value.it_interval.tv_nsec       = 250000000;
+        
+        ret = timer_create( CLOCK_REALTIME, &sev, &timer2 );
+
+        CYG_TEST_CHECK( ret == 0 , "timer_create returned error");
+
+        ret = timer_settime( timer2, 0, &value, NULL );
+
+        CYG_TEST_CHECK( ret == 0 , "timer_settime returned error");
+    }
+
+    
+    // Mask all signals
+    pthread_sigmask( SIG_SETMASK, &mask, NULL );
+    
+    sem_init( &sem, 0, 0 );
+    
+    // Create test threads
+
+    {
+        pthread_attr_init( &attr );
+
+        pthread_attr_setstackaddr( &attr, (void *)&thread1_stack[sizeof(thread1_stack)] );
+        pthread_attr_setstacksize( &attr, sizeof(thread1_stack) );
+
+        pthread_create( &thread1,
+                        &attr,
+                        pthread_entry1,
+                        (void *)0x12345671);
+    }
+
+    {
+        pthread_attr_init( &attr );
+
+        pthread_attr_setstackaddr( &attr, (void *)&thread2_stack[sizeof(thread2_stack)] );
+        pthread_attr_setstacksize( &attr, sizeof(thread2_stack) );
+
+        pthread_create( &thread2,
+                        &attr,
+                        pthread_entry2,
+                        (void *)0x12345672);
+    }
+    
+    // Wait for other thread to get started
+    CYG_TEST_INFO( "Main: calling sem_wait()");
+    sem_wait( &sem );
+    CYG_TEST_INFO( "Main: calling sem_wait() again");    
+    sem_wait( &sem );
+
+    // Now join with thread1
+    CYG_TEST_INFO( "Main: calling pthread_join(thread1)");
+    pthread_join( thread1, &retval );
+
+    CYG_TEST_CHECK( retval == (void *)0x12345671, "Thread 1 retval wrong");
+    
+    // And thread 2
+    CYG_TEST_INFO( "Main: calling pthread_join(thread2)");
+    pthread_join( thread2, &retval );
+
+    // now delete the timers
+    CYG_TEST_INFO( "Main: calling timer_delete(timer1)");    
+    ret = timer_delete( timer1 );
+
+    CYG_TEST_CHECK( ret == 0 , "timer_delete(timer1) returned error");
+
+    CYG_TEST_INFO( "Main: calling timer_delete(timer2)");    
+    ret = timer_delete( timer2 );
+
+    CYG_TEST_CHECK( ret == 0 , "timer_delete(timer2) returned error");
+
+    
+    CYG_TEST_CHECK( retval == (void *)0x12345672, "Thread 2 retval wrong");
+    
+    CYG_TEST_CHECK( sigusr1_called == 1, "SIGUSR1 signal handler not called once" );
+    CYG_TEST_CHECK( sigusr2_called == 6, "SIGUSR2 signal handler not called six times" );
+
+    CYG_TEST_PASS_FINISH( "sigsetjmp" );
+}
+
+//--------------------------------------------------------------------------
+// end of sigsetjmp.c
--- a/packages/compat/posix/current/tests/timer1.c
+++ b/packages/compat/posix/current/tests/timer1.c
@@ -301,7 +301,7 @@ int main(int argc, char **argv)
     CYG_TEST_INFO( "Main: calling timer_delete(timer2)");    
     ret = timer_delete( timer2 );
 
-    CYG_TEST_CHECK( ret == 0 , "timer_delete(timer2) returned error");    
+    CYG_TEST_CHECK( ret == 0 , "timer_delete(timer2) returned error");
 
     
     CYG_TEST_CHECK( retval == (void *)0x12345672, "Thread 2 retval wrong");
@@ -309,12 +309,7 @@ int main(int argc, char **argv)
     CYG_TEST_CHECK( sigusr1_called == 1, "SIGUSR1 signal handler not called once" );
     CYG_TEST_CHECK( sigusr2_called == 6, "SIGUSR2 signal handler not called six times" );
 
-    // check retval
-    
-    if( (long)retval == 0 )
-        CYG_TEST_PASS_FINISH( "timer1" );
-    else
-        CYG_TEST_FAIL_FINISH( "timer1" );
+    CYG_TEST_PASS_FINISH( "timer1" );
 }
 
 //--------------------------------------------------------------------------
--- a/packages/cygmon/current/ChangeLog
+++ b/packages/cygmon/current/ChangeLog
@@ -1,3 +1,12 @@
+2000-10-17  Drew Moseley  <dmoseley@redhat.com>
+
+	* misc/utils.c: Fix a typo.  Also make sure we are ignoring the
+	'+' characters from gdb.
+
+	* misc/monitor_cmd.c: Add a few cache flushes.
+
+	* misc/monitor.h: Use the debug port for xvprintf.
+
 2000-08-14  Drew Moseley  <dmoseley@redhat.com>
 
 	* misc/ecos_bsp.c: Added some include files to fix some build
--- a/packages/cygmon/current/misc/monitor.h
+++ b/packages/cygmon/current/misc/monitor.h
@@ -64,7 +64,7 @@
 #ifdef HAVE_BSP
 #define xprintf    bsp_dprintf
 #define xsprintf   bsp_sprintf
-#define xvprintf   bsp_vprintf
+#define xvprintf   bsp_dvprintf
 #define xputchar   bsp_debug_putc
 #define xgetchar   bsp_debug_getc
 #define xungetchar bsp_debug_ungetc
--- a/packages/cygmon/current/misc/monitor_cmd.c
+++ b/packages/cygmon/current/misc/monitor_cmd.c
@@ -806,6 +806,10 @@ poke (void)
 	    {
 	      xprintf ("Memory write failed\n");
 	    }
+#ifdef HAVE_BSP
+	  bsp_flush_dcache((void *)addr.addr, size);
+	  bsp_flush_icache((void *)addr.addr, size);
+#endif
 	}
       else
 	{
@@ -1136,6 +1140,10 @@ load_srec(srec_input_func_t inp_func)
 
   MAKE_STD_ADDR (address, &memaddr);
   write_memory (&memaddr, 1, dcount, data_buf);
+#ifdef HAVE_BSP
+  bsp_flush_dcache((void *)memaddr.addr, dcount);
+  bsp_flush_icache((void *)memaddr.addr, dcount);
+#endif
 
   return 0;
 }
@@ -2095,6 +2103,10 @@ Copies 0x300 bytes of memory from 0x1000
           xprintf ("Memory write failed\n");
           break;
         }
+#ifdef HAVE_BSP
+      bsp_flush_dcache((void *)dst.addr, msize);
+      bsp_flush_icache((void *)dst.addr, msize);
+#endif
       ADD_OFFSET (&src, &src, msize);
       ADD_OFFSET (&dst, &dst, msize);
       size -= msize;
@@ -2458,7 +2470,7 @@ int
 monitor_loop (void)
 {
   int state = 1, return_value = 0;
-  
+
   while (state == 1)
     {
       /* Get a line of input, putting it in the input buffer */
@@ -2466,7 +2478,12 @@ monitor_loop (void)
       xprintf ("\n");
 
       if (switch_to_stub_flag)
-	return transfer_to_stub ();
+        {
+#ifndef HAVE_BSP
+	  switch_to_stub_flag = 0;
+#endif
+          return transfer_to_stub ();
+        }
 
       /* Separate off the command from any other stuff on the line */
       
--- a/packages/cygmon/current/misc/utils.c
+++ b/packages/cygmon/current/misc/utils.c
@@ -69,7 +69,14 @@ volatile int switch_to_stub_flag = 0;
 int
 input_char (void)
 {
-  int i = xgetchar ();
+  int i;
+
+  /* We have to drop the '+' characters on the floor
+     because gdb will send a '+' as the first character
+     when connecting to the target. If we waste time
+     echoing that, slow hw might get a uart overrun. */
+  while ((i = xgetchar ()) == '+');
+
   if (i == '$')
     {
       xungetchar ('$');
@@ -264,7 +271,7 @@ int2str (target_register_t number, int b
 
 #if HAVE_DOUBLE_REGS
 static char *
-doudble2str(double d)
+double2str(double d)
 {
   switch(sizeof(double))
     {
new file mode 100644
--- /dev/null
+++ b/packages/devs/flash/powerpc/mbx/current/ChangeLog
@@ -0,0 +1,34 @@
+2000-10-20  Gary Thomas  <gthomas@redhat.com>
+
+	* src/mbx_flash.c: 
+	* src/flash_query.c: 
+	* src/flash_program_buf.c: 
+	* src/flash_erase_block.c: 
+	* src/flash.h: 
+	* cdl/flash_mbx.cdl: New package/file(s).
+
+//===========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/devs/flash/powerpc/mbx/current/cdl/flash_mbx.cdl
@@ -0,0 +1,84 @@
+# ====================================================================
+#
+#      flash_mbx.cdl
+#
+#      FLASH memory - Hardware support on Motorola PowerPC/860
+#
+# ====================================================================
+#####COPYRIGHTBEGIN####
+#                                                                          
+# -------------------------------------------                              
+# The contents of this file are subject to the Red Hat eCos Public License 
+# Version 1.1 (the "License"); you may not use this file except in         
+# compliance with the License.  You may obtain a copy of the License at    
+# http://www.redhat.com/                                                   
+#                                                                          
+# Software distributed under the License is distributed on an "AS IS"      
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+# License for the specific language governing rights and limitations under 
+# the License.                                                             
+#                                                                          
+# The Original Code is eCos - Embedded Configurable Operating System,      
+# released September 30, 1998.                                             
+#                                                                          
+# The Initial Developer of the Original Code is Red Hat.                   
+# Portions created by Red Hat are                                          
+# Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+# All Rights Reserved.                                                     
+# -------------------------------------------                              
+#                                                                          
+#####COPYRIGHTEND####
+# ====================================================================
+######DESCRIPTIONBEGIN####
+#
+# Author(s):      gthomas
+# Original data:  gthomas
+# Contributors:
+# Date:           2000-07-26
+#
+#####DESCRIPTIONEND####
+#
+# ====================================================================
+
+cdl_package CYGPKG_DEVS_FLASH_MBX {
+    display       "Motorola PowerPC/860 FLASH memory support"
+
+    parent        CYGPKG_IO_FLASH
+    active_if	  CYGPKG_IO_FLASH
+    requires	  CYGPKG_HAL_POWERPC_MBX
+
+    implements    CYGHWR_IO_FLASH_DEVICE
+
+    include_dir   .
+    include_files ; # none _exported_ whatsoever
+    description   "FLASH memory device support for Motorola PowerPC/860 MBX boards"
+    compile       mbx_flash.c
+
+    make -priority 1 {
+        flash_query.o: $(REPOSITORY)/$(PACKAGE)/src/flash_query.c
+        $(CC) -S $(INCLUDE_PATH) $(CFLAGS) -g0  -msoft-float -mcpu=860 -fno-function-sections $(REPOSITORY)/$(PACKAGE)/src/flash_query.c
+        echo " .globl flash_query_end" >>flash_query.s
+        echo "flash_query_end:" >>flash_query.s
+        $(CC) -c -o flash_query.o flash_query.s
+        $(AR) rcs $(PREFIX)/lib/libtarget.a flash_query.o
+    }
+
+    make -priority 1 {
+        flash_erase_block.o: $(REPOSITORY)/$(PACKAGE)/src/flash_erase_block.c
+        $(CC) -S $(INCLUDE_PATH) $(CFLAGS) -g0  -msoft-float -mcpu=860 -fno-function-sections $(REPOSITORY)/$(PACKAGE)/src/flash_erase_block.c
+        echo " .globl flash_erase_block_end" >>flash_erase_block.s
+        echo "flash_erase_block_end:" >>flash_erase_block.s
+        $(CC) -c -o flash_erase_block.o flash_erase_block.s
+        $(AR) rcs $(PREFIX)/lib/libtarget.a flash_erase_block.o
+    }
+
+    make -priority 1 {
+        flash_program_buf.o: $(REPOSITORY)/$(PACKAGE)/src/flash_program_buf.c
+        $(CC) -S $(INCLUDE_PATH) $(CFLAGS) -g0  -msoft-float -mcpu=860 -fno-function-sections $(REPOSITORY)/$(PACKAGE)/src/flash_program_buf.c
+        echo " .globl flash_program_buf_end" >>flash_program_buf.s
+        echo "flash_program_buf_end:" >>flash_program_buf.s
+        $(CC) -c -o flash_program_buf.o flash_program_buf.s
+        $(AR) rcs $(PREFIX)/lib/libtarget.a flash_program_buf.o
+    }
+}
+
new file mode 100644
--- /dev/null
+++ b/packages/devs/flash/powerpc/mbx/current/src/flash.h
@@ -0,0 +1,63 @@
+//==========================================================================
+//
+//      flash.h
+//
+//      Flash programming - device constants, etc.
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-10-20
+// Purpose:      
+// Description:  
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#ifndef _FLASH_HWR_H_
+#define _FLASH_HWR_H_
+
+#define FLASH_Read_ID      0x90
+#define FLASH_Reset        0xFF
+#define FLASH_Program      0xA0
+#define FLASH_Block_Erase  0x30
+
+#define FLASH_Busy         0x40 // "Toggle" bit
+#define FLASH_Err          0x20
+
+#define FLASH_Setup_Addr1  0x555
+#define FLASH_Setup_Addr2  0x2AA
+#define FLASH_Setup_Code1  0xAA
+#define FLASH_Setup_Code2  0x55
+#define FLASH_Setup_Erase  0x80
+
+#define FLASH_BLOCK_SIZE   0x10000
+
+#endif  // _FLASH_HWR_H_
new file mode 100644
--- /dev/null
+++ b/packages/devs/flash/powerpc/mbx/current/src/flash_erase_block.c
@@ -0,0 +1,104 @@
+//==========================================================================
+//
+//      flash_erase_block.c
+//
+//      Flash programming
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-07-14
+// Purpose:      
+// Description:  
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include "flash.h"
+
+#include <pkgconf/hal.h>
+#include <cyg/hal/hal_arch.h>
+#include <cyg/hal/hal_cache.h>
+
+//
+// CAUTION!  This code must be copied to RAM before execution.  Therefore,
+// it must not contain any code which might be position dependent!
+//
+
+int flash_erase_block(volatile unsigned char *block)
+{
+    volatile unsigned char *ROM;
+    int timeout = 50000;
+    int cache_on;
+    int len, block_size;
+    int erase_state, new_state;
+
+    HAL_DCACHE_IS_ENABLED(cache_on);
+    if (cache_on) {
+        HAL_DCACHE_SYNC();
+        HAL_DCACHE_DISABLE();
+    }
+
+    ROM = (volatile unsigned long *)((unsigned long)block & 0xFF800000);
+
+    // Erase block - six step sequence
+    ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1;
+    ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2;
+    ROM[FLASH_Setup_Addr1] = FLASH_Setup_Erase;
+    ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1;
+    ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2;
+    *block = FLASH_Block_Erase;
+    for (timeout = 50;  timeout--;  timeout > 0) ;
+    erase_state = *block & FLASH_Busy;
+    timeout = 5000000;
+    while (true) {
+        new_state = *block;
+        if ((new_state & FLASH_Busy) == erase_state) break;  // "toggle" stopped
+        erase_state = new_state & FLASH_Busy;
+        if (new_state & FLASH_Err) break;
+        if (--timeout == 0) break;
+    }
+
+    // Restore ROM to "normal" mode
+    ROM[0] = FLASH_Reset;
+
+    len = FLASH_BLOCK_SIZE;
+    while (len > 0) {
+        if (*block++ != 0xFF) break;
+        len -= sizeof(*block);
+    }
+    if (len == 0) new_state = 0;
+
+    if (cache_on) {
+        HAL_DCACHE_ENABLE();
+    }
+
+    return new_state;
+}
new file mode 100644
--- /dev/null
+++ b/packages/devs/flash/powerpc/mbx/current/src/flash_program_buf.c
@@ -0,0 +1,103 @@
+//==========================================================================
+//
+//      flash_program_buf.c
+//
+//      Flash programming
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-07-14
+// Purpose:      
+// Description:  
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include "flash.h"
+
+#include <pkgconf/hal.h>
+#include <cyg/hal/hal_arch.h>
+#include <cyg/hal/hal_cache.h>
+
+//
+// CAUTION!  This code must be copied to RAM before execution.  Therefore,
+// it must not contain any code which might be position dependent!
+//
+
+int
+flash_program_buf(volatile unsigned char *addr, unsigned char *data, int len)
+{
+    volatile unsigned char *ROM;
+    int timeout = 50000;
+    int cache_on;
+    int erase_state, new_state;
+
+    HAL_DCACHE_IS_ENABLED(cache_on);
+    if (cache_on) {
+        HAL_DCACHE_SYNC();
+        HAL_DCACHE_DISABLE();
+    }
+
+    ROM = (volatile unsigned long *)((unsigned long)addr & 0xFF800000);
+
+    while (len > 0) {
+        // Program data [byte] - 4 step sequence
+        ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1;
+        ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2;
+        ROM[FLASH_Setup_Addr1] = FLASH_Program;
+        *addr = *data;
+        for (timeout = 50;  timeout--;  timeout > 0) ;
+        erase_state = *addr & FLASH_Busy;
+        while (true) {
+            new_state = *addr;
+            if ((new_state & FLASH_Busy) == erase_state) break;  // "toggle" stopped
+            erase_state = new_state & FLASH_Busy;
+            if (new_state & FLASH_Err) break;
+            if (--timeout == 0) break;
+        }
+        ROM[0] = FLASH_Reset;            
+        if (*addr++ != *data++) {
+            new_state = 0xFF;
+            break;
+        }
+        len -= sizeof(*data);
+    }
+    if (len == 0) new_state = 0;  // Success
+
+    // Restore ROM to "normal" mode
+ bad:
+    ROM[0] = FLASH_Reset;            
+
+    if (cache_on) {
+        HAL_DCACHE_ENABLE();
+    }
+    return new_state;
+}
new file mode 100644
--- /dev/null
+++ b/packages/devs/flash/powerpc/mbx/current/src/flash_query.c
@@ -0,0 +1,87 @@
+//==========================================================================
+//
+//      flash_query.c
+//
+//      Flash programming - query device
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-10-20
+// Purpose:      
+// Description:  
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include "flash.h"
+
+#include <pkgconf/hal.h>
+#include <cyg/hal/hal_arch.h>
+#include <cyg/hal/hal_cache.h>
+#include CYGHWR_MEMORY_LAYOUT_H
+
+//
+// CAUTION!  This code must be copied to RAM before execution.  Therefore,
+// it must not contain any code which might be position dependent!
+//
+
+int
+flash_query(unsigned char *data)
+{
+    volatile unsigned char *ROM;
+    int cnt;
+    int cache_on;
+
+    HAL_DCACHE_IS_ENABLED(cache_on);
+    if (cache_on) {
+        HAL_DCACHE_SYNC();
+        HAL_DCACHE_DISABLE();
+    }
+
+    ROM = (volatile unsigned char *)0xFE000000;
+
+    ROM[FLASH_Setup_Addr1] = FLASH_Setup_Code1;
+    ROM[FLASH_Setup_Addr2] = FLASH_Setup_Code2;
+    ROM[FLASH_Setup_Addr1] = FLASH_Read_ID;
+
+    // Manufacturers' code
+    *data++ = ROM[0x00];
+    // Part number
+    *data++ = ROM[0x01];
+
+    ROM[0] = FLASH_Reset;
+
+    if (cache_on) {
+        HAL_DCACHE_ENABLE();
+    }
+
+    return 0;
+}
new file mode 100644
--- /dev/null
+++ b/packages/devs/flash/powerpc/mbx/current/src/mbx_flash.c
@@ -0,0 +1,112 @@
+//==========================================================================
+//
+//      mbx_flash.c
+//
+//      Flash programming
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-10-20
+// Purpose:      
+// Description:  
+//              
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/hal/hal_arch.h>
+#include <cyg/hal/hal_cache.h>
+
+#define  _FLASH_PRIVATE_
+#include <cyg/io/flash.h>
+
+#include "flash.h"
+
+int
+flash_hwr_init(void)
+{
+    int region_size = 0x10000;
+    int num_regions = 8;
+    extern char flash_query, flash_query_end;
+    typedef int code_fun(unsigned char *);
+    code_fun *_flash_query;
+    int code_len, stat;
+    unsigned char info[4];
+
+    // Copy 'program' code to RAM for execution
+    code_len = (unsigned long)&flash_query_end - (unsigned long)&flash_query;
+    _flash_query = (code_fun *)flash_info.work_space;
+    memcpy(_flash_query, &flash_query, code_len);
+    HAL_DCACHE_SYNC();  // Should guarantee this code will run
+
+    stat = (*_flash_query)(info);
+#if 0
+    printf("stat = %x\n", stat);
+    dump_buf(info, sizeof(info));
+#endif
+
+    // Hard wired for now
+    flash_info.block_size = region_size;
+    flash_info.blocks = num_regions;
+    flash_info.start = (void *)0xFE000000;
+    flash_info.end = (void *)(0xFE000000+(num_regions*region_size));
+    return FLASH_ERR_OK;
+}
+
+// Map a hardware status to a package error
+int
+flash_hwr_map_error(int err)
+{
+    if (err & 0x007E007E) {
+        printf("Err = %x\n", err);
+        if (err & 0x00100010) {
+            return FLASH_ERR_PROGRAM;
+        } else 
+        if (err & 0x00200020) {
+            return FLASH_ERR_ERASE;
+        } else 
+        return FLASH_ERR_HWR;  // FIXME
+    } else {
+        return FLASH_ERR_OK;
+    }
+}
+
+// See if a range of FLASH addresses overlaps currently running code
+bool
+flash_code_overlaps(void *start, void *end)
+{
+    extern char _stext, _etext;
+
+    return ((((unsigned long)&_stext >= (unsigned long)start) &&
+             ((unsigned long)&_stext < (unsigned long)end)) ||
+            (((unsigned long)&_etext >= (unsigned long)start) &&
+             ((unsigned long)&_etext < (unsigned long)end)));
+}
--- a/packages/devs/serial/arm/aeb/current/ChangeLog
+++ b/packages/devs/serial/arm/aeb/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_arm_aeb.cdl: Moved testing parameters here.
+
 2000-09-06  Gary Thomas  <gthomas@redhat.com>
 
 	* src/aeb_serial.h: Define baud rates for 57600 & 115200.  
--- a/packages/devs/serial/arm/aeb/current/cdl/ser_arm_aeb.cdl
+++ b/packages/devs/serial/arm/aeb/current/cdl/ser_arm_aeb.cdl
@@ -175,6 +175,29 @@ cdl_component CYGPKG_IO_SERIAL_ARM_AEB_S
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_AEB_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_ARM_AEB_SERIAL1
+
+        implements CYGINT_IO_SERIAL_TEST_SKIP_38400
+        implements CYGINT_IO_SERIAL_TEST_SKIP_57600
+        implements CYGINT_IO_SERIAL_TEST_SKIP_115200
+        implements CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_ARM_AEB_SERIAL1_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"armaeb\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty1\""
+        }
+    }
 }
 
 # EOF ser_arm_aeb.cdl
--- a/packages/devs/serial/arm/cma230/current/ChangeLog
+++ b/packages/devs/serial/arm/cma230/current/ChangeLog
@@ -1,3 +1,9 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* src/cma230_serial.c: Fix typo.
+
+	* cdl/ser_arm_cma230.cdl: Testing parameters moved here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/cma230_serial.c (cma230_serial_set_config): Now use keys to make
--- a/packages/devs/serial/arm/cma230/current/cdl/ser_arm_cma230.cdl
+++ b/packages/devs/serial/arm/cma230/current/cdl/ser_arm_cma230.cdl
@@ -175,6 +175,26 @@ cdl_component CYGPKG_IO_SERIAL_ARM_CMA23
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_CMA230_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_ARM_CMA230_SERIAL_A
+
+        implements CYGINT_IO_SERIAL_TEST_SKIP_115200
+        
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_ARM_CMA230_SERIAL_A_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"armcma\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty1\""
+        }
+    }
 }
 
 # EOF ser_arm_cma230.cdl
--- a/packages/devs/serial/arm/cma230/current/src/cma230_serial.c
+++ b/packages/devs/serial/arm/cma230/current/src/cma230_serial.c
@@ -69,7 +69,7 @@ static Cyg_ErrNo cma230_serial_lookup(st
                                    const char *name);
 static unsigned char cma230_serial_getc(serial_channel *chan);
 static Cyg_ErrNo cma230_serial_set_config(serial_channel *chan, cyg_uint32 key,
-                                          const void *xbuf; cyg_uint32 *len);
+                                          const void *xbuf, cyg_uint32 *len);
 static void cma230_serial_start_xmit(serial_channel *chan);
 static void cma230_serial_stop_xmit(serial_channel *chan);
 
--- a/packages/devs/serial/arm/ebsa285/current/ChangeLog
+++ b/packages/devs/serial/arm/ebsa285/current/ChangeLog
@@ -1,7 +1,11 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_arm_ebsa285.cdl: Testing parameters moved here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
-	* src/ebsa285_serial.c (ebsa285_serial_set_config): Now use keys to make
-	more flexible.
+	* src/ebsa285_serial.c (ebsa285_serial_set_config): Now use keys
+	to make more flexible.
 
 2000-06-22  Hugo Tyson  <hmt@cygnus.co.uk>
 
--- a/packages/devs/serial/arm/ebsa285/current/cdl/ser_arm_ebsa285.cdl
+++ b/packages/devs/serial/arm/ebsa285/current/cdl/ser_arm_ebsa285.cdl
@@ -133,6 +133,24 @@ cdl_package CYGPKG_IO_SERIAL_ARM_EBSA285
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_EBSA285_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_ARM_EBSA285_SERIAL
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_ARM_EBSA285_SERIAL_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"arm285\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty1\""
+        }
+    }
 }
 
 # EOF ser_arm_ebsa285.cdl
--- a/packages/devs/serial/arm/edb7xxx/current/ChangeLog
+++ b/packages/devs/serial/arm/edb7xxx/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_arm_edb7xxx.cdl: Moved testing parameters here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/edb7xxx_serial.c (edb7xxx_serial_set_config): Now use keys to make
--- a/packages/devs/serial/arm/edb7xxx/current/cdl/ser_arm_edb7xxx.cdl
+++ b/packages/devs/serial/arm/edb7xxx/current/cdl/ser_arm_edb7xxx.cdl
@@ -176,6 +176,26 @@ cdl_component CYGPKG_IO_SERIAL_ARM_EDB7X
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_EDB7XXX_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1
+
+        implements CYGINT_IO_SERIAL_TEST_SKIP_115200
+        
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_ARM_EDB7XXX_SERIAL1_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"armedb7xxx\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty1\""
+        }
+    }
 }
 
 # EOF ser_arm_edb7xxx.cdl
--- a/packages/devs/serial/arm/sa11x0/current/ChangeLog
+++ b/packages/devs/serial/arm/sa11x0/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_arm_sa11x0.cdl: Testing parameters moved here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/sa11x0_serial.c (sa11x0_serial_set_config): Now use keys to make
--- a/packages/devs/serial/arm/sa11x0/current/cdl/ser_arm_sa11x0.cdl
+++ b/packages/devs/serial/arm/sa11x0/current/cdl/ser_arm_sa11x0.cdl
@@ -174,6 +174,24 @@ cdl_component CYGPKG_IO_SERIAL_ARM_SA11X
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_ARM_SA11X0_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_ARM_SA11X0_SERIAL1
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_ARM_SA11X0_SERIAL1_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"assabet\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty1\""
+        }
+    }
 }
 
 # EOF ser_arm_sa11x0.cdl
--- a/packages/devs/serial/i386/pc/current/ChangeLog
+++ b/packages/devs/serial/i386/pc/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_i386_pc.cdl: Moved testing parameters here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/pc_serial.c (pc_serial_set_config): Now use keys to make
--- a/packages/devs/serial/i386/pc/current/cdl/ser_i386_pc.cdl
+++ b/packages/devs/serial/i386/pc/current/cdl/ser_i386_pc.cdl
@@ -227,6 +227,24 @@ cdl_component CYGPKG_IO_SERIAL_I386_PC_S
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_I386_PC_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_I386_PC_SERIAL0
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"i386pc\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty0\""
+        }
+    }
 }
 
 # EOF ser_i386_pc.cdl
--- a/packages/devs/serial/loop/current/ChangeLog
+++ b/packages/devs/serial/loop/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_loop.cdl: Moved testing parameters here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/loop_serial.c (loop_serial_set_config): Now use keys to make
--- a/packages/devs/serial/loop/current/cdl/ser_loop.cdl
+++ b/packages/devs/serial/loop/current/cdl/ser_loop.cdl
@@ -176,6 +176,24 @@ cdl_package CYGPKG_IO_SERIAL_LOOP {
                 removed from the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_LOOP_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_LOOP_SERIAL0
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_LOOP_SERIAL1_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"loop\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty0\""
+        }
+    }
 }
 
 # EOF ser_loop.cdl
--- a/packages/devs/serial/mips/jmr3904/current/ChangeLog
+++ b/packages/devs/serial/mips/jmr3904/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_mips_jmr3904.cdl: Moved testing parameters here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/tx3904_serial.c (tx3904_serial_set_config): Now use keys to make
--- a/packages/devs/serial/mips/jmr3904/current/cdl/ser_mips_jmr3904.cdl
+++ b/packages/devs/serial/mips/jmr3904/current/cdl/ser_mips_jmr3904.cdl
@@ -152,7 +152,7 @@ cdl_component CYGPKG_IO_SERIAL_TX39_JMR3
     }
 }
 
-    cdl_component CYGPKG_IO_SERIAL_MIPS_JMR3904_OPTIONS {
+    cdl_component CYGPKG_IO_SERIAL_TX39_JMR3904_OPTIONS {
         display "Serial device driver build options"
         flavor  none
         description   "
@@ -161,7 +161,7 @@ cdl_component CYGPKG_IO_SERIAL_TX39_JMR3
 	    and details of which tests are built."
 
 
-        cdl_option CYGPKG_IO_SERIAL_MIPS_JMR3904_CFLAGS_ADD {
+        cdl_option CYGPKG_IO_SERIAL_TX39_JMR3904_CFLAGS_ADD {
             display "Additional compiler flags"
             flavor  data
             no_define
@@ -172,7 +172,7 @@ cdl_component CYGPKG_IO_SERIAL_TX39_JMR3
                 to the set of global flags."
         }
 
-        cdl_option CYGPKG_IO_SERIAL_MIPS_JMR3904_CFLAGS_REMOVE {
+        cdl_option CYGPKG_IO_SERIAL_TX39_JMR3904_CFLAGS_REMOVE {
             display "Suppressed compiler flags"
             flavor  data
             no_define
@@ -183,6 +183,30 @@ cdl_component CYGPKG_IO_SERIAL_TX39_JMR3
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_TX39_JMR3904_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_TX39_JMR3904_SERIAL0
+
+        implements CYGINT_IO_SERIAL_TEST_SKIP_9600
+        implements CYGINT_IO_SERIAL_TEST_SKIP_57600
+        implements CYGINT_IO_SERIAL_TEST_SKIP_115200
+        implements CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN
+        implements CYGINT_IO_SERIAL_TEST_SKIP_STOP_2
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_TX39_JMR3904_SERIAL0_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"tx39jmr\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty0\""
+        }
+    }
 }
 
 # EOF ser_mips_jmr3904.cdl
--- a/packages/devs/serial/mips/vrc4373/current/ChangeLog
+++ b/packages/devs/serial/mips/vrc4373/current/ChangeLog
@@ -1,7 +1,11 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_mips_vrc4373.cdl: Moved testing parameters here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
-	* src/vrc4373_serial.c (vrc4373_serial_set_config): Now use keys to make
-	more flexible.
+	* src/vrc4373_serial.c (vrc4373_serial_set_config): Now use keys
+	to make more flexible.
 
 2000-07-22  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
--- a/packages/devs/serial/mips/vrc4373/current/cdl/ser_mips_vrc4373.cdl
+++ b/packages/devs/serial/mips/vrc4373/current/cdl/ser_mips_vrc4373.cdl
@@ -172,6 +172,24 @@ cdl_component CYGPKG_IO_SERIAL_MIPS_VRC4
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_MIPS_VRC4373_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_MIPS_VRC4373_SERIAL0
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_MIPS_VRC4373_SERIAL0_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"vrc4373\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty0\""
+        }
+    }
 }
 
 # EOF ser_mips_vrc4373.cdl
--- a/packages/devs/serial/powerpc/cogent/current/ChangeLog
+++ b/packages/devs/serial/powerpc/cogent/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_powerpc_cogent.cdl: Moved testing parameters here.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/cogent_serial_with_ints.c (cogent_serial_set_config): Now use
--- a/packages/devs/serial/powerpc/cogent/current/cdl/ser_powerpc_cogent.cdl
+++ b/packages/devs/serial/powerpc/cogent/current/cdl/ser_powerpc_cogent.cdl
@@ -176,6 +176,24 @@ cdl_component CYGPKG_IO_SERIAL_POWERPC_C
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_POWERPC_COGENT_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_POWERPC_COGENT_SERIAL_B
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_POWERPC_COGENT_SERIAL_B_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"ppccog\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty2\""
+        }
+    }
 }
 
 # EOF ser_powerpc_cogent.cdl
--- a/packages/devs/serial/sh/scif/current/ChangeLog
+++ b/packages/devs/serial/sh/scif/current/ChangeLog
@@ -1,3 +1,12 @@
+2000-10-23  Jesper Skov  <jskov@redhat.com>
+
+	* src/sh_scif_serial.c: Include cyg_ass.h
+
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* src/sh_scif_serial.c (sh3_scif_set_config): Changes to the flow
+	control handling. Renamed DMA variables.
+
 2000-10-12  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* src/sh_scif_serial.c: return -EINVAL when unsupported flow control
@@ -12,6 +21,8 @@ 2000-10-03  Jesper Skov  <jskov@redhat.c
 
 	* src/sh_scif_serial.c: Fixed receive FIFO problem. Added Line
 	Status handling. Don't enable TX interrupts in initialization.
+	* src/sh_scif_serial.c: Added DMA support. Added RTS/CTS control.
+	* cdl/ser_sh_scif.cdl: Added DMA interface.
 
 2000-09-26  Jesper Skov  <jskov@redhat.com>
 
--- a/packages/devs/serial/sh/scif/current/cdl/ser_sh_scif.cdl
+++ b/packages/devs/serial/sh/scif/current/cdl/ser_sh_scif.cdl
@@ -70,6 +70,15 @@ cdl_package CYGPKG_IO_SERIAL_SH_SCIF {
         puts $::cdl_header "#include CYGDAT_IO_SERIAL_SH_SCIF_CFG";
     }
 
+    cdl_interface CYGINT_IO_SERIAL_SH_SCIF_DMA {
+        display       "Enable SCIF serial driver DMA support"
+        implements    CYGINT_IO_SERIAL_BLOCK_TRANSFER
+        description   "
+            The serial driver can use DMA to move data from the
+            transmit buffer to the serial controller if the CPU
+            supports it."
+    }
+
     cdl_component CYGPKG_IO_SERIAL_SH_SCIF_OPTIONS {
         display "SCIF serial device driver build options"
         flavor  none
--- a/packages/devs/serial/sh/scif/current/src/sh_scif_serial.c
+++ b/packages/devs/serial/sh/scif/current/src/sh_scif_serial.c
@@ -52,6 +52,7 @@
 #include <cyg/hal/hal_intr.h>
 #include <cyg/io/devtab.h>
 #include <cyg/infra/diag.h>
+#include <cyg/infra/cyg_ass.h>
 #include <cyg/io/serial.h>
 
 #include <cyg/hal/sh_regs.h>
@@ -134,6 +135,16 @@ typedef struct sh3_scif_info {
 
     volatile bool     tx_enabled;       // expect tx _serial_ interrupts
 
+#if (CYGINT_IO_SERIAL_SH_SCIF_DMA > 0)
+    cyg_bool          dma_enable;       // Set if DMA mode
+    cyg_uint32        dma_xmt_cr_flags; // CR flags for DMA mode
+    CYG_WORD          dma_xmt_int_num;  // DMA xmt completion interrupt
+    CYG_ADDRWORD      dma_xmt_base;     // Base address of DMA channel
+    int               dma_xmt_len;      // length transferred by DMA
+    cyg_interrupt     dma_xmt_interrupt;
+    cyg_handle_t      dma_xmt_interrupt_handle;
+    volatile cyg_bool dma_xmt_running;  // expect tx _dma_ interrupts
+#endif
 } sh3_scif_info;
 
 static bool sh3_scif_init(struct cyg_devtab_entry *tab);
@@ -157,6 +168,12 @@ static cyg_uint32 sh3_scif_er_ISR(cyg_ve
 static void       sh3_scif_er_DSR(cyg_vector_t vector, cyg_ucount32 count, 
                                    cyg_addrword_t data);
 
+#if (CYGINT_IO_SERIAL_SH_SCIF_DMA > 0)
+static cyg_uint32 sh3_dma_xmt_ISR(cyg_vector_t vector, cyg_addrword_t data);
+static void       sh3_dma_xmt_DSR(cyg_vector_t vector, cyg_ucount32 count, 
+                                  cyg_addrword_t data);
+#endif
+
 static SERIAL_FUNS(sh3_scif_funs, 
                    sh3_scif_putc, 
                    sh3_scif_getc,
@@ -282,6 +299,32 @@ sh3_scif_init(struct cyg_devtab_entry *t
         // This unmasks both interrupt sources.
         cyg_drv_interrupt_unmask(sh_chan->rx_int_num);
     }
+
+#if (CYGINT_IO_SERIAL_SH_SCIF_DMA > 0)
+    // Assign DMA channel and interrupt if requested
+    if (sh_chan->dma_enable) {
+        // FIXME: Need a cleaner way to assign DMA channels
+        static int dma_channel = 0;
+        sh_chan->dma_xmt_int_num = dma_channel+CYGNUM_HAL_INTERRUPT_DMAC_DEI0;
+        sh_chan->dma_xmt_base = (dma_channel*0x10)+CYGARC_REG_SAR0;
+        dma_channel++;
+
+        // Enable the DMA engines.
+        HAL_WRITE_UINT16(CYGARC_REG_DMAOR, CYGARC_REG_DMAOR_DME);
+
+        cyg_drv_interrupt_create(sh_chan->dma_xmt_int_num,
+                                 3,
+                                 (cyg_addrword_t)chan, // Data item passed to interrupt handler
+                                 sh3_dma_xmt_ISR,
+                                 sh3_dma_xmt_DSR,
+                                 &sh_chan->dma_xmt_interrupt_handle,
+                                 &sh_chan->dma_xmt_interrupt);
+        cyg_drv_interrupt_attach(sh_chan->dma_xmt_interrupt_handle);
+        cyg_drv_interrupt_unmask(sh_chan->dma_xmt_int_num);
+    }
+    sh_chan->dma_xmt_running = false;
+#endif // CYGINT_IO_SERIAL_SH_SCIF_DMA
+
     sh3_scif_config_port(chan, &chan->config, true);
     return true;
 }
@@ -365,33 +408,49 @@ sh3_scif_set_config(serial_channel *chan
 #ifdef CYGOPT_IO_SERIAL_FLOW_CONTROL_HW
     case CYG_IO_SET_CONFIG_SERIAL_HW_RX_FLOW_THROTTLE:
       {
-          cyg_uint8 _scfcr;
+          // Control RX flow control by disabling/enabling RX interrupt.
+          // When disabled, FIFO will fill up and clear RTS.
+          cyg_uint8 _scscr, mask = 0;
           sh3_scif_info *ser_chan = (sh3_scif_info *)chan->dev_priv;
           cyg_addrword_t base = ser_chan->ctrl_base;
           cyg_uint8 *f = (cyg_uint8 *)xbuf;
-          unsigned char mask=0;
           if ( *len < *f )
               return -EINVAL;
           
           if ( chan->config.flags & CYGNUM_SERIAL_FLOW_RTSCTS_RX )
-              mask |= CYGARC_REG_SCFCR1_MCE;
-          HAL_READ_UINT8(base+SCIF_SCFCR, _scfcr);
+              mask |= CYGARC_REG_SCSCR2_RIE;
+          HAL_READ_UINT8(base+SCIF_SCSCR, _scscr);
           if (*f) // we should throttle
-              _scfcr &= ~mask;
+              _scscr &= ~mask;
           else // we should no longer throttle
-              _scfcr |= mask;
-          HAL_WRITE_UINT8(base+SCIF_SCFCR, _scfcr);
+              _scscr |= mask;
+          HAL_WRITE_UINT8(base+SCIF_SCSCR, _scscr);
       }
       break;
     case CYG_IO_SET_CONFIG_SERIAL_HW_FLOW_CONFIG:
       {
-        // Clear DSR/DTR flag as it's not supported.
-        if (chan->config.flags &
-            (CYGNUM_SERIAL_FLOW_DSRDTR_RX|CYGNUM_SERIAL_FLOW_DSRDTR_TX)) {
-            chan->config.flags &= ~(CYGNUM_SERIAL_FLOW_DSRDTR_RX|
-                                    CYGNUM_SERIAL_FLOW_DSRDTR_TX);
-            return -EINVAL;
-        }
+          // Handle CTS/RTS flag
+          if ( chan->config.flags & 
+               (CYGNUM_SERIAL_FLOW_RTSCTS_RX | CYGNUM_SERIAL_FLOW_RTSCTS_TX )){
+              cyg_uint8 _scfcr;
+              sh3_scif_info *ser_chan = (sh3_scif_info *)chan->dev_priv;
+              cyg_addrword_t base = ser_chan->ctrl_base;
+              cyg_uint8 *f = (cyg_uint8 *)xbuf;
+
+              HAL_READ_UINT8(base+SCIF_SCFCR, _scfcr);
+              if (*f) // enable RTS/CTS flow control
+                  _scfcr |= CYGARC_REG_SCFCR1_MCE;
+              else // disable RTS/CTS flow control
+                  _scfcr &= ~CYGARC_REG_SCFCR1_MCE;
+              HAL_WRITE_UINT8(base+SCIF_SCFCR, _scfcr);
+          }
+          // Clear DSR/DTR flag as it's not supported.
+          if (chan->config.flags &
+              (CYGNUM_SERIAL_FLOW_DSRDTR_RX|CYGNUM_SERIAL_FLOW_DSRDTR_TX)) {
+              chan->config.flags &= ~(CYGNUM_SERIAL_FLOW_DSRDTR_RX|
+                                      CYGNUM_SERIAL_FLOW_DSRDTR_TX);
+              return -EINVAL;
+          }
       }
       break;
 #endif
@@ -402,6 +461,130 @@ sh3_scif_set_config(serial_channel *chan
 }
 
 
+#if (CYGINT_IO_SERIAL_SH_SCIF_DMA > 0)
+
+// Must be called with serial interrupts disabled
+static xmt_req_reply_t
+sh3_scif_start_dma_xmt(serial_channel *chan)
+{
+    int chars_avail;
+    unsigned char* chars;
+    xmt_req_reply_t res;
+
+    // We can transfer the full buffer - ask how much to transfer
+    res = (chan->callbacks->data_xmt_req)(chan, chan->out_cbuf.len, 
+                                          &chars_avail, &chars);
+    if (CYG_XMT_OK == res) {
+        sh3_scif_info *sh_chan = (sh3_scif_info *)chan->dev_priv;
+        cyg_uint32 dma_base = sh_chan->dma_xmt_base;
+        cyg_uint32 scr;
+
+        // Save the length so it can be used in the DMA DSR
+        sh_chan->dma_xmt_len = chars_avail;
+
+        // Flush cache for the area
+        HAL_DCACHE_FLUSH((cyg_haladdress)chars, chars_avail);
+
+        // Program DMA
+        HAL_WRITE_UINT32(dma_base+CYGARC_REG_CHCR, 0); // disable and clear
+        HAL_WRITE_UINT32(dma_base+CYGARC_REG_SAR, (cyg_uint32)chars);
+        HAL_WRITE_UINT32(dma_base+CYGARC_REG_DAR, 
+                         (sh_chan->ctrl_base+SCIF_SCFTDR) & 0x0fffffff);
+        HAL_WRITE_UINT32(dma_base+CYGARC_REG_DMATCR, chars_avail);
+        // Source increments, dest static, byte transfer, enable
+        // interrupt on completion.
+        HAL_WRITE_UINT32(dma_base+CYGARC_REG_CHCR,
+                         sh_chan->dma_xmt_cr_flags | CYGARC_REG_CHCR_SM0 \
+                         | CYGARC_REG_CHCR_IE | CYGARC_REG_CHCR_DE);
+
+        // Enable serial interrupts
+        HAL_READ_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, scr);
+        scr |= CYGARC_REG_SCSCR2_TIE;
+        HAL_WRITE_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, scr);
+    }
+
+    return res;
+}
+
+// must be called with serial interrupts masked
+static void
+sh3_scif_stop_dma_xmt(serial_channel *chan)
+{
+    sh3_scif_info *sh_chan = (sh3_scif_info *)chan->dev_priv;
+    cyg_uint32 dma_base = sh_chan->dma_xmt_base;
+    cyg_uint32 cr;
+
+    // Disable DMA engine and interrupt enable flag.  Should be safe
+    // to do since it's triggered by the serial interrupt which has
+    // already been disabled.
+    HAL_READ_UINT32(dma_base+CYGARC_REG_CHCR, cr);
+    cr &= ~(CYGARC_REG_CHCR_IE | CYGARC_REG_CHCR_DE);
+    HAL_WRITE_UINT32(dma_base+CYGARC_REG_CHCR, cr);
+
+    // Did transfer complete?
+    HAL_READ_UINT32(dma_base+CYGARC_REG_CHCR, cr);
+    if (0 == (cr & CYGARC_REG_CHCR_TE)) {
+        // Transfer incomplete. Report actually transferred amount of data
+        // back to the serial driver.
+        int chars_left;
+        HAL_READ_UINT32(dma_base+CYGARC_REG_DMATCR, chars_left);
+        CYG_ASSERT(chars_left > 0, "DMA incomplete, but no data left");
+        CYG_ASSERT(chars_left <= sh_chan->dma_xmt_len,
+                   "More data remaining than was attempted transferred");
+
+        (chan->callbacks->data_xmt_done)(chan, 
+                                         sh_chan->dma_xmt_len - chars_left);
+    }
+
+#ifdef CYGDBG_USE_ASSERTS
+    {
+        cyg_uint32 dmaor;
+        HAL_READ_UINT32(CYGARC_REG_DMAOR, dmaor);
+        CYG_ASSERT(0== (dmaor & (CYGARC_REG_DMAOR_AE | CYGARC_REG_DMAOR_NMIF)),
+                   "DMA error");
+    }
+#endif
+    
+    // The DMA engine is free again.
+    sh_chan->dma_xmt_running = false;
+}
+
+// Serial xmt DMA completion interrupt handler (ISR)
+static cyg_uint32 
+sh3_dma_xmt_ISR(cyg_vector_t vector, cyg_addrword_t data)
+{
+    serial_channel *chan = (serial_channel *)data;
+    sh3_scif_info *sh_chan = (sh3_scif_info *)chan->dev_priv;
+    cyg_uint32 _cr;
+
+    // mask serial interrupt
+    HAL_READ_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, _cr);
+    _cr &= ~CYGARC_REG_SCSCR2_TIE;      // Disable xmit interrupt
+    HAL_WRITE_UINT8(sh_chan->ctrl_base+SCIF_SCSCR, _cr);
+
+    // mask DMA interrupt and disable engine
+    HAL_READ_UINT32(sh_chan->dma_xmt_base+CYGARC_REG_CHCR, _cr);
+    _cr &= ~(CYGARC_REG_CHCR_IE | CYGARC_REG_CHCR_DE);
+    HAL_WRITE_UINT32(sh_chan->dma_xmt_base+CYGARC_REG_CHCR, _cr);
+
+    return CYG_ISR_CALL_DSR;  // Cause DSR to be run
+}
+
+// Serial xmt DMA completion interrupt handler (DSR)
+static void       
+sh3_dma_xmt_DSR(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data)
+{
+    serial_channel *chan = (serial_channel *)data;
+    sh3_scif_info *sh_chan = (sh3_scif_info *)chan->dev_priv;
+
+    (chan->callbacks->data_xmt_done)(chan, sh_chan->dma_xmt_len);
+
+    // Try to load the engine again.
+    sh_chan->dma_xmt_running = 
+        (CYG_XMT_OK == sh3_scif_start_dma_xmt(chan)) ? true : false;
+}
+#endif // CYGINT_IO_SERIAL_SH_SCIF_DMA
+
 
 // Enable the transmitter on the device
 static void
@@ -414,6 +597,24 @@ sh3_scif_start_xmit(serial_channel *chan
     if (sh_chan->tx_enabled)
         return;
 
+#if (CYGINT_IO_SERIAL_SH_SCIF_DMA > 0)
+    // Check if the engine is already running. If so, return. Note
+    // that there will never be a race on this flag - the caller of
+    // this function is respecting a per-channel lock.
+    if (sh_chan->dma_xmt_running)
+        return;
+    // If the channel uses DMA, try to start a DMA job for this -
+    // but handle the case where the job doesn't start by falling
+    // back to the FIFO/interrupt based code.
+    if (sh_chan->dma_enable) {
+        _block_status = sh3_scif_start_dma_xmt(chan);
+        CYG_ASSERT(_block_status != CYG_XMT_EMPTY, 
+                   "start_xmit called with empty buffers!");
+        sh_chan->dma_xmt_running = 
+            (CYG_XMT_OK == _block_status) ? true : false;
+    }
+#endif // CYGINT_IO_SERIAL_SH_SCIF_DMA
+
     if (CYG_XMT_DISABLED == _block_status) {
         // Mask interrupts while changing the CR since a rx
         // interrupt or another thread doing the same in the
@@ -447,6 +648,12 @@ sh3_scif_stop_xmit(serial_channel *chan)
     }
     cyg_drv_isr_unlock();
 
+#if (CYGINT_IO_SERIAL_SH_SCIF_DMA > 0)
+    // If the channel uses DMA, stop the DMA engine.
+    if (sh_chan->dma_xmt_running)
+        sh3_scif_stop_dma_xmt(chan);
+    else // dangling else!
+#endif // CYGINT_IO_SERIAL_SH_SCIF_DMA
         sh_chan->tx_enabled = false;
 }
 
--- a/packages/devs/serial/sparclite/sleb/current/ChangeLog
+++ b/packages/devs/serial/sparclite/sleb/current/ChangeLog
@@ -1,3 +1,9 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_sparclite_sleb.cdl: Moved testing parameters here.
+
+	* src/sleb_sdtr.c: Removed obsolete sleb_sdtr_set_config function.
+
 2000-08-01  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/sleb_sdtr.c (sleb_sdtr_set_config): Now use keys to make
--- a/packages/devs/serial/sparclite/sleb/current/cdl/ser_sparclite_sleb.cdl
+++ b/packages/devs/serial/sparclite/sleb/current/cdl/ser_sparclite_sleb.cdl
@@ -173,6 +173,30 @@ cdl_component CYGPKG_IO_SERIAL_SPARCLITE
                 the set of global flags if present."
         }
     }
+
+    cdl_component CYGPKG_IO_SERIAL_SPARCLITE_SLEB_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_SPARCLITE_SLEB_CON1
+
+        implements CYGINT_IO_SERIAL_TEST_SKIP_38400
+        implements CYGINT_IO_SERIAL_TEST_SKIP_57600
+        implements CYGINT_IO_SERIAL_TEST_SKIP_115200
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_SPARCLITE_SLEB_CON1_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"sparcl\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty0\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_OVERRIDE_INT_1 CYGNUM_HAL_INTERRUPT_9"
+            puts $::cdl_header "#define CYGPRI_SER_TEST_OVERRIDE_INT_2 CYGNUM_HAL_INTERRUPT_10"
+        }
+    }
 }
 
 # EOF ser_sparclite_sleb.cdl
--- a/packages/devs/serial/sparclite/sleb/current/src/sleb_sdtr.c
+++ b/packages/devs/serial/sparclite/sleb/current/src/sleb_sdtr.c
@@ -321,11 +321,6 @@ sleb_sdtr_set_config(serial_channel *cha
     }
     return ENOERR;
 }
-static bool 
-sleb_sdtr_set_config(serial_channel *chan, cyg_serial_info_t *config)
-{
-    return sleb_sdtr_config_port(chan, config, false);
-}
 
 // Enable the transmitter on the device
 static void
--- a/packages/devs/serial/v85x/v850/current/ChangeLog
+++ b/packages/devs/serial/v85x/v850/current/ChangeLog
@@ -1,6 +1,11 @@
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* cdl/ser_v85x_v850.cdl: Moved testing parameters here.
+
 2000-10-09  Gary Thomas  <gthomas@redhat.com>
 
-	* src/v85x_v850_serial.c (v850_serial_config_port): Fix baud clock setup.
+	* src/v85x_v850_serial.c (v850_serial_config_port): Fix baud clock
+	setup.
 
 2000-10-04  Gary Thomas  <gthomas@redhat.com>
 
--- a/packages/devs/serial/v85x/v850/current/cdl/ser_v85x_v850.cdl
+++ b/packages/devs/serial/v85x/v850/current/cdl/ser_v85x_v850.cdl
@@ -103,4 +103,22 @@ cdl_package CYGPKG_IO_SERIAL_V85X_V850 {
         }
     }
 
+    cdl_component CYGPKG_IO_SERIAL_V85X_V850_TESTING {
+        display    "Testing parameters"
+        flavor     bool
+        calculated 1
+        active_if  CYGPKG_IO_SERIAL_V85X_V850_SERIAL0
+
+        cdl_option CYGPRI_SER_TEST_SER_DEV {
+            display       "Serial device used for testing"
+            flavor        data
+            default_value { CYGDAT_IO_SERIAL_V85X_V850_SERIAL0_NAME }
+        }
+
+        define_proc {
+            puts $::cdl_header "#define CYGPRI_SER_TEST_CRASH_ID \"v85x/v850\""
+            puts $::cdl_header "#define CYGPRI_SER_TEST_TTY_DEV  \"/dev/tty0\""
+        }
+    }
+
 }
--- a/packages/ecos.db
+++ b/packages/ecos.db
@@ -144,6 +144,16 @@ package CYGPKG_DEVS_FLASH_ASSABET {
 	   on the Intel StrongARM SA-1110 Assabet platform."
 }
 
+package CYGPKG_DEVS_FLASH_MBX {
+	alias 		{ "FLASH memory support for Motorola PowerPC/860 MBX" flash_mbx }
+	directory	devs/flash/powerpc/mbx
+	script		flash_mbx.cdl
+	hardware
+        description "
+           This package contains hardware support for FLASH memory
+	   on the Motorola PowerPC/860 MBX platform."
+}
+
 package CYGPKG_IO_SERIAL_ARM_EBSA285 {
     alias 	      { "Intel EBSA285 serial driver"
                         devs_serial_arm_ebsa285 ebsa285_serial_driver }
@@ -376,6 +386,7 @@ package CYGPKG_SNMPAGENT {
 	script		snmpagent.cdl
         description     "UCD SNMP agent."
 }
+
 package CYGPKG_DEVS_ETH_ARM_EDB7XXX {
 	alias 		{ "Cirrus Logic ethernet driver" edb7xxx_eth_driver }
 	hardware
@@ -1350,6 +1361,7 @@ target mbx {
                           CYGPKG_HAL_QUICC 
                           CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC
                           CYGPKG_DEVS_ETH_POWERPC_QUICC
+                          CYGPKG_DEVS_FLASH_MBX
         }
         description "
             The mbx target provides the packages needed to run
--- a/packages/hal/arm/aeb/current/ChangeLog
+++ b/packages/hal/arm/aeb/current/ChangeLog
@@ -1,3 +1,21 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_arm_aebC_ram.mlt:
+	* include/pkgconf/mlt_arm_aebC_rom.mlt:
+	* include/pkgconf/mlt_arm_aeb_ram.mlt:
+	* include/pkgconf/mlt_arm_aeb_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_arm_aebC_ram.h:
+	* include/pkgconf/mlt_arm_aebC_rom.h:
+	* include/pkgconf/mlt_arm_aeb_ram.h:
+	* include/pkgconf/mlt_arm_aeb_rom.h:
+	* include/pkgconf/mlt_arm_aebC_ram.ldi:
+	* include/pkgconf/mlt_arm_aebC_rom.ldi:
+	* include/pkgconf/mlt_arm_aeb_ram.ldi:
+	* include/pkgconf/mlt_arm_aeb_rom.ldi:
+	Regenerate
+
 2000-07-03  Jesper Skov  <jskov@redhat.com>
 
 	* src/hal_diag.c: 
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.h
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.h
@@ -1,19 +1,17 @@
-// eCos memory layout - Tue Feb 29 14:33:50 2000
+// eCos memory layout - Fri Oct 20 05:46:39 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x48000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
-#define CYGMEM_SECTION_reserved_vectors_SIZE (0x1000)
-extern char CYG_LABEL_NAME (_reserved_not_mapped) [];
-#define CYGMEM_SECTION_reserved_not_mapped (CYG_LABEL_NAME (_reserved_not_mapped))
-#define CYGMEM_SECTION_reserved_not_mapped_SIZE (0x7000)
-extern char CYG_LABEL_NAME (_reserved_rom_usage) [];
-#define CYGMEM_SECTION_reserved_rom_usage (CYG_LABEL_NAME (_reserved_rom_usage))
-#define CYGMEM_SECTION_reserved_rom_usage_SIZE (0x4000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x48000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.ldi
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:33:50 2000
+// eCos memory layout - Fri Oct 20 05:46:39 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x48000
@@ -11,7 +13,7 @@ SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
-    SECTION_rom_vectors (ram, 0xC000, LMA_EQ_VMA)
+    SECTION_rom_vectors (ram, 0xc000, LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.mlt
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_ram.mlt
@@ -1,7 +1,7 @@
 version 0
 region ram 0 48000 0 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
-section rom_vectors 0 1 0 1 1 1 1 1 C000 C000 text text !
+section rom_vectors 0 1 0 1 1 1 1 1 c000 c000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
 section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.h
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.h
@@ -1,19 +1,20 @@
-// eCos memory layout - Tue Feb 29 14:32:38 2000
+// eCos memory layout - Fri Oct 20 05:46:21 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x48000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0x4018000)
 #define CYGMEM_REGION_rom_SIZE (0x8000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
-#define CYGMEM_SECTION_reserved_vectors_SIZE (0x1000)
-extern char CYG_LABEL_NAME (_reserved_not_mapped) [];
-#define CYGMEM_SECTION_reserved_not_mapped (CYG_LABEL_NAME (_reserved_not_mapped))
-#define CYGMEM_SECTION_reserved_not_mapped_SIZE (0x7000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x48000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.ldi
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:32:38 2000
+// eCos memory layout - Fri Oct 20 05:46:21 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x48000
@@ -21,5 +23,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x8000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.mlt
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aebC_rom.mlt
@@ -3,8 +3,8 @@ region ram 0 48000 0 !
 region rom 4018000 8000 1 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 8000 bss !
-section bss 0 4 0 1 0 0 0 0 !
-section reserved_not_mapped 7000 4 0 0 0 1 0 0 data !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 4018000 4018000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.h
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.h
@@ -1,19 +1,17 @@
-// eCos memory layout - Tue Feb 29 14:28:13 2000
+// eCos memory layout - Fri Oct 20 05:45:39 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x28000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
-#define CYGMEM_SECTION_reserved_vectors_SIZE (0x1000)
-extern char CYG_LABEL_NAME (_reserved_not_mapped) [];
-#define CYGMEM_SECTION_reserved_not_mapped (CYG_LABEL_NAME (_reserved_not_mapped))
-#define CYGMEM_SECTION_reserved_not_mapped_SIZE (0x7000)
-extern char CYG_LABEL_NAME (_reserved_for_rom) [];
-#define CYGMEM_SECTION_reserved_for_rom (CYG_LABEL_NAME (_reserved_for_rom))
-#define CYGMEM_SECTION_reserved_for_rom_SIZE (0x4000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x28000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.ldi
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:28:13 2000
+// eCos memory layout - Fri Oct 20 05:45:39 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x28000
@@ -11,7 +13,7 @@ SECTIONS
 {
     SECTIONS_BEGIN
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
-    SECTION_rom_vectors (ram, 0xC000, LMA_EQ_VMA)
+    SECTION_rom_vectors (ram, 0xc000, LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.mlt
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_ram.mlt
@@ -1,7 +1,7 @@
 version 0
 region ram 0 28000 0 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
-section rom_vectors 0 1 0 1 1 1 1 1 C000 C000 text text !
+section rom_vectors 0 1 0 1 1 1 1 1 c000 c000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
 section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.h
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.h
@@ -1,19 +1,20 @@
-// eCos memory layout - Tue Feb 29 14:30:16 2000
+// eCos memory layout - Fri Oct 20 05:46:01 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x28000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0x4018000)
 #define CYGMEM_REGION_rom_SIZE (0x8000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
-#define CYGMEM_SECTION_reserved_vectors_SIZE (0x1000)
-extern char CYG_LABEL_NAME (_reserved_not_mapped) [];
-#define CYGMEM_SECTION_reserved_not_mapped (CYG_LABEL_NAME (_reserved_not_mapped))
-#define CYGMEM_SECTION_reserved_not_mapped_SIZE (0x7000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x28000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.ldi
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:30:16 2000
+// eCos memory layout - Fri Oct 20 05:46:01 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x28000
@@ -21,5 +23,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x8000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.mlt
+++ b/packages/hal/arm/aeb/current/include/pkgconf/mlt_arm_aeb_rom.mlt
@@ -3,7 +3,8 @@ region ram 0 28000 0 !
 region rom 4018000 8000 1 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 8000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 4018000 4018000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
--- a/packages/hal/arm/arch/current/ChangeLog
+++ b/packages/hal/arm/arch/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_misc.c: Update __mem_fault_handler declaration.
+
 2000-09-05  Andrew Lunn <andrew.lunn@ascom.ch>
 
 	* include/basetype.h: Override the alignment macros for the ARM
--- a/packages/hal/arm/arch/current/src/hal_misc.c
+++ b/packages/hal/arm/arch/current/src/hal_misc.c
@@ -66,7 +66,7 @@ externC void diag_printf(const char *fmt
 externC void __handle_exception (void);
 
 externC HAL_SavedRegisters *_hal_registers;
-extern void *__mem_fault_handler;
+externC void* volatile __mem_fault_handler;
 
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 /* Force exception handling into the GDB stubs.  This is done by taking over
--- a/packages/hal/arm/cma230/current/ChangeLog
+++ b/packages/hal/arm/cma230/current/ChangeLog
@@ -1,3 +1,21 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_arm_cma222_ram.mlt:
+	* include/pkgconf/mlt_arm_cma222_rom.mlt:
+	* include/pkgconf/mlt_arm_cma230_ram.mlt:
+	* include/pkgconf/mlt_arm_cma230_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_arm_cma222_ram.h:
+	* include/pkgconf/mlt_arm_cma222_rom.h:
+	* include/pkgconf/mlt_arm_cma230_ram.h:
+	* include/pkgconf/mlt_arm_cma230_rom.h:
+	* include/pkgconf/mlt_arm_cma222_ram.ldi:
+	* include/pkgconf/mlt_arm_cma222_rom.ldi:
+	* include/pkgconf/mlt_arm_cma230_ram.ldi:
+	* include/pkgconf/mlt_arm_cma230_rom.ldi:
+	Regenerate
+
 2000-07-05  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_arm_cma230.cdl:
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.h
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.h
@@ -1,13 +1,17 @@
-// eCos memory layout - Tue Feb 29 14:41:00 2000
+// eCos memory layout - Fri Oct 20 05:35:09 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x200000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x8000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x200000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.ldi
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:41:00 2000
+// eCos memory layout - Fri Oct 20 05:35:09 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x200000
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x4);
     SECTIONS_END
 }
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.mlt
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_ram.mlt
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 4 0 0 0 0 0 0 !
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.h
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Feb 29 14:40:01 2000
+// eCos memory layout - Fri Oct 20 05:34:42 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x200000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xe000000)
 #define CYGMEM_REGION_rom_SIZE (0x40000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x1000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x200000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.ldi
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:40:01 2000
+// eCos memory layout - Fri Oct 20 05:34:42 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x200000
@@ -21,5 +23,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x4);
     SECTIONS_END
 }
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.mlt
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma222_rom.mlt
@@ -3,7 +3,8 @@ region ram 0 200000 0 !
 region rom e000000 40000 1 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 4 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 e000000 e000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.h
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.h
@@ -1,13 +1,17 @@
-// eCos memory layout - Tue Feb 29 14:36:49 2000
+// eCos memory layout - Fri Oct 20 05:33:25 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x200000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x8000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x200000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.ldi
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:36:49 2000
+// eCos memory layout - Fri Oct 20 05:33:25 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x200000
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x4);
     SECTIONS_END
 }
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.mlt
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_ram.mlt
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 4 0 0 0 0 0 0 !
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.h
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Feb 29 14:38:29 2000
+// eCos memory layout - Fri Oct 20 05:34:02 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x200000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xe000000)
 #define CYGMEM_REGION_rom_SIZE (0x40000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x1000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x200000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.ldi
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:38:29 2000
+// eCos memory layout - Fri Oct 20 05:34:02 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x200000
@@ -21,5 +23,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x4);
     SECTIONS_END
 }
--- a/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.mlt
+++ b/packages/hal/arm/cma230/current/include/pkgconf/mlt_arm_cma230_rom.mlt
@@ -3,7 +3,8 @@ region ram 0 200000 0 !
 region rom e000000 40000 1 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 4 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 e000000 e000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
--- a/packages/hal/arm/ebsa285/current/ChangeLog
+++ b/packages/hal/arm/ebsa285/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-18  Gary Thomas  <gthomas@redhat.com>
+
+	* src/redboot_cmds.c: New file: only built in redboot, for a
+	platform specific command to exec code with no MMU intervention.
+	This is used to execute standard Linux kernels with as little
+	change/perturbation as possible.
+
+	* include/hal_ebsa285.h (EBSA285_RAM_BANK0_BASE): New symbol for
+	redboot_cmds.c
+
+	* cdl/hal_arm_ebsa285.cdl: Add build redboot_cmds.c -> libextras.
+
 2000-09-17  Gary Thomas  <gthomas@redhat.com>
 
 	* cdl/hal_arm_ebsa285.cdl: Add platform/cpu identification strings.
--- a/packages/hal/arm/ebsa285/current/cdl/hal_arm_ebsa285.cdl
+++ b/packages/hal/arm/ebsa285/current/cdl/hal_arm_ebsa285.cdl
@@ -367,6 +367,8 @@ cdl_package CYGPKG_HAL_ARM_EBSA285 {
             description "This option enables the conversion of the Redboot ELF
                          image to a binary image suitable for ROM programming."
     
+            compile -library=libextras.a redboot_cmds.c
+
             make -priority 325 {
                 <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
                 $(OBJCOPY) --strip-debug $< $(@:.bin=.img) 
--- a/packages/hal/arm/ebsa285/current/include/hal_ebsa285.h
+++ b/packages/hal/arm/ebsa285/current/include/hal_ebsa285.h
@@ -95,6 +95,11 @@
 
 #endif /* __ASSEMBLER__ */
 
+//
+// Memory Layout
+//
+#define EBSA285_RAM_BANK0_BASE 0xC0000000
+
 /*
  * SA-110 Cache and MMU Control Registers
  *
new file mode 100644
--- /dev/null
+++ b/packages/hal/arm/ebsa285/current/src/redboot_cmds.c
@@ -0,0 +1,127 @@
+//==========================================================================
+//
+//      redboot_cmds.c
+//
+//      EBSA-285 [platform] specific RedBoot commands
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-07-14
+// Purpose:      
+// Description:  
+//              
+// This code is part of RedBoot (tm).
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <redboot.h>
+
+#include <cyg/hal/hal_ebsa285.h>   // Board definitions
+#include <cyg/hal/hal_intr.h>
+#include <cyg/hal/hal_cache.h>
+
+
+// Exported CLI function(s)
+RedBoot_cmd("exec", 
+            "Execute an image - with MMU off", 
+            "[-w timeout] [<entry_point>]",
+            do_exec
+    );
+
+typedef void code_fun(void);
+
+static void 
+do_exec(int argc, char *argv[])
+{
+    unsigned long entry;
+    unsigned long oldints;
+    code_fun *fun, *prg;
+    bool wait_time_set;
+    int  wait_time, res, i;
+    struct option_info opts[1];
+    char line[8];
+    unsigned long _prg[32], *ip;
+
+    entry = (unsigned long)entry_address;  // Default from last 'load' operation
+    init_opts(&opts[0], 'w', true, OPTION_ARG_TYPE_NUM, 
+              (void **)&wait_time, (bool *)&wait_time_set, "wait timeout");
+    if (!scan_opts(argc, argv, 1, opts, 1, (void *)&entry, OPTION_ARG_TYPE_NUM, "starting address"))
+    {
+        return;
+    }
+    if (wait_time_set) {
+        printf("About to start execution at %p - abort with ^C within %d seconds\n",
+               (void *)entry, wait_time);
+        res = gets(line, sizeof(line), wait_time*1000);
+        if (res == -2) {
+            return;
+        }
+    }
+    ip = (unsigned long *)&&lab1;
+    for (i = 0;  i < (unsigned long)&&end1-(unsigned long)&&lab1;  i++) {
+        _prg[i] = *ip++;
+    }
+    HAL_DISABLE_INTERRUPTS(oldints);
+    HAL_DCACHE_SYNC();
+    HAL_ICACHE_DISABLE();
+    HAL_DCACHE_DISABLE();
+    HAL_DCACHE_SYNC();
+    HAL_ICACHE_INVALIDATE_ALL();
+    HAL_DCACHE_INVALIDATE_ALL();
+    ip = (unsigned long *)_prg;
+    // Not call this code
+    fun = (code_fun *)((entry & 0x0FFFFFFF) + EBSA285_RAM_BANK0_BASE);  // Absolute address
+    prg = (code_fun *)((unsigned long)ip + EBSA285_RAM_BANK0_BASE);  // Absolute address
+    asm volatile ("mov r5,%0" : : "r"(fun) : "r5");
+    asm volatile ("mov r1,%0; mov pc,r1" : : "r"(prg));
+ lab1:
+    // Tricky code.  We are currently running with the MMU on and the
+    // memory map convoluted from 1-1.  This code must be copied to RAM
+    // and then executed at the non-mapped address.  Then when the code
+    // turns off the MMU, the control flow is unchanged and control can
+    // be passed safely to the program to be executed.
+    // This magic was created in order to be able to execute standard
+    // Linux kernels with as little change/perturberance as possible.
+    asm volatile ("mrs r0,cpsr;"
+                  "msr spsr,r0;"
+                  "bic r0,r0,#0x1F;"  // Put processor in IRQ mode
+                  "orr r0,r0,#0x12;"
+                  "msr cpsr,r0;"
+                  "mov lr,r5;"
+                  "mov sp,r5;"        // Give the kernel a stack just below the entry point
+                  "mov r1,#0;"
+                  "mcr p15,0,r1,c1,c0;"
+                  "mov r0,#0;"        // Set up EBSA285 load magic
+                  "mov r1,#0x4;" 
+                  "movs pc,lr" : : );
+ end1:
+}
--- a/packages/hal/arm/edb7xxx/current/ChangeLog
+++ b/packages/hal/arm/edb7xxx/current/ChangeLog
@@ -1,3 +1,30 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_arm_cl7111_ram.mlt:
+	* include/pkgconf/mlt_arm_cl7111_rom.mlt:
+	* include/pkgconf/mlt_arm_edb7209_rom.mlt:
+	* include/pkgconf/mlt_arm_edb7211_ram.mlt:
+	* include/pkgconf/mlt_arm_edb7211_rom.mlt:
+	* include/pkgconf/mlt_arm_edb7212_ram.mlt:
+	* include/pkgconf/mlt_arm_edb7212_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_arm_cl7111_ram.h:
+	* include/pkgconf/mlt_arm_cl7111_rom.h:
+	* include/pkgconf/mlt_arm_edb7209_rom.h:
+	* include/pkgconf/mlt_arm_edb7211_ram.h:
+	* include/pkgconf/mlt_arm_edb7211_rom.h:
+	* include/pkgconf/mlt_arm_edb7212_ram.h:
+	* include/pkgconf/mlt_arm_edb7212_rom.h:
+	* include/pkgconf/mlt_arm_cl7111_ram.ldi:
+	* include/pkgconf/mlt_arm_cl7111_rom.ldi:
+	* include/pkgconf/mlt_arm_edb7209_rom.ldi:
+	* include/pkgconf/mlt_arm_edb7211_ram.ldi:
+	* include/pkgconf/mlt_arm_edb7211_rom.ldi:
+	* include/pkgconf/mlt_arm_edb7212_ram.ldi:
+	* include/pkgconf/mlt_arm_edb7212_rom.ldi:
+	Regenerate
+
 2000-09-17  Gary Thomas  <gthomas@redhat.com>
 
 	* cdl/hal_arm_edb7xxx.cdl: Update platform/cpu identification strings.
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.h
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.h
@@ -1,13 +1,17 @@
-// eCos memory layout - Tue Feb 29 14:53:55 2000
+// eCos memory layout - Fri Oct 20 05:40:55 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x1c0000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x8000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x1c0000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.ldi
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:53:55 2000
+// eCos memory layout - Fri Oct 20 05:40:55 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x1c0000
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.mlt
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_ram.mlt
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.h
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Feb 29 14:52:51 2000
+// eCos memory layout - Fri Oct 20 05:40:29 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x1c0000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xe0000000)
 #define CYGMEM_REGION_rom_SIZE (0x40000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x1000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x1c0000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.ldi
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:52:51 2000
+// eCos memory layout - Fri Oct 20 05:40:29 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x1c0000
@@ -21,5 +23,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x1000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.mlt
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_cl7111_rom.mlt
@@ -3,7 +3,8 @@ region ram 0 1c0000 0 !
 region rom e0000000 40000 1 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.h
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Feb 29 15:03:28 2000
+// eCos memory layout - Fri Oct 20 05:41:57 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x9c00)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xe0000000)
 #define CYGMEM_REGION_rom_SIZE (0x800000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x1000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x9c00 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.ldi
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 15:03:28 2000
+// eCos memory layout - Fri Oct 20 05:41:57 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x9c00
@@ -22,5 +24,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x1000, FOLLOWING (.mmu_tables))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.mlt
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7209_rom.mlt
@@ -3,12 +3,13 @@ region ram 0 9c00 0 !
 region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000.
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
-section text 0 1 0 1 0 1 0 1 fini fini !
-section fini 0 1 0 1 0 1 0 1 rodata rodata !
-section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
-section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 1 0 1 mmu_tables mmu_tables !
+section text 0 4 0 1 0 1 0 1 fini fini !
+section fini 0 4 0 1 0 1 0 1 rodata rodata !
+section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 4 0 1 0 1 0 1 fixup fixup !
+section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 4 0 1 0 1 0 1 mmu_tables mmu_tables !
 section mmu_tables 0 4000 0 1 0 0 0 1 data !
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.h
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.h
@@ -1,13 +1,17 @@
-// eCos memory layout - Tue Feb 29 14:48:14 2000
+// eCos memory layout - Fri Oct 20 05:38:50 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0xfd9000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x10000 - (size_t) CYG_LABEL_NAME (_reserved))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xfd9000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.ldi
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:48:14 2000
+// eCos memory layout - Fri Oct 20 05:38:50 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0xfd9000
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.mlt
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_ram.mlt
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.h
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.h
@@ -1,10 +1,12 @@
-// eCos memory layout - Tue Feb 29 14:51:45 2000
+// eCos memory layout - Fri Oct 20 05:39:48 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0xfd7000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
@@ -14,9 +16,13 @@
 #define CYGMEM_REGION_rom (0xe0000000)
 #define CYGMEM_REGION_rom_SIZE (0x800000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x1000 - (size_t) CYG_LABEL_NAME (_reserved))
-extern char CYG_LABEL_NAME (_sram) [];
-#define CYGMEM_SECTION_sram (CYG_LABEL_NAME (_sram))
-#define CYGMEM_SECTION_sram_SIZE (0x60009c00 - (size_t) CYG_LABEL_NAME (_sram))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xfd7000 - (size_t) CYG_LABEL_NAME (__heap1))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__sram) [];
+#endif
+#define CYGMEM_SECTION_sram (CYG_LABEL_NAME (__sram))
+#define CYGMEM_SECTION_sram_SIZE (0x60009c00 - (size_t) CYG_LABEL_NAME (__sram))
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.ldi
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 14:51:45 2000
+// eCos memory layout - Fri Oct 20 05:39:48 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0xfd7000
@@ -23,6 +25,7 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x1000, FOLLOWING (.mmu_tables))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
-    __sram = 0x60000000;
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    CYG_LABEL_DEFN(__sram) = 0x60000000;
     SECTIONS_END
 }
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.mlt
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7211_rom.mlt
@@ -4,7 +4,8 @@ region sram 60000000 9c00 0 !
 region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000.
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section sram 0 1 0 0 1 0 1 0 60000000 60000000 !
 section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.h
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Feb 29 15:05:40 2000
+// eCos memory layout - Fri Oct 20 05:43:59 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0xfd7000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_sram (0x60000000)
 #define CYGMEM_REGION_sram_SIZE (0x9c00)
 #define CYGMEM_REGION_sram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x10000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xfd7000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.ldi
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 15:05:40 2000
+// eCos memory layout - Fri Oct 20 05:43:59 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0xfd7000
@@ -21,6 +23,7 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTION_sram (sram, 0x60000000, LMA_EQ_VMA)
     SECTIONS_END
 }
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.mlt
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_ram.mlt
@@ -10,5 +10,6 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section sram 0 1 0 1 1 0 1 0 60000000 60000000 !
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.h
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.h
@@ -1,10 +1,12 @@
-// eCos memory layout - Tue Feb 29 15:04:45 2000
+// eCos memory layout - Fri Oct 20 05:42:50 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0xfd7000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
@@ -14,6 +16,8 @@
 #define CYGMEM_REGION_rom (0xe0000000)
 #define CYGMEM_REGION_rom_SIZE (0x800000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x1000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xfd7000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.ldi
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Feb 29 15:04:45 2000
+// eCos memory layout - Fri Oct 20 05:42:50 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0xfd7000
@@ -23,6 +25,7 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x1000, FOLLOWING (.mmu_tables))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTION_sram (sram, 0x60000000, LMA_EQ_VMA)
     SECTIONS_END
 }
--- a/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.mlt
+++ b/packages/hal/arm/edb7xxx/current/include/pkgconf/mlt_arm_edb7212_rom.mlt
@@ -4,7 +4,8 @@ region sram 60000000 9c00 0 !
 region rom e0000000 800000 1 !This is ROM bank 0, physical address 0x00000000.When running eCos, this space is remapped to 0xE0000000.
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 1000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section sram 0 1 0 1 1 0 1 0 60000000 60000000 !
 section rom_vectors 0 1 0 1 1 1 1 1 e0000000 e0000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
--- a/packages/hal/arm/pid/current/ChangeLog
+++ b/packages/hal/arm/pid/current/ChangeLog
@@ -1,3 +1,11 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_arm_pid_ram.h:
+	* include/pkgconf/mlt_arm_pid_rom.h:
+	* include/pkgconf/mlt_arm_pid_ram.ldi:
+	* include/pkgconf/mlt_arm_pid_rom.ldi:
+	Regenerate
+
 2000-07-25  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* include/pkgconf/mlt_arm_pid_ram.h: 
--- a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_ram.h
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_ram.h
@@ -1,13 +1,17 @@
-// eCos memory layout - Tue Jul 25 18:20:21 2000
+// eCos memory layout - Fri Oct 20 05:31:09 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x80000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
 extern char CYG_LABEL_NAME (__heap1) [];
+#endif
 #define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
 #define CYGMEM_SECTION_heap1_SIZE (0x80000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_ram.ldi
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_ram.ldi
@@ -1,4 +1,4 @@
-// eCos memory layout - Tue Jul 25 18:20:21 2000
+// eCos memory layout - Fri Oct 20 05:31:09 2000
 
 // This is a generated file - do not edit
 
--- a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_rom.h
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Jul 25 18:27:20 2000
+// eCos memory layout - Fri Oct 20 05:30:30 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x80000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0x4000000)
 #define CYGMEM_REGION_rom_SIZE (0x80000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#ifndef __ASSEMBLER__
 extern char CYG_LABEL_NAME (__heap1) [];
+#endif
 #define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
 #define CYGMEM_SECTION_heap1_SIZE (0x80000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_rom.ldi
+++ b/packages/hal/arm/pid/current/include/pkgconf/mlt_arm_pid_rom.ldi
@@ -1,4 +1,4 @@
-// eCos memory layout - Tue Jul 25 18:27:20 2000
+// eCos memory layout - Fri Oct 20 05:30:30 2000
 
 // This is a generated file - do not edit
 
--- a/packages/hal/arm/sa11x0/assabet/current/ChangeLog
+++ b/packages/hal/arm/sa11x0/assabet/current/ChangeLog
@@ -1,3 +1,20 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_arm_sa11x0_assabet_ram.mlt:
+	* include/pkgconf/mlt_arm_sa11x0_assabet_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_arm_sa11x0_assabet_ram.h:
+	* include/pkgconf/mlt_arm_sa11x0_assabet_rom.h:
+	* include/pkgconf/mlt_arm_sa11x0_assabet_ram.ldi:
+	* include/pkgconf/mlt_arm_sa11x0_assabet_rom.ldi:
+	Regenerate
+
+2000-10-17  Gary Thomas  <gthomas@redhat.com>
+
+	* include/hal_platform_setup.h: Don't initialize "static" control
+	registers - power up value works and the values used kill latest boards.
+
 2000-10-09  Gary Thomas  <gthomas@redhat.com>
 
 	* src/lcd_support.c: Fix compile error if no kernel present.
--- a/packages/hal/arm/sa11x0/assabet/current/include/hal_platform_setup.h
+++ b/packages/hal/arm/sa11x0/assabet/current/include/hal_platform_setup.h
@@ -198,14 +198,14 @@ dram_table:
         .word   SA11X0_DRAM0_CAS_0,           0xAAAAAA7F
         .word   SA11X0_DRAM0_CAS_1,           0xAAAAAAAA
         .word   SA11X0_DRAM0_CAS_2,           0xAAAAAAAA
-        .word   SA11X0_STATIC_CONTROL_0,      0x4B384B38
-        .word   SA11X0_STATIC_CONTROL_1,      0x22212419
+//        .word   SA11X0_STATIC_CONTROL_0,      0x4B384B38
+//        .word   SA11X0_STATIC_CONTROL_1,      0x22212419
         .word   SA11X0_EXP_BUS_CONFIGURATION, 0x994A994A
         .word   SA11X0_REFRESH_CONFIGURATION, 0x49FC0327
         .word   SA11X0_DRAM2_CAS_0,           0xAAAAAA7F
         .word   SA11X0_DRAM2_CAS_1,           0xAAAAAAAA
         .word   SA11X0_DRAM2_CAS_2,           0xAAAAAAAA
-        .word   SA11X0_STATIC_CONTROL_2,      0x42194449
+//        .word   SA11X0_STATIC_CONTROL_2,      0x42194449
         .word   SA11X0_SMROM_CONFIGURATION,   0xAFCCAFCC
         .word   SA11X0_DRAM_CONFIGURATION,    0x72547254        // Disabled
         .word   0, 0
--- a/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.h
+++ b/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Sun Jun 04 12:17:47 2000
+// eCos memory layout - Fri Oct 20 05:56:24 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x2000000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x2000000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.ldi
+++ b/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Sun Jun 04 12:17:47 2000
+// eCos memory layout - Fri Oct 20 05:56:24 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x2000000
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.mlt
+++ b/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_ram.mlt
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.h
+++ b/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Sun Jun 04 12:19:07 2000
+// eCos memory layout - Fri Oct 20 05:56:55 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x2000000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0x50000000)
 #define CYGMEM_REGION_rom_SIZE (0x40000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x2000000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.ldi
+++ b/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Sun Jun 04 12:19:07 2000
+// eCos memory layout - Fri Oct 20 05:56:55 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x2000000
@@ -21,5 +23,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x8000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.mlt
+++ b/packages/hal/arm/sa11x0/assabet/current/include/pkgconf/mlt_arm_sa11x0_assabet_rom.mlt
@@ -3,7 +3,8 @@ region ram 0 2000000 0 !
 region rom 50000000 40000 1 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 8000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 50000000 50000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
--- a/packages/hal/arm/sa11x0/brutus/current/ChangeLog
+++ b/packages/hal/arm/sa11x0/brutus/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_arm_sa11x0_brutus_ram.mlt:
+	* include/pkgconf/mlt_arm_sa11x0_brutus_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_arm_sa11x0_brutus_ram.h:
+	* include/pkgconf/mlt_arm_sa11x0_brutus_rom.h:
+	* include/pkgconf/mlt_arm_sa11x0_brutus_ram.ldi:
+	* include/pkgconf/mlt_arm_sa11x0_brutus_rom.ldi:
+	Regenerate
+
 2000-09-17  Gary Thomas  <gthomas@redhat.com>
 
 	* cdl/hal_arm_sa11x0_brutus.cdl: Add platform/cpu identification strings.
--- a/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.h
+++ b/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.h
@@ -1,13 +1,17 @@
-// eCos memory layout - Tue Apr 04 20:19:06 2000
+// eCos memory layout - Fri Oct 20 05:47:38 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
-#define CYGMEM_REGION_ram_SIZE (0xBFFFFF)
+#define CYGMEM_REGION_ram_SIZE (0xbfffff)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x10000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xbfffff - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.ldi
+++ b/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.ldi
@@ -1,10 +1,12 @@
-// eCos memory layout - Tue Apr 04 20:19:06 2000
+// eCos memory layout - Fri Oct 20 05:47:38 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
-    ram : ORIGIN = 0, LENGTH = 0xBFFFFF
+    ram : ORIGIN = 0, LENGTH = 0xbfffff
 }
 
 SECTIONS
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.mlt
+++ b/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_ram.mlt
@@ -1,5 +1,5 @@
 version 0
-region ram 0 BFFFFF 0 !
+region ram 0 bfffff 0 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section rom_vectors 0 1 0 1 1 1 1 1 10000 10000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.h
+++ b/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Apr 04 20:19:06 2000
+// eCos memory layout - Fri Oct 20 05:48:15 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
-#define CYGMEM_REGION_ram_SIZE (0xBFFFFF)
+#define CYGMEM_REGION_ram_SIZE (0xbfffff)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0x40000000)
 #define CYGMEM_REGION_rom_SIZE (0x40000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
-#define CYGMEM_SECTION_reserved_SIZE (0x8000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xbfffff - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.ldi
+++ b/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.ldi
@@ -1,10 +1,12 @@
-// eCos memory layout - Tue Apr 04 20:19:06 2000
+// eCos memory layout - Fri Oct 20 05:48:15 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
-    ram : ORIGIN = 0, LENGTH = 0xBFFFFF
+    ram : ORIGIN = 0, LENGTH = 0xbfffff
     rom : ORIGIN = 0x40000000, LENGTH = 0x40000
 }
 
@@ -21,5 +23,6 @@ SECTIONS
     SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
     SECTION_data (ram, 0x8000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.mlt
+++ b/packages/hal/arm/sa11x0/brutus/current/include/pkgconf/mlt_arm_sa11x0_brutus_rom.mlt
@@ -1,9 +1,10 @@
 version 0
-region ram 0 BFFFFF 0 !
+region ram 0 bfffff 0 !
 region rom 40000000 40000 1 !
 section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
 section data 0 1 1 1 1 1 0 0 8000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 40000000 40000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
--- a/packages/hal/common/current/ChangeLog
+++ b/packages/hal/common/current/ChangeLog
@@ -1,3 +1,32 @@
+2000-10-23  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_stub.c: Made __mem_fault_handler pointer volatile.
+
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/drv_api.h (cyg_interrupt): Make dsr_count volatile to
+	prevent compilers optimizing accesses in the wrong place.
+
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* include/drv_api.h: Correct location of volatile keyword.
+	* src/drv_api.c: Same.
+
+2000-10-19  Gary Thomas  <gthomas@redhat.com>
+
+	* src/generic-stub.c (__process_packet): Add RedBoot identifier
+	in maintenance 'd' packet reply.
+
+2000-10-18  Jesper Skov  <jskov@redhat.com>
+
+	* include/hal_if.h (CYGPRI_HAL_IMPLEMENTS_IF_SERVICES): Set for
+	all non-RAM startup types.
+
+2000-10-13  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/stubrom/stubrom.c (cyg_start): Remove unnecessary call to
+	initialize_stub()
+
 2000-09-11  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* include/hal_tables.h (CYG_HAL_TABLE_EXTRA): Use new definition of
--- a/packages/hal/common/current/include/drv_api.h
+++ b/packages/hal/common/current/include/drv_api.h
@@ -151,8 +151,8 @@ typedef struct cyg_interrupt
     cyg_DSR_t           *dsr;
     CYG_ADDRWORD        data;
 
-    volatile struct cyg_interrupt *next_dsr;
-    cyg_int32           dsr_count;
+    struct cyg_interrupt* volatile next_dsr;
+    volatile cyg_int32             dsr_count;
     
 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
     struct cyg_interrupt *next;
--- a/packages/hal/common/current/include/hal_if.h
+++ b/packages/hal/common/current/include/hal_if.h
@@ -396,7 +396,7 @@ externC void hal_if_init(void);
 // Configuration control for the interface services.
 // When this is set, code should initialize the vector table wherever
 // appropriate.
-#if	defined(CYG_HAL_STARTUP_ROM) ||			\
+#if	!defined(CYG_HAL_STARTUP_RAM) ||		\
 	(	defined(CYG_HAL_STARTUP_RAM) &&		\
 		!defined(CYGSEM_HAL_USE_ROM_MONITOR))
 # define CYGPRI_HAL_IMPLEMENTS_IF_SERVICES
--- a/packages/hal/common/current/src/drv_api.c
+++ b/packages/hal/common/current/src/drv_api.c
@@ -64,7 +64,7 @@ static volatile cyg_int32 isr_disable_co
 
 volatile cyg_int32 dsr_disable_counter asm("cyg_scheduler_sched_lock");  // DSR disable counter
 
-static volatile cyg_interrupt *dsr_list;        // List of pending DSRs
+static cyg_interrupt* volatile dsr_list;        // List of pending DSRs
 
 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
 
@@ -85,7 +85,7 @@ static void post_dsr( cyg_interrupt *int
 
     HAL_DISABLE_INTERRUPTS(old_intr);
 
-        if( intr->dsr_count++ == 0 )
+    if( intr->dsr_count++ == 0 )
     {
         intr->next_dsr = dsr_list;
         dsr_list = intr;
@@ -102,7 +102,7 @@ static void call_dsrs(void)
     
     while( dsr_list != NULL )
     {
-        volatile cyg_interrupt *intr;
+        cyg_interrupt *intr;
         cyg_int32 count;
         CYG_INTERRUPT_STATE old_intr;
 
--- a/packages/hal/common/current/src/generic-stub.c
+++ b/packages/hal/common/current/src/generic-stub.c
@@ -1019,7 +1019,11 @@ int
     }
     case 'd':
       /* toggle debug flag */
-      strcpy(remcomOutBuffer, "eCos GDB stubs - built " __DATE__ " / " __TIME__);
+      strcpy(remcomOutBuffer, "eCos GDB stubs" 
+#ifdef CYGPKG_REDBOOT
+             " [with RedBoot]"
+#endif
+             " - built " __DATE__ " / " __TIME__);
       break;
 #endif
 #endif // __ECOS__
--- a/packages/hal/common/current/src/hal_stub.c
+++ b/packages/hal/common/current/src/hal_stub.c
@@ -769,7 +769,14 @@ int
 //-----------------------------------------------------------------------------
 // Memory accessor functions.
 
-volatile void *__mem_fault_handler = (void *)0;
+// The __mem_fault_handler pointer is volatile since it is only
+// set/cleared by the function below - which does not rely on any
+// other functions, so the compiler may decide to not bother updating
+// the pointer at all. If any of the memory accesses cause an
+// exception, the pointer must be set to ensure the exception handler
+// can make use of it.
+
+void* volatile __mem_fault_handler = (void *)0;
 
 /* These are the "arguments" to __do_read_mem and __do_write_mem, 
    which are passed as globals to avoid squeezing them thru
--- a/packages/hal/common/current/src/stubrom/stubrom.c
+++ b/packages/hal/common/current/src/stubrom/stubrom.c
@@ -46,8 +46,6 @@
 
 void cyg_start (void)
 {
-    initialize_stub();
-
     for(;;) breakpoint();
 }
 
--- a/packages/hal/i386/arch/current/ChangeLog
+++ b/packages/hal/i386/arch/current/ChangeLog
@@ -1,3 +1,9 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/vectors.S (_start): call constructors after initializing
+	stub so that they can be debugged. Reported to work okay
+	by Fabrice Gautier.
+
 2000-09-05  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* include/basetype.h: Use 32-byte alignment
--- a/packages/hal/i386/arch/current/src/vectors.S
+++ b/packages/hal/i386/arch/current/src/vectors.S
@@ -109,14 +109,14 @@
 	.extern hal_platform_init
 	call	hal_platform_init
 
-	.extern cyg_hal_invoke_constructors
-	call	cyg_hal_invoke_constructors
-
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 	.extern initialize_stub
 	call	initialize_stub
 #endif /* CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS */
 
+	.extern cyg_hal_invoke_constructors
+	call	cyg_hal_invoke_constructors
+
 # Unused IRQ vector 15 points to our 'struct'...
 	popl	%eax
 	movl	%eax, (15 * 8)
--- a/packages/hal/i386/linux/current/ChangeLog
+++ b/packages/hal/i386/linux/current/ChangeLog
@@ -1,3 +1,16 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_i386_linux_ram.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_i386_linux_ram.h:
+	* include/pkgconf/mlt_i386_linux_ram.ldi:
+	Regenerated
+
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* cdl/hal_i386_linux.cdl: Correct memory layout file name
+
 2000-03-03  John Dallaway  <jld@cygnus.co.uk>
 
 	* cdl/hal_i386_linux.cdl (CYGBLD_GLOBAL_COMMAND_PREFIX):
--- a/packages/hal/i386/linux/current/cdl/hal_i386_linux.cdl
+++ b/packages/hal/i386/linux/current/cdl/hal_i386_linux.cdl
@@ -156,7 +156,7 @@ cdl_package CYGPKG_HAL_I386_LINUX {
         display "Memory layout"
         flavor data
         no_define
-        calculated { "mlt_i386_linux_ram" }
+        calculated { "i386_linux_ram" }
 
         cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
             display "Memory layout linker script fragment"
--- a/packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.h
+++ b/packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 12:01:42 1999
+// eCos memory layout - Fri Oct 20 08:40:39 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x800000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x800000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.ldi
+++ b/packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.ldi
@@ -1,42 +1,18 @@
-//===========================================================================
-//
-// MLT linker script export
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 08:40:39 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x00000000, LENGTH = 0x800000
+    ram : ORIGIN = 0, LENGTH = 0x800000
 }
 
 SECTIONS
 {
     SECTIONS_BEGIN
-    SECTION_vectors (ram, 0x0, LMA_EQ_VMA)
+    SECTION_vectors (ram, 0, LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
@@ -47,5 +23,6 @@ SECTIONS
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x10);
     SECTIONS_END
 }
--- a/packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.mlt
+++ b/packages/hal/i386/linux/current/include/pkgconf/mlt_i386_linux_ram.mlt
@@ -10,4 +10,5 @@ section gcc_except_table 0 1 0 1 0 1 0 1
 section rel__got 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 10 0 0 0 0 0 0 !
--- a/packages/hal/i386/pc/current/ChangeLog
+++ b/packages/hal/i386/pc/current/ChangeLog
@@ -1,3 +1,20 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_i386_pc_floppy.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_i386_pc_floppy.h:
+	* include/pkgconf/mlt_i386_pc_ram.h:
+	* include/pkgconf/mlt_i386_pc_floppy.ldi:
+	* include/pkgconf/mlt_i386_pc_ram.ldi:
+	Regenerated
+
+2000-10-19  Jesper Skov  <jskov@redhat.com>
+
+	* include/pkgconf/mlt_i386_pc_ram.h: Added heap1 label.
+	* include/pkgconf/mlt_i386_pc_ram.mlt: Same.
+	* include/pkgconf/mlt_i386_pc_ram.ldi: Same.
+
 2000-08-18  Nick Garnett  <nickg@cygnus.co.uk>
 
 	* include/platform.inc:
--- a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.h
+++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 12:01:42 1999
+// eCos memory layout - Fri Oct 20 08:16:03 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
-#define CYGMEM_REGION_ram_SIZE (0xA0000)
+#define CYGMEM_REGION_ram_SIZE (0xa0000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xa0000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.ldi
+++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.ldi
@@ -1,36 +1,12 @@
-//===========================================================================
-//
-// MLT linker script export
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 08:16:03 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x0, LENGTH = 0xA0000
+    ram : ORIGIN = 0, LENGTH = 0xa0000
 }
 
 SECTIONS
@@ -47,5 +23,6 @@ SECTIONS
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.mlt
+++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_floppy.mlt
@@ -10,4 +10,5 @@ section gcc_except_table 0 1 0 1 0 1 0 1
 section rel.got 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.h
+++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 12:01:42 1999
+// eCos memory layout - Fri Oct 20 08:15:20 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
-#define CYGMEM_REGION_ram_SIZE (0xA0000)
+#define CYGMEM_REGION_ram_SIZE (0xa0000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xa0000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.ldi
+++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.ldi
@@ -1,36 +1,12 @@
-//===========================================================================
-//
-// MLT linker script export
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 08:15:20 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x0, LENGTH = 0xA0000
+    ram : ORIGIN = 0, LENGTH = 0xa0000
 }
 
 SECTIONS
@@ -47,5 +23,6 @@ SECTIONS
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.mlt
+++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_ram.mlt
@@ -10,4 +10,5 @@ section gcc_except_table 0 1 0 1 0 1 0 1
 section rel.got 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mips/arch/current/ChangeLog
+++ b/packages/hal/mips/arch/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_misc.c: Update __mem_fault_handler declaration.
+
 2000-09-15  Jesper Skov  <jskov@redhat.com>
 
 	* include/hal_intr.h (HAL_DEFAULT_ISR): Fix warning.
--- a/packages/hal/mips/arch/current/src/hal_misc.c
+++ b/packages/hal/mips/arch/current/src/hal_misc.c
@@ -73,7 +73,7 @@ externC void __handle_exception (void);
 
 externC HAL_SavedRegisters *_hal_registers;
 
-externC void *__mem_fault_handler;
+externC void* volatile __mem_fault_handler;
 
 externC cyg_uint8 cyg_hal_mips_process_fpe( HAL_SavedRegisters *regs );
 
--- a/packages/hal/mips/jmr3904/current/ChangeLog
+++ b/packages/hal/mips/jmr3904/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_mips_tx39_jmr3904_ram.mlt:
+	* include/pkgconf/mlt_mips_tx39_jmr3904_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_mips_tx39_jmr3904_ram.h:
+	* include/pkgconf/mlt_mips_tx39_jmr3904_rom.h:
+	* include/pkgconf/mlt_mips_tx39_jmr3904_ram.ldi:
+	* include/pkgconf/mlt_mips_tx39_jmr3904_rom.ldi:
+	Regenerated
+
 2000-09-11  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_mips_tx39_jmr3904.cdl: Fix startup type description.
--- a/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.h
+++ b/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Thu Mar 16 16:19:05 2000
+// eCos memory layout - Fri Oct 20 06:19:41 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x80008000)
 #define CYGMEM_REGION_ram_SIZE (0x78000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x80080000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.ldi
+++ b/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Mon Apr 03 21:03:12 2000
+// eCos memory layout - Fri Oct 20 06:19:41 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0x80008000, LENGTH = 0x78000
@@ -32,5 +34,6 @@ SECTIONS
     SECTION_lit4 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.mlt
+++ b/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_ram.mlt
@@ -21,4 +21,5 @@ section sdata 0 4 0 1 0 1 0 1 lit8 lit8 
 section lit8 0 8 0 1 0 1 0 1 lit4 lit4 !
 section lit4 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 8 0 1 0 0 0 0 !
+section bss 0 8 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.h
+++ b/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Thu Mar 16 16:47:52 2000
+// eCos memory layout - Fri Oct 20 06:20:57 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x80000200)
 #define CYGMEM_REGION_ram_SIZE (0x7fe00)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xbfc00000)
 #define CYGMEM_REGION_rom_SIZE (0x80000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x80080000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.ldi
+++ b/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Wed May 10 18:37:59 2000
+// eCos memory layout - Fri Oct 20 06:20:57 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0x80000200, LENGTH = 0x7fe00
@@ -33,5 +35,6 @@ SECTIONS
     SECTION_lit4 (ram, ALIGN (0x8), FOLLOWING (.lit8))
     SECTION_sbss (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.mlt
+++ b/packages/hal/mips/jmr3904/current/include/pkgconf/mlt_mips_tx39_jmr3904_rom.mlt
@@ -14,7 +14,8 @@ section sdata 0 8 1 1 0 1 0 1 lit8 lit8 
 section lit8 0 8 1 1 0 1 0 1 lit4 lit4 !
 section lit4 0 8 1 1 0 1 0 0 sbss !
 section sbss 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 8 0 1 0 0 0 0 !
+section bss 0 8 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 bfc00000 bfc00000 ROMISC ROMISC !
 section ROMISC 0 8 0 1 0 1 0 1 RELOCS RELOCS !
 section RELOCS 0 8 0 1 0 1 0 1 init init !
--- a/packages/hal/mips/sim/current/ChangeLog
+++ b/packages/hal/mips/sim/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_mips_tx39_sim_ram.mlt:
+	* include/pkgconf/mlt_mips_vr4300_sim_ram.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_mips_tx39_sim_ram.h:
+	* include/pkgconf/mlt_mips_vr4300_sim_ram.h:
+	* include/pkgconf/mlt_mips_tx39_sim_ram.ldi:
+	* include/pkgconf/mlt_mips_vr4300_sim_ram.ldi:
+	Regenerated
+
 2000-05-22  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_mips_sim.cdl: Doesn't support CTRLC.
--- a/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.h
+++ b/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Thu Mar 16 16:55:45 2000
+// eCos memory layout - Fri Oct 20 06:24:07 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x80000000)
 #define CYGMEM_REGION_ram_SIZE (0x80000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x80080000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.ldi
+++ b/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Mon Apr 03 21:10:37 2000
+// eCos memory layout - Fri Oct 20 06:24:07 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0x80000000, LENGTH = 0x80000
@@ -33,5 +35,6 @@ SECTIONS
     SECTION_lit4 (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.mlt
+++ b/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_tx39_sim_ram.mlt
@@ -22,4 +22,5 @@ section sdata 0 8 0 1 0 1 0 1 lit8 lit8 
 section lit8 0 8 0 1 0 1 0 1 lit4 lit4 !
 section lit4 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 8 0 1 0 0 0 0 !
+section bss 0 8 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.h
+++ b/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Thu Nov 25 22:16:12 1999
+// eCos memory layout - Fri Oct 20 06:25:00 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x80000000)
 #define CYGMEM_REGION_ram_SIZE (0x80000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x80080000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.ldi
+++ b/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.ldi
@@ -1,32 +1,8 @@
-//===========================================================================
-//
-// MLT linker script export - Wed Jan 13 10:41:43 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 06:25:00 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
@@ -49,5 +25,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.mlt
+++ b/packages/hal/mips/sim/current/include/pkgconf/mlt_mips_vr4300_sim_ram.mlt
@@ -12,4 +12,5 @@ section fixup 0 1 0 1 0 1 0 1 rel.dyn re
 section rel.dyn 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mips/tx39/current/ChangeLog
+++ b/packages/hal/mips/tx39/current/ChangeLog
@@ -1,3 +1,8 @@
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* include/var_cache.h (HAL_DCACHE_INVALIDATE_ALL): Move volatile
+	keyword before type.
+
 2000-08-03  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/mips_tx39.ld: Revert below change. It was correct before.
--- a/packages/hal/mips/tx39/current/include/var_cache.h
+++ b/packages/hal/mips/tx39/current/include/var_cache.h
@@ -117,15 +117,15 @@
 // otherwise. Hence we read bytes from the ROM space since this is
 // most likely to be code, and will not get out of sync even if it is not.
 #define HAL_DCACHE_INVALIDATE_ALL_DEFINED
-#define HAL_DCACHE_INVALIDATE_ALL()                                             \
-{                                                                               \
-    CYG_BYTE volatile *addr = (CYG_BYTE *)(0x9fc00000);                         \
-    CYG_BYTE volatile tmp = 0;                                                  \
-    int i;                                                                      \
-    for( i = 0; i < (HAL_DCACHE_SIZE*2); i += HAL_DCACHE_LINE_SIZE )            \
-    {                                                                           \
-        tmp = addr[i];                                                          \
-    }                                                                           \
+#define HAL_DCACHE_INVALIDATE_ALL()                                     \
+{                                                                       \
+    volatile CYG_BYTE *addr = (CYG_BYTE *)(0x9fc00000);                 \
+    volatile CYG_BYTE tmp = 0;                                          \
+    int i;                                                              \
+    for( i = 0; i < (HAL_DCACHE_SIZE*2); i += HAL_DCACHE_LINE_SIZE )    \
+    {                                                                   \
+        tmp = addr[i];                                                  \
+    }                                                                   \
 }
 
 // Synchronize the contents of the cache with memory.
--- a/packages/hal/mips/vrc4373/current/ChangeLog
+++ b/packages/hal/mips/vrc4373/current/ChangeLog
@@ -1,3 +1,18 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_ram.mlt:
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_rom.mlt:
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_romram.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_ram.h:
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_rom.h:
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_romram.h:
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_ram.ldi:
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_rom.ldi:
+	* include/pkgconf/mlt_mips_vr4300_vrc4373_romram.ldi:
+	Regenerated
+
 2000-09-15  Nick Garnett  <nickg@cygnus.co.uk>
 
 	* include/platform.inc: Added some extra ifdefs and code to try
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.h
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 13:39:59 1999
+// eCos memory layout - Fri Oct 20 06:25:55 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x80100000)
 #define CYGMEM_REGION_ram_SIZE (0x500000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x80600000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.ldi
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.ldi
@@ -1,32 +1,8 @@
-//===========================================================================
-//
-// MLT linker script export - Wed Jan 13 17:05:29 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 06:25:55 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
@@ -48,5 +24,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.mlt
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_ram.mlt
@@ -11,4 +11,5 @@ section fixup 0 1 0 1 0 1 0 1 rel.dyn re
 section rel.dyn 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.h
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Wed Nov 24 13:41:30 1999
+// eCos memory layout - Fri Oct 20 07:10:03 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
-#define CYGMEM_REGION_ram (0x80000200)
-#define CYGMEM_REGION_ram_SIZE (0x7fe00)
+#endif
+#define CYGMEM_REGION_ram (0x80000800)
+#define CYGMEM_REGION_ram_SIZE (0x7f800)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xbfc00000)
 #define CYGMEM_REGION_rom_SIZE (0x80000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-/*  */
-/* {{CFG_DATA */
-/* }}CFG_DATA */
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x80080000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.ldi
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.ldi
@@ -1,43 +1,19 @@
-//===========================================================================
-//
-// MLT linker script export - Wed Jan 13 10:44:34 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 07:10:03 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x80000800, LENGTH = 0x7F800
-    rom : ORIGIN = 0xBFC00000, LENGTH = 0x80000
+    ram : ORIGIN = 0x80000800, LENGTH = 0x7f800
+    rom : ORIGIN = 0xbfc00000, LENGTH = 0x80000
 }
 
 SECTIONS
 {
     SECTIONS_BEGIN
-    SECTION_rom_vectors (rom, 0xBFC00000, LMA_EQ_VMA)
+    SECTION_rom_vectors (rom, 0xbfc00000, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_ctors (rom, ALIGN (0x1), LMA_EQ_VMA)
@@ -49,5 +25,6 @@ SECTIONS
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, 0x80000800, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.mlt
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_rom.mlt
@@ -1,8 +1,9 @@
 version 0
-region ram 80000200 7fe00 0 !
+region ram 80000800 7f800 0 !
 region rom bfc00000 80000 1 !
-section data 0 1 1 1 1 1 0 0 80000200 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section data 0 1 1 1 1 1 0 0 80000800 bss !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 bfc00000 bfc00000 text text !
 section text 0 1 0 1 0 1 0 1 fini fini !
 section fini 0 1 0 1 0 1 0 1 ctors ctors !
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.h
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Thu Nov 25 06:54:39 1999
+// eCos memory layout - Fri Oct 20 06:27:12 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x80000000)
 #define CYGMEM_REGION_ram_SIZE (0x500000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x80500000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.ldi
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.ldi
@@ -1,6 +1,8 @@
-// eCos memory layout - Thu Nov 25 06:54:39 1999
+// eCos memory layout - Fri Oct 20 06:27:12 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
@@ -22,5 +24,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.mlt
+++ b/packages/hal/mips/vrc4373/current/include/pkgconf/mlt_mips_vr4300_vrc4373_romram.mlt
@@ -11,4 +11,5 @@ section fixup 0 1 0 1 0 1 0 1 rel.dyn re
 section rel.dyn 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mn10300/arch/current/ChangeLog
+++ b/packages/hal/mn10300/arch/current/ChangeLog
@@ -1,3 +1,7 @@
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_misc.c: Update __mem_fault_handler declaration.
+
 2000-09-04  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* include/basetype.h (CYGARC_ALIGNMENT): mn10300 has 4 byte alignment
--- a/packages/hal/mn10300/arch/current/src/hal_misc.c
+++ b/packages/hal/mn10300/arch/current/src/hal_misc.c
@@ -156,7 +156,7 @@ externC void __handle_exception (void);
 
 externC HAL_SavedRegisters *_hal_registers;
 
-externC void *__mem_fault_handler;
+externC void* volatile __mem_fault_handler;
 
 externC cyg_uint32
 cyg_hal_exception_handler(HAL_SavedRegisters *regs, CYG_WORD32 isr)
--- a/packages/hal/mn10300/sim/current/ChangeLog
+++ b/packages/hal/mn10300/sim/current/ChangeLog
@@ -1,3 +1,12 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_mn10300_am31_sim_ram.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_mn10300_am31_sim_ram.h:
+	* include/pkgconf/mlt_mn10300_am31_sim_ram.ldi:
+	Regenerated
+
 2000-02-16  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_mn10300_am31_sim.cdl: removed fix me
--- a/packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.h
+++ b/packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 13:10:23 1999
+// eCos memory layout - Fri Oct 20 08:25:16 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x48000000)
-#define CYGMEM_REGION_ram_SIZE (0x200000)
+#define CYGMEM_REGION_ram_SIZE (0x400000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x48400000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.ldi
+++ b/packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.ldi
@@ -1,42 +1,18 @@
-//===========================================================================
-//
-// MLT linker script export - Tue Jan 12 11:09:07 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 08:25:16 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x40000000, LENGTH = 0x200000
+    ram : ORIGIN = 0x48000000, LENGTH = 0x400000
 }
 
 SECTIONS
 {
     SECTIONS_BEGIN
-    SECTION_rom_vectors (ram, 0x40000000, LMA_EQ_VMA)
+    SECTION_rom_vectors (ram, 0x48000000, LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x1), LMA_EQ_VMA)
@@ -45,5 +21,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.mlt
+++ b/packages/hal/mn10300/sim/current/include/pkgconf/mlt_mn10300_am31_sim_ram.mlt
@@ -1,5 +1,5 @@
 version 0
-region ram 48000000 200000 0 !
+region ram 48000000 400000 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 48000000 48000000 text text !
 section text 0 1 0 1 0 1 0 1 fini fini !
 section fini 0 1 0 1 0 1 0 1 rodata rodata !
@@ -8,4 +8,5 @@ section rodata1 0 1 0 1 0 1 0 1 fixup fi
 section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mn10300/stb/current/ChangeLog
+++ b/packages/hal/mn10300/stb/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_mn10300_am33_stb_ram.mlt:
+	* include/pkgconf/mlt_mn10300_am33_stb_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_mn10300_am33_stb_ram.h:
+	* include/pkgconf/mlt_mn10300_am33_stb_rom.h:
+	* include/pkgconf/mlt_mn10300_am33_stb_ram.ldi:
+	* include/pkgconf/mlt_mn10300_am33_stb_rom.ldi:
+	Regenerated
+
 2000-03-20  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/plf_stub.c (cyg_hal_gdb_isr): Use serial 0 interrupt macros
--- a/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.h
+++ b/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 15:32:18 1999
+// eCos memory layout - Fri Oct 20 09:08:16 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
-#define CYGMEM_REGION_ram (0x48008000)
-#define CYGMEM_REGION_ram_SIZE (0x1f8000)
+#endif
+#define CYGMEM_REGION_ram (0x50080000)
+#define CYGMEM_REGION_ram_SIZE (0x400000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x50480000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.ldi
+++ b/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.ldi
@@ -1,32 +1,8 @@
-//===========================================================================
-//
-// MLT linker script export - Tue Jan 12 10:55:38 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 09:08:16 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
@@ -45,5 +21,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.mlt
+++ b/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_ram.mlt
@@ -1,6 +1,6 @@
 version 0
-region ram 48008000 1f8000 0 !
-section rom_vectors 0 1 0 1 1 1 1 1 48008000 48008000 text text !
+region ram 50080000 400000 0 !
+section rom_vectors 0 1 0 1 1 1 1 1 50080000 50080000 text text !
 section text 0 1 0 1 0 1 0 1 fini fini !
 section fini 0 1 0 1 0 1 0 1 rodata rodata !
 section rodata 0 1 0 1 0 1 0 1 rodata1 rodata1 !
@@ -8,4 +8,5 @@ section rodata1 0 1 0 1 0 1 0 1 fixup fi
 section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.h
+++ b/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Wed Nov 24 13:00:37 1999
+// eCos memory layout - Fri Oct 20 09:14:22 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_rom (0x40000000)
-#define CYGMEM_REGION_rom_SIZE (0x80000)
+#define CYGMEM_REGION_rom_SIZE (0x400000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-#define CYGMEM_REGION_ram (0x48000000)
-#define CYGMEM_REGION_ram_SIZE (0x200000)
+#define CYGMEM_REGION_ram (0x50000400)
+#define CYGMEM_REGION_ram_SIZE (0x800000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x50800400 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.ldi
+++ b/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.ldi
@@ -1,32 +1,8 @@
-//===========================================================================
-//
-// MLT linker script export - Tue Jan 13 10:14:27 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 09:14:22 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
@@ -46,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, 0x50000400, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.mlt
+++ b/packages/hal/mn10300/stb/current/include/pkgconf/mlt_mn10300_am33_stb_rom.mlt
@@ -1,6 +1,6 @@
 version 0
-region rom 40000000 80000 1 !
-region ram 48000000 200000 0 !
+region rom 40000000 400000 1 !
+region ram 50000400 800000 0 !
 section rom_vectors 0 1 0 1 1 1 1 1 40000000 40000000 text text !
 section text 0 1 0 1 0 1 0 1 fini fini !
 section fini 0 1 0 1 0 1 0 1 rodata rodata !
@@ -8,5 +8,6 @@ section rodata 0 1 0 1 0 1 0 1 rodata1 r
 section rodata1 0 1 0 1 0 1 0 1 fixup fixup !
 section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 0 0 1 data !
-section data 0 1 1 1 1 1 0 0 48000000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section data 0 1 1 1 1 1 0 0 50000400 bss !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/mn10300/stdeval1/current/ChangeLog
+++ b/packages/hal/mn10300/stdeval1/current/ChangeLog
@@ -1,3 +1,11 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_mn10300_am31_stdeval1_ram.h:
+	* include/pkgconf/mlt_mn10300_am31_stdeval1_rom.h:
+	* include/pkgconf/mlt_mn10300_am31_stdeval1_ram.ldi:
+	* include/pkgconf/mlt_mn10300_am31_stdeval1_rom.ldi:
+	Regenerated
+
 2000-07-25  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* include/pkgconf/mlt_mn10300_am31_stdeval1_ram.mlt: Add user-defined
--- a/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_ram.h
+++ b/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_ram.h
@@ -1,13 +1,17 @@
-// eCos memory layout - Tue Jul 25 19:35:27 2000
+// eCos memory layout - Fri Oct 20 08:26:30 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x48008000)
 #define CYGMEM_REGION_ram_SIZE (0x1f8000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
 extern char CYG_LABEL_NAME (__heap1) [];
+#endif
 #define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
 #define CYGMEM_SECTION_heap1_SIZE (0x48200000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_ram.ldi
+++ b/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_ram.ldi
@@ -1,4 +1,4 @@
-// eCos memory layout - Tue Jul 25 19:35:27 2000
+// eCos memory layout - Fri Oct 20 08:26:30 2000
 
 // This is a generated file - do not edit
 
--- a/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_rom.h
+++ b/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_rom.h
@@ -1,16 +1,20 @@
-// eCos memory layout - Tue Jul 25 19:36:26 2000
+// eCos memory layout - Fri Oct 20 08:27:18 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_rom (0x40000000)
 #define CYGMEM_REGION_rom_SIZE (0x80000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
 #define CYGMEM_REGION_ram (0x48000000)
 #define CYGMEM_REGION_ram_SIZE (0x200000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
 extern char CYG_LABEL_NAME (__heap1) [];
+#endif
 #define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
 #define CYGMEM_SECTION_heap1_SIZE (0x48200000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_rom.ldi
+++ b/packages/hal/mn10300/stdeval1/current/include/pkgconf/mlt_mn10300_am31_stdeval1_rom.ldi
@@ -1,4 +1,4 @@
-// eCos memory layout - Tue Jul 25 19:36:26 2000
+// eCos memory layout - Fri Oct 20 08:27:18 2000
 
 // This is a generated file - do not edit
 
--- a/packages/hal/powerpc/arch/current/ChangeLog
+++ b/packages/hal/powerpc/arch/current/ChangeLog
@@ -1,3 +1,17 @@
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_misc.c: Update __mem_fault_handler declaration.
+
+2000-10-20  Gary Thomas  <gthomas@redhat.com>
+
+	* src/hal_intr.c (hal_delay_us): 
+	* include/hal_intr.h (HAL_DELAY_US): New function.
+
+2000-10-16  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/hal_arch.h (CYGARC_JMP_BUF_SIZE): Define hal_jmp_buf
+	in terms of this.
+
 2000-08-15  Gary Thomas  <gthomas@redhat.com>
 
 	* src/hal_mk_defs.c: Export memory layout for use by assembly code.
--- a/packages/hal/powerpc/arch/current/include/hal_arch.h
+++ b/packages/hal/powerpc/arch/current/include/hal_arch.h
@@ -254,7 +254,9 @@ typedef struct {
     cyg_uint32 cr;
 } hal_jmp_buf_t;
 
-typedef cyg_uint32 hal_jmp_buf[sizeof(hal_jmp_buf_t) / sizeof(cyg_uint32)];
+#define CYGARC_JMP_BUF_SIZE      (sizeof(hal_jmp_buf_t) / sizeof(cyg_uint32))
+
+typedef cyg_uint32 hal_jmp_buf[ CYGARC_JMP_BUF_SIZE ];
 
 externC int hal_setjmp(hal_jmp_buf env);
 externC void hal_longjmp(hal_jmp_buf env, int val);
--- a/packages/hal/powerpc/arch/current/include/hal_intr.h
+++ b/packages/hal/powerpc/arch/current/include/hal_intr.h
@@ -392,6 +392,9 @@ externC void cyg_hal_default_exception_v
     CYG_MACRO_END
 #endif
 
+extern void hal_delay_us(int);
+#define HAL_DELAY_US(n) hal_delay_us(n)
+
 //--------------------------------------------------------------------------
 // Variant functions
 externC void hal_variant_IRQ_init(void);
--- a/packages/hal/powerpc/arch/current/src/hal_intr.c
+++ b/packages/hal/powerpc/arch/current/src/hal_intr.c
@@ -52,6 +52,31 @@ hal_IRQ_init(void)
     // No architecture general initialization, but the variant may have
     // provided some.
     hal_variant_IRQ_init();
+
+    // Initialize real-time clock (for delays, etc, even if kernel doesn't use it)
+    HAL_CLOCK_INITIALIZE(CYGNUM_HAL_RTC_PERIOD);
+}
+
+// Delay for some number of useconds.
+externC void 
+hal_delay_us(int us)
+{
+    cyg_uint32 old_dec, new_dec;
+    long ticks;
+    // Note: the system constant CYGNUM_HAL_RTC_PERIOD corresponds to 10,000us
+    // Scale the desired number of microseconds to be a number of decrementer ticks
+    if (CYGNUM_HAL_RTC_PERIOD > 10000) {
+        ticks = us * (CYGNUM_HAL_RTC_PERIOD * 100) / 1000000;
+    } else {
+        ticks = us / (CYGNUM_HAL_RTC_PERIOD * 100) / 1000000;
+    }
+    asm volatile("mfdec  %0;" : "=r"(old_dec) : );
+    while (ticks-- > 0) {
+        do {
+            asm volatile("mfdec  %0;" : "=r"(new_dec) : );        
+        } while (old_dec == new_dec);
+        old_dec = new_dec;
+    }
 }
 
 // -------------------------------------------------------------------------
--- a/packages/hal/powerpc/arch/current/src/hal_misc.c
+++ b/packages/hal/powerpc/arch/current/src/hal_misc.c
@@ -105,7 +105,7 @@ externC void __handle_exception (void);
 
 externC HAL_SavedRegisters *_hal_registers;
 
-externC void *__mem_fault_handler;
+externC void* volatile __mem_fault_handler;
 
 void
 cyg_hal_exception_handler(HAL_SavedRegisters *regs)
--- a/packages/hal/powerpc/cogent/current/ChangeLog
+++ b/packages/hal/powerpc/cogent/current/ChangeLog
@@ -1,3 +1,20 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_cogent_ram.h:
+	* include/pkgconf/mlt_powerpc_cogent_rom.h:
+	* include/pkgconf/mlt_powerpc_cogent_ram.ldi:
+	* include/pkgconf/mlt_powerpc_cogent_rom.ldi:
+	Regenerated with updated host tools
+
+2000-10-19  Jesper Skov  <jskov@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_cogent_ram.h: Added heap1 label.
+	* include/pkgconf/mlt_powerpc_cogent_ram.mlt: Same.
+	* include/pkgconf/mlt_powerpc_cogent_ram.ldi: Same.
+	* include/pkgconf/mlt_powerpc_cogent_rom.h: Same.
+	* include/pkgconf/mlt_powerpc_cogent_rom.mlt: Same.
+	* include/pkgconf/mlt_powerpc_cogent_rom.ldi: Same.
+
 2000-06-30  Jesper Skov  <jskov@redhat.com>
 
 	* src/plf_stub.c (hal_plf_stub_init): calling i/f macro
--- a/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.h
+++ b/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.h
@@ -1,22 +1,37 @@
-// eCos memory layout - Tue Jun 20 10:13:16 2000
+// eCos memory layout - Fri Oct 20 10:25:48 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x800000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vectors) [];
+#endif
+#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (__reserved_vectors))
 #define CYGMEM_SECTION_reserved_vectors_SIZE (0x3000)
-extern char CYG_LABEL_NAME (_reserved_vsr_table) [];
-#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (_reserved_vsr_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vsr_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (__reserved_vsr_table))
 #define CYGMEM_SECTION_reserved_vsr_table_SIZE (0x200)
-extern char CYG_LABEL_NAME (_reserved_virtual_table) [];
-#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (_reserved_virtual_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_virtual_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (__reserved_virtual_table))
 #define CYGMEM_SECTION_reserved_virtual_table_SIZE (0x100)
-extern char CYG_LABEL_NAME (_reserved_for_rom) [];
-#define CYGMEM_SECTION_reserved_for_rom (CYG_LABEL_NAME (_reserved_for_rom))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_for_rom) [];
+#endif
+#define CYGMEM_SECTION_reserved_for_rom (CYG_LABEL_NAME (__reserved_for_rom))
 #define CYGMEM_SECTION_reserved_for_rom_SIZE (0xcd00)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x800000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.ldi
+++ b/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Jun 20 10:13:16 2000
+// eCos memory layout - Fri Oct 20 10:25:48 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x800000
@@ -10,10 +12,10 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
-    __reserved_vectors = 0; . = __reserved_vectors + 0x3000;
-    __reserved_vsr_table = ALIGN (0x10); . = __reserved_vsr_table + 0x200;
-    __reserved_virtual_table = ALIGN (0x10); . = __reserved_virtual_table + 0x100;
-    __reserved_for_rom = ALIGN (0x10); . = __reserved_for_rom + 0xcd00;
+    CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
+    CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
+    CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
+    CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0xcd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
@@ -24,5 +26,6 @@ SECTIONS
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.mlt
+++ b/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_ram.mlt
@@ -13,4 +13,5 @@ section fixup 0 4 0 1 0 1 0 1 gcc_except
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.h
+++ b/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.h
@@ -1,22 +1,35 @@
-// eCos memory layout - Tue Jun 20 10:15:36 2000
+// eCos memory layout - Fri Oct 20 10:26:12 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x800000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xfff00000)
 #define CYGMEM_REGION_rom_SIZE (0x40000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vectors) [];
+#endif
+#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (__reserved_vectors))
 #define CYGMEM_SECTION_reserved_vectors_SIZE (0x3000)
-extern char CYG_LABEL_NAME (_reserved_vsr_table) [];
-#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (_reserved_vsr_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vsr_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (__reserved_vsr_table))
 #define CYGMEM_SECTION_reserved_vsr_table_SIZE (0x200)
-extern char CYG_LABEL_NAME (_reserved_virtual_table) [];
-#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (_reserved_virtual_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_virtual_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (__reserved_virtual_table))
 #define CYGMEM_SECTION_reserved_virtual_table_SIZE (0x100)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x800000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.ldi
+++ b/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Jun 20 10:15:36 2000
+// eCos memory layout - Fri Oct 20 10:26:12 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x800000
@@ -18,11 +20,12 @@ SECTIONS
     SECTION_rodata (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
-    __reserved_vectors = 0; . = __reserved_vectors + 0x3000;
-    __reserved_vsr_table = ALIGN (0x10); . = __reserved_vsr_table + 0x200;
-    __reserved_virtual_table = ALIGN (0x10); . = __reserved_virtual_table + 0x100;
+    CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
+    CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
+    CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
     SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.mlt
+++ b/packages/hal/powerpc/cogent/current/include/pkgconf/mlt_powerpc_cogent_rom.mlt
@@ -6,7 +6,8 @@ section reserved_vsr_table 200 10 0 0 0 
 section reserved_virtual_table 100 10 0 0 0 1 0 0 data !
 section data 0 10 1 1 0 1 0 0 sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section vectors 0 1 0 1 1 1 1 1 fff00000 fff00000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 8 0 1 0 1 0 1 rodata1 rodata1 !
--- a/packages/hal/powerpc/fads/current/ChangeLog
+++ b/packages/hal/powerpc/fads/current/ChangeLog
@@ -1,3 +1,18 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_fads_ram.mlt:
+	Repair RAM layout
+
+	* include/pkgconf/mlt_powerpc_fads_ram.mlt:
+	* include/pkgconf/mlt_powerpc_fads_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_powerpc_fads_ram.h:
+	* include/pkgconf/mlt_powerpc_fads_rom.h:
+	* include/pkgconf/mlt_powerpc_fads_ram.ldi:
+	* include/pkgconf/mlt_powerpc_fads_rom.ldi:
+	Regenerated
+
 2000-07-17  Jesper Skov  <jskov@redhat.com>
 
 	* src/hal_aux.c (hal_platform_init): Don't call hal_if_init just
--- a/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.h
+++ b/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.h
@@ -1,10 +1,37 @@
-// eCos memory layout - Wed Nov 24 15:24:30 1999
+// eCos memory layout - Fri Oct 20 11:13:03 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x800000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vectors) [];
+#endif
+#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (__reserved_vectors))
+#define CYGMEM_SECTION_reserved_vectors_SIZE (0x3000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vsr_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (__reserved_vsr_table))
+#define CYGMEM_SECTION_reserved_vsr_table_SIZE (0x200)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_virtual_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (__reserved_virtual_table))
+#define CYGMEM_SECTION_reserved_virtual_table_SIZE (0x100)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_for_rom) [];
+#endif
+#define CYGMEM_SECTION_reserved_for_rom (CYG_LABEL_NAME (__reserved_for_rom))
+#define CYGMEM_SECTION_reserved_for_rom_SIZE (0xcd00)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x800000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.ldi
+++ b/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.ldi
@@ -1,45 +1,21 @@
-//===========================================================================
-//
-// RAM startup linker control script
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 11:13:03 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x00000000, LENGTH = 0x800000
+    ram : ORIGIN = 0, LENGTH = 0x800000
 }
 
 SECTIONS
 {
     SECTIONS_BEGIN
-    __reserved_vectors = 0; . = __reserved_vectors + 0x3000;
-    __reserved_vsr_table = ALIGN (0x1); . = __reserved_vsr_table + 0x200;
-    __reserved_virtual_table = ALIGN (0x1); . = __reserved_virtual_table + 0x100;
-    __reserved_for_rom = ALIGN (0x1); . = __reserved_for_rom + 0xcd00;
+    CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
+    CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
+    CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
+    CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0xcd00;
     SECTION_vectors (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
@@ -50,5 +26,6 @@ SECTIONS
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.mlt
+++ b/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_ram.mlt
@@ -1,9 +1,9 @@
 version 0
 region ram 0 800000 0 !
 section reserved_vectors 3000 1 0 0 1 1 1 1 0 0 reserved_vsr_table reserved_vsr_table !
-section reserved_vsr_table 200 1 0 0 1 1 1 1 0 0 reserved_virtual_table reserved_virtual_table !
-section reserved_virtual_table 100 1 0 0 1 1 1 1 0 0 reserved_for_rom reserved_for_rom !
-section reserved_for_rom cd00 1 0 0 0 1 0 1  vectors vectors !
+section reserved_vsr_table 200 1 0 0 0 1 0 1 reserved_virtual_table reserved_virtual_table !
+section reserved_virtual_table 100 1 0 0 0 1 0 1 reserved_for_rom reserved_for_rom !
+section reserved_for_rom cd00 1 0 0 0 1 0 1 vectors vectors !
 section vectors 0 4 0 1 0 1 0 1 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
@@ -13,4 +13,5 @@ section fixup 0 4 0 1 0 1 0 1 gcc_except
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.h
+++ b/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.h
@@ -1,19 +1,20 @@
-// eCos memory layout - Wed Nov 24 11:43:46 1999
+// eCos memory layout - Fri Oct 20 11:14:08 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x100000)
 #define CYGMEM_REGION_ram_SIZE (0x700000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0x2800000)
 #define CYGMEM_REGION_rom_SIZE (0x40000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-/*  */
-/*  */
-/*  */
-/*  */
-/* {{CFG_DATA */
-/* }}CFG_DATA */
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x800000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.ldi
+++ b/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.ldi
@@ -1,37 +1,13 @@
-//===========================================================================
-//
-// ROM startup linker control script
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 11:14:08 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    rom : ORIGIN = 0x02800000, LENGTH = 0x40000    // kevinh - FADS flash base
-    ram : ORIGIN = 0x00100000, LENGTH = 0x700000
+    ram : ORIGIN = 0x100000, LENGTH = 0x700000
+    rom : ORIGIN = 0x2800000, LENGTH = 0x40000
 }
 
 SECTIONS
@@ -47,5 +23,6 @@ SECTIONS
     SECTION_data (ram, 0x100000, FOLLOWING (.gcc_except_table))
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.mlt
+++ b/packages/hal/powerpc/fads/current/include/pkgconf/mlt_powerpc_fads_rom.mlt
@@ -3,7 +3,8 @@ region ram 100000 700000 0 !
 region rom 2800000 40000 1 !
 section data 0 1 1 1 1 1 0 0 100000 sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section vectors 0 1 0 1 1 1 1 1 2800000 2800000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 8 0 1 0 1 0 1 rodata1 rodata1 !
--- a/packages/hal/powerpc/mbx/current/ChangeLog
+++ b/packages/hal/powerpc/mbx/current/ChangeLog
@@ -1,3 +1,43 @@
+2000-10-20  Gary Thomas  <gthomas@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_mbx_ram.mlt: 
+	* include/pkgconf/mlt_powerpc_mbx_ram.ldi: 
+	* include/pkgconf/mlt_powerpc_mbx_ram.h: 
+	Increase reserved memory - required by RedBoot.
+
+	* misc/redboot_ROM.cfg: 
+	* misc/redboot_RAM.cfg: 
+	* images/redboot_ROM.srec: 
+	* images/redboot_ROM.img: 
+	* images/redboot_ROM.bin: 
+	* images/redboot_RAM.bin: 
+	* images/redboot_RAM.img: 
+	* images/redboot_RAM.srec: New file(s).
+
+	* cdl/hal_powerpc_mbx.cdl: Add RedBoot configuration rules.
+
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* tests/mbxtime.cxx: Ensure default priority constructors
+	are called.
+
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_mbx_ram.h:
+	* include/pkgconf/mlt_powerpc_mbx_rom.h:
+	* include/pkgconf/mlt_powerpc_mbx_ram.ldi:
+	* include/pkgconf/mlt_powerpc_mbx_rom.ldi:
+	Regenerated with updated host tools
+
+2000-10-19  Jesper Skov  <jskov@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_mbx_ram.h: Added heap1 label.
+	* include/pkgconf/mlt_powerpc_mbx_ram.mlt: Same.
+	* include/pkgconf/mlt_powerpc_mbx_ram.ldi: Same.
+	* include/pkgconf/mlt_powerpc_mbx_rom.h: Same.
+	* include/pkgconf/mlt_powerpc_mbx_rom.mlt: Same.
+	* include/pkgconf/mlt_powerpc_mbx_rom.ldi: Same.
+
 2000-09-17  Gary Thomas  <gthomas@redhat.com>
 
 	* cdl/hal_powerpc_mbx.cdl: Add platform/cpu identification strings.
--- a/packages/hal/powerpc/mbx/current/cdl/hal_powerpc_mbx.cdl
+++ b/packages/hal/powerpc/mbx/current/cdl/hal_powerpc_mbx.cdl
@@ -321,4 +321,33 @@ cdl_package CYGPKG_HAL_POWERPC_MBX {
             application. This enables features such as utilizing a separate
             interrupt stack when exceptions are generated."
     }
+
+    cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
+        display       "Redboot HAL options"
+        flavor        none
+        no_define
+        parent        CYGPKG_REDBOOT
+        active_if     CYGPKG_REDBOOT
+        description   "
+            This option lists the target's requirements for a valid Redboot
+            configuration."
+
+        cdl_option CYGBLD_BUILD_REDBOOT_BIN {
+            display       "Build Redboot ROM binary image"
+            active_if     CYGBLD_BUILD_REDBOOT
+            default_value 1
+            no_define
+            description "This option enables the conversion of the Redboot ELF
+                         image to a binary image suitable for ROM programming."
+
+#            compile -library=libextras.a redboot_cmds.c
+    
+            make -priority 325 {
+                <PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
+                $(OBJCOPY) --strip-debug $< $(@:.bin=.img) 
+                $(OBJCOPY) -O srec $< $(@:.bin=.srec)
+                $(OBJCOPY) -O binary $< $@
+            }
+        }
+    }
 }
new file mode 100644
index 0000000000000000000000000000000000000000..9463a5c92321e18b78aa1c8fa38f51581ae69523
GIT binary patch
literal 79848
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
new file mode 100644
index 0000000000000000000000000000000000000000..a1dae2045a17c44ca38c7e3377c053edf9b02eeb
GIT binary patch
literal 181215
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
J$kay9{{dLjoofI9
new file mode 100644
--- /dev/null
+++ b/packages/hal/powerpc/mbx/current/images/redboot_RAM.srec
@@ -0,0 +1,3807 @@
+S02B00002F776F726B2F6D62782F726564626F6F742F52414D2F696E7374616C6C2F62696E2F726564626F6F07
+S2190200007C7143A67C9243A67CB343A67C80002638A0000054B1
+S219020015A5D1BE3C600000606330007C63282E7CA802A67C6827
+S21902002A03A6386000004E80002000000000000000000000008B
+S21902003F000000000000000000000000000000000000000000A5
+S21902005400000000000000000000000000000000000000000090
+S2190200690000000000000000000000000000000000000000007B
+S21902007E00000000000000000000000000000000000000000066
+S21902009300000000000000000000000000000000000000000051
+S2190200A80000000000000000000000000000000000000000003C
+S2190200BD00000000000000000000000000000000000000000027
+S2190200D200000000000000000000000000000000000000000012
+S2190200E7000000000000000000000000000000000000000000FD
+S2190200FC000000003C600002606320007C6803A64E80002000EC
+S219020111000000000000000000000000000000000000000000D2
+S219020126000000000000000000000000000000000000000000BD
+S21902013B000000000000000000000000000000000000000000A8
+S21902015000000000000000000000000000000000000000000093
+S2190201650000000000000000000000000000000000000000007E
+S21902017A00000000000000000000000000000000000000000069
+S21902018F00000000000000000000000000000000000000000054
+S2190201A40000000000000000000000000000000000000000003F
+S2190201B90000000000000000000000000000000000000000002A
+S2190201CE00000000000000000000000000000000000000000015
+S2190201E300000000000000000000000000000000000000000000
+S2190201F800000000000000007C7143A67C9243A67CB343A67C8A
+S21902020D80002638A0020054A5D1BE3C600000606330007C635F
+S219020222282E7CA802A67C6803A6386002004E80002000000089
+S219020237000000000000000000000000000000000000000000AB
+S21902024C00000000000000000000000000000000000000000096
+S21902026100000000000000000000000000000000000000000081
+S2190202760000000000000000000000000000000000000000006C
+S21902028B00000000000000000000000000000000000000000057
+S2190202A000000000000000000000000000000000000000000042
+S2190202B50000000000000000000000000000000000000000002D
+S2190202CA00000000000000000000000000000000000000000018
+S2190202DF00000000000000000000000000000000000000000003
+S2190202F40000000000000000000000007C7143A67C9243A67CA5
+S219020309B343A67C80002638A0030054A5D1BE3C600000606358
+S21902031E30007C63282E7CA802A67C6803A6386003004E80009C
+S2190203332000000000000000000000000000000000000000008E
+S21902034800000000000000000000000000000000000000000099
+S21902035D00000000000000000000000000000000000000000084
+S2190203720000000000000000000000000000000000000000006F
+S2190203870000000000000000000000000000000000000000005A
+S21902039C00000000000000000000000000000000000000000045
+S2190203B100000000000000000000000000000000000000000030
+S2190203C60000000000000000000000000000000000000000001B
+S2190203DB00000000000000000000000000000000000000000006
+S2190203F0000000000000000000000000000000007C7143A67C9F
+S2190204059243A67CB343A67C80002638A0040054A5D1BE3C6026
+S21902041A0000606330007C63282E7CA802A67C6803A6386004A9
+S21902042F004E80002000000000000000000000000000000000C3
+S2190204440000000000000000000000000000000000000000009C
+S21902045900000000000000000000000000000000000000000087
+S21902046E00000000000000000000000000000000000000000072
+S2190204830000000000000000000000000000000000000000005D
+S21902049800000000000000000000000000000000000000000048
+S2190204AD00000000000000000000000000000000000000000033
+S2190204C20000000000000000000000000000000000000000001E
+S2190204D700000000000000000000000000000000000000000009
+S2190204EC00000000000000000000000000000000000000007C78
+S2190205017143A67C9243A67CB343A67C80002638A0050054A57D
+S219020516D1BE3C600000606330007C63282E7CA802A67C6803C3
+S21902052BA6386005004E80002000000000000000000000000083
+S2190205400000000000000000000000000000000000000000009F
+S2190205550000000000000000000000000000000000000000008A
+S21902056A00000000000000000000000000000000000000000075
+S21902057F00000000000000000000000000000000000000000060
+S2190205940000000000000000000000000000000000000000004B
+S2190205A900000000000000000000000000000000000000000036
+S2190205BE00000000000000000000000000000000000000000021
+S2190205D30000000000000000000000000000000000000000000C
+S2190205E8000000000000000000000000000000000000000000F7
+S2190205FD0000007C7143A67C9243A67CB343A67C80002638A003
+S219020612060054A5D1BE3C600000606330007C63282E7CA80254
+S219020627A67C6803A6386006004E8000200000000000000000F8
+S21902063C000000000000000000000000000000000000000000A2
+S2190206510000000000000000000000000000000000000000008D
+S21902066600000000000000000000000000000000000000000078
+S21902067B00000000000000000000000000000000000000000063
+S2190206900000000000000000000000000000000000000000004E
+S2190206A500000000000000000000000000000000000000000039
+S2190206BA00000000000000000000000000000000000000000024
+S2190206CF0000000000000000000000000000000000000000000F
+S2190206E4000000000000000000000000000000000000000000FA
+S2190206F9000000000000007C7143A67C9243A67CB343A67C8004
+S21902070E002638A0070054A5D1BE3C600000606330007C6328AC
+S2190207232E7CA802A67C6803A6386007004E80002000000000A6
+S219020738000000000000000000000000000000000000000000A5
+S21902074D00000000000000000000000000000000000000000090
+S2190207620000000000000000000000000000000000000000007B
+S21902077700000000000000000000000000000000000000000066
+S21902078C00000000000000000000000000000000000000000051
+S2190207A10000000000000000000000000000000000000000003C
+S2190207B600000000000000000000000000000000000000000027
+S2190207CB00000000000000000000000000000000000000000012
+S2190207E0000000000000000000000000000000000000000000FD
+S2190207F500000000000000000000007C7143A67C9243A67CB3EC
+S21902080A43A67C80002638A0080054A5D1BE3C600000606330D0
+S21902081F007C63282E7CA802A67C6803A6386008004E800020A1
+S219020834000000000000000000000000000000000000000000A8
+S21902084900000000000000000000000000000000000000000093
+S21902085E0000000000000000000000000000000000000000007E
+S21902087300000000000000000000000000000000000000000069
+S21902088800000000000000000000000000000000000000000054
+S21902089D0000000000000000000000000000000000000000003F
+S2190208B20000000000000000000000000000000000000000002A
+S2190208C700000000000000000000000000000000000000000015
+S2190208DC00000000000000000000000000000000000000000000
+S2190208F10000000000000000000000000000007C7143A67C9207
+S21902090643A67CB343A67C80002638A0090054A5D1BE3C6000AD
+S21902091B00606330007C63282E7CA802A67C6803A6386009009E
+S2190209304E8000200000000000000000000000000000000000BD
+S21902094500000000000000000000000000000000000000000096
+S21902095A00000000000000000000000000000000000000000081
+S21902096F0000000000000000000000000000000000000000006C
+S21902098400000000000000000000000000000000000000000057
+S21902099900000000000000000000000000000000000000000042
+S2190209AE0000000000000000000000000000000000000000002D
+S2190209C300000000000000000000000000000000000000000018
+S2190209D800000000000000000000000000000000000000000003
+S2190209ED000000000000000000000000000000000000007C7101
+S219020A0243A67C9243A67CB343A67C80002638A00A0054A5D112
+S219020A17BE3C600000606330007C63282E7CA802A67C6803A6E8
+S219020A2C38600A004E800020000000000000000000000000001E
+S219020A4100000000000000000000000000000000000000000099
+S219020A5600000000000000000000000000000000000000000084
+S219020A6B0000000000000000000000000000000000000000006F
+S219020A800000000000000000000000000000000000000000005A
+S219020A9500000000000000000000000000000000000000000045
+S219020AAA00000000000000000000000000000000000000000030
+S219020ABF0000000000000000000000000000000000000000001B
+S219020AD400000000000000000000000000000000000000000006
+S219020AE9000000000000000000000000000000000000000000F1
+S219020AFE00007C7143A67C9243A67CB343A67C80002638A00BF2
+S219020B130054A5D1BE3C600000606330007C63282E7CA802A6AE
+S219020B287C6803A638600B004E80002000000000000000000093
+S219020B3D0000000000000000000000000000000000000000009C
+S219020B5200000000000000000000000000000000000000000087
+S219020B6700000000000000000000000000000000000000000072
+S219020B7C0000000000000000000000000000000000000000005D
+S219020B9100000000000000000000000000000000000000000048
+S219020BA600000000000000000000000000000000000000000033
+S219020BBB0000000000000000000000000000000000000000001E
+S219020BD000000000000000000000000000000000000000000009
+S219020BE5000000000000000000000000000000000000000000F4
+S219020BFA0000000000007C7143A67C9243A67CB343A67C8000FE
+S219020C0F2638A00C0054A5D1BE3C600000606330007C63282E73
+S219020C247CA802A67C6803A638600C004E8000200000000000C9
+S219020C390000000000000000000000000000000000000000009F
+S219020C4E0000000000000000000000000000000000000000008A
+S219020C6300000000000000000000000000000000000000000075
+S219020C7800000000000000000000000000000000000000000060
+S219020C8D0000000000000000000000000000000000000000004B
+S219020CA200000000000000000000000000000000000000000036
+S219020CB700000000000000000000000000000000000000000021
+S219020CCC0000000000000000000000000000000000000000000C
+S219020CE1000000000000000000000000000000000000000000F7
+S219020CF6000000000000000000007C7143A67C9243A67CB343A3
+S219020D0BA67C80002638A00D0054A5D1BE3C6000006063300008
+S219020D207C63282E7CA802A67C6803A638600D004E8000200096
+S219020D35000000000000000000000000000000000000000000A2
+S219020D4A0000000000000000000000000000000000000000008D
+S219020D5F00000000000000000000000000000000000000000078
+S219020D7400000000000000000000000000000000000000000063
+S219020D890000000000000000000000000000000000000000004E
+S219020D9E00000000000000000000000000000000000000000039
+S219020DB300000000000000000000000000000000000000000024
+S219020DC80000000000000000000000000000000000000000000F
+S219020DDD000000000000000000000000000000000000000000FA
+S219020DF200000000000000000000000000007C7143A67C9243BE
+S219020E07A67CB343A67C80002638A00E0054A5D1BE3C600000E5
+S219020E1C606330007C63282E7CA802A67C6803A638600E004E45
+S219020E3180002000000000000000000000000000000000000005
+S219020E4600000000000000000000000000000000000000000090
+S219020E5B0000000000000000000000000000000000000000007B
+S219020E7000000000000000000000000000000000000000000066
+S219020E8500000000000000000000000000000000000000000051
+S219020E9A0000000000000000000000000000000000000000003C
+S219020EAF00000000000000000000000000000000000000000027
+S219020EC400000000000000000000000000000000000000000012
+S219020ED9000000000000000000000000000000000000000000FD
+S219020EEE0000000000000000000000000000000000007C7143B8
+S219020F03A67C9243A67CB343A67C80002638A00F0054A5D1BE8C
+S219020F183C600000606330007C63282E7CA802A67C6803A63868
+S219020F2D600F004E80002000000000000000000000000000004B
+S219020F4200000000000000000000000000000000000000000093
+S219020F570000000000000000000000000000000000000000007E
+S219020F6C00000000000000000000000000000000000000000069
+S219020F8100000000000000000000000000000000000000000054
+S219020F960000000000000000000000000000000000000000003F
+S219020FAB0000000000000000000000000000000000000000002A
+S219020FC000000000000000000000000000000000000000000015
+S219020FD500000000000000000000000000000000000000000000
+S219020FEA000000000000000000000000000000000000000000EB
+S219020FFF007C7143A67C9243A67CB343A67C80002638A01000E7
+S21902101454A5D1BE3C600000606330007C63282E7CA802A67C2C
+S2190210296803A6386010004E8000200000000000000000000004
+S21902103E00000000000000000000000000000000000000000096
+S21902105300000000000000000000000000000000000000000081
+S2190210680000000000000000000000000000000000000000006C
+S21902107D00000000000000000000000000000000000000000057
+S21902109200000000000000000000000000000000000000000042
+S2190210A70000000000000000000000000000000000000000002D
+S2190210BC00000000000000000000000000000000000000000018
+S2190210D100000000000000000000000000000000000000000003
+S2190210E6000000000000000000000000000000000000000000EE
+S2190210FB00000000007C7143A67C9243A67CB343A67C800026D2
+S21902111038A0110054A5D1BE3C600000606330007C63282E7C12
+S219021125A802A67C6803A6386011004E8000200000000000003A
+S21902113A00000000000000000000000000000000000000000099
+S21902114F00000000000000000000000000000000000000000084
+S2190211640000000000000000000000000000000000000000006F
+S2190211790000000000000000000000000000000000000000005A
+S21902118E00000000000000000000000000000000000000000045
+S2190211A300000000000000000000000000000000000000000030
+S2190211B80000000000000000000000000000000000000000001B
+S2190211CD00000000000000000000000000000000000000000006
+S2190211E2000000000000000000000000000000000000000000F1
+S2190211F70000000000000000007C7143A67C9243A67CB343A6F7
+S21902120C7C80002638A0120054A5D1BE3C600000606330007C27
+S21902122163282E7CA802A67C6803A6386012004E800020000007
+S2190212360000000000000000000000000000000000000000009C
+S21902124B00000000000000000000000000000000000000000087
+S21902126000000000000000000000000000000000000000000072
+S2190212750000000000000000000000000000000000000000005D
+S21902128A00000000000000000000000000000000000000000048
+S21902129F00000000000000000000000000000000000000000033
+S2190212B40000000000000000000000000000000000000000001E
+S2190212C900000000000000000000000000000000000000000009
+S2190212DE000000000000000000000000000000000000000000F4
+S2190212F3000000000000000000000000007C7143A67C9243A612
+S2190213087CB343A67C80002638A0130054A5D1BE3C6000006020
+S21902131D6330007C63282E7CA802A67C6803A6386013004E801A
+S2190213320020000000000000000000000000000000000000007F
+S2190213470000000000000000000000000000000000000000008A
+S21902135C00000000000000000000000000000000000000000075
+S21902137100000000000000000000000000000000000000000060
+S2190213860000000000000000000000000000000000000000004B
+S21902139B00000000000000000000000000000000000000000036
+S2190213B000000000000000000000000000000000000000000021
+S2190213C50000000000000000000000000000000000000000000C
+S2190213DA000000000000000000000000000000000000000000F7
+S2190213EF00000000000000000000000000000000007C7143A60C
+S2190214047C9243A67CB343A67C80002638A0140054A5D1BE3CEB
+S219021419600000606330007C63282E7CA802A67C6803A638603E
+S21902142E14004E800020000000000000000000000000000000A0
+S2190214430000000000000000000000000000000000000000008D
+S21902145800000000000000000000000000000000000000000078
+S21902146D00000000000000000000000000000000000000000063
+S2190214820000000000000000000000000000000000000000004E
+S21902149700000000000000000000000000000000000000000039
+S2190214AC00000000000000000000000000000000000000000024
+S2190214C10000000000000000000000000000000000000000000F
+S2190214D6000000000000000000000000000000000000000000FA
+S2190214EB000000000000000000000000000000000000000000E5
+S2190215007C7143A67C9243A67CB343A67C80002638A015005487
+S219021515A5D1BE3C600000606330007C63282E7CA802A67C6812
+S21902152A03A6386015004E800020000000000000000000000061
+S21902153F00000000000000000000000000000000000000000090
+S2190215540000000000000000000000000000000000000000007B
+S21902156900000000000000000000000000000000000000000066
+S21902157E00000000000000000000000000000000000000000051
+S2190215930000000000000000000000000000000000000000003C
+S2190215A800000000000000000000000000000000000000000027
+S2190215BD00000000000000000000000000000000000000000012
+S2190215D2000000000000000000000000000000000000000000FD
+S2190215E7000000000000000000000000000000000000000000E8
+S2190215FC000000007C7143A67C9243A67CB343A67C8000263894
+S219021611A0160054A5D1BE3C600000606330007C63282E7CA897
+S21902162602A67C6803A6386016004E80002000000000000000D7
+S21902163B00000000000000000000000000000000000000000093
+S2190216500000000000000000000000000000000000000000007E
+S21902166500000000000000000000000000000000000000000069
+S21902167A00000000000000000000000000000000000000000054
+S21902168F0000000000000000000000000000000000000000003F
+S2190216A40000000000000000000000000000000000000000002A
+S2190216B900000000000000000000000000000000000000000015
+S2190216CE00000000000000000000000000000000000000000000
+S2190216E3000000000000000000000000000000000000000000EB
+S2190216F800000000000000007C7143A67C9243A67CB343A67C75
+S21902170D80002638A0170054A5D1BE3C600000606330007C6335
+S219021722282E7CA802A67C6803A6386017004E8000200000005F
+S21902173700000000000000000000000000000000000000000096
+S21902174C00000000000000000000000000000000000000000081
+S2190217610000000000000000000000000000000000000000006C
+S21902177600000000000000000000000000000000000000000057
+S21902178B00000000000000000000000000000000000000000042
+S2190217A00000000000000000000000000000000000000000002D
+S2190217B500000000000000000000000000000000000000000018
+S2190217CA00000000000000000000000000000000000000000003
+S2190217DF000000000000000000000000000000000000000000EE
+S2190217F40000000000000000000000007C7143A67C9243A67C90
+S219021809B343A67C80002638A0180054A5D1BE3C60000060632E
+S21902181E30007C63282E7CA802A67C6803A6386018004E800072
+S21902183320000000000000000000000000000000000000000079
+S21902184800000000000000000000000000000000000000000084
+S21902185D0000000000000000000000000000000000000000006F
+S2190218720000000000000000000000000000000000000000005A
+S21902188700000000000000000000000000000000000000000045
+S21902189C00000000000000000000000000000000000000000030
+S2190218B10000000000000000000000000000000000000000001B
+S2190218C600000000000000000000000000000000000000000006
+S2190218DB000000000000000000000000000000000000000000F1
+S2190218F0000000000000000000000000000000007C7143A67C8A
+S2190219059243A67CB343A67C80002638A0190054A5D1BE3C60FC
+S21902191A0000606330007C63282E7CA802A67C6803A63860197F
+S21902192F004E80002000000000000000000000000000000000AE
+S21902194400000000000000000000000000000000000000000087
+S21902195900000000000000000000000000000000000000000072
+S21902196E0000000000000000000000000000000000000000005D
+S21902198300000000000000000000000000000000000000000048
+S21902199800000000000000000000000000000000000000000033
+S2190219AD0000000000000000000000000000000000000000001E
+S2190219C200000000000000000000000000000000000000000009
+S2190219D7000000000000000000000000000000000000000000F4
+S2190219EC00000000000000000000000000000000000000007C63
+S219021A017143A67C9243A67CB343A67C80002638A01A0054A553
+S219021A16D1BE3C600000606330007C63282E7CA802A67C6803AE
+S219021A2BA638601A004E80002000000000000000000000000059
+S219021A400000000000000000000000000000000000000000008A
+S219021A5500000000000000000000000000000000000000000075
+S219021A6A00000000000000000000000000000000000000000060
+S219021A7F0000000000000000000000000000000000000000004B
+S219021A9400000000000000000000000000000000000000000036
+S219021AA900000000000000000000000000000000000000000021
+S219021ABE0000000000000000000000000000000000000000000C
+S219021AD3000000000000000000000000000000000000000000F7
+S219021AE8000000000000000000000000000000000000000000E2
+S219021AFD0000007C7143A67C9243A67CB343A67C80002638A0EE
+S219021B121B0054A5D1BE3C600000606330007C63282E7CA8022A
+S219021B27A67C6803A638601B004E8000200000000000000000CE
+S219021B3C0000000000000000000000000000000000000000008D
+S219021B5100000000000000000000000000000000000000000078
+S219021B6600000000000000000000000000000000000000000063
+S219021B7B0000000000000000000000000000000000000000004E
+S219021B9000000000000000000000000000000000000000000039
+S219021BA500000000000000000000000000000000000000000024
+S219021BBA0000000000000000000000000000000000000000000F
+S219021BCF000000000000000000000000000000000000000000FA
+S219021BE4000000000000000000000000000000000000000000E5
+S219021BF9000000000000007C7143A67C9243A67CB343A67C80EF
+S219021C0E002638A01C0054A5D1BE3C600000606330007C632882
+S219021C232E7CA802A67C6803A638601C004E800020000000007C
+S219021C3800000000000000000000000000000000000000000090
+S219021C4D0000000000000000000000000000000000000000007B
+S219021C6200000000000000000000000000000000000000000066
+S219021C7700000000000000000000000000000000000000000051
+S219021C8C0000000000000000000000000000000000000000003C
+S219021CA100000000000000000000000000000000000000000027
+S219021CB600000000000000000000000000000000000000000012
+S219021CCB000000000000000000000000000000000000000000FD
+S219021CE0000000000000000000000000000000000000000000E8
+S219021CF500000000000000000000007C7143A67C9243A67CB3D7
+S219021D0A43A67C80002638A01D0054A5D1BE3C600000606330A6
+S219021D1F007C63282E7CA802A67C6803A638601D004E80002077
+S219021D3400000000000000000000000000000000000000000093
+S219021D490000000000000000000000000000000000000000007E
+S219021D5E00000000000000000000000000000000000000000069
+S219021D7300000000000000000000000000000000000000000054
+S219021D880000000000000000000000000000000000000000003F
+S219021D9D0000000000000000000000000000000000000000002A
+S219021DB200000000000000000000000000000000000000000015
+S219021DC700000000000000000000000000000000000000000000
+S219021DDC000000000000000000000000000000000000000000EB
+S219021DF10000000000000000000000000000007C7143A67C92F2
+S219021E0643A67CB343A67C80002638A01E0054A5D1BE3C600083
+S219021E1B00606330007C63282E7CA802A67C6803A638601E0074
+S219021E304E8000200000000000000000000000000000000000A8
+S219021E4500000000000000000000000000000000000000000081
+S219021E5A0000000000000000000000000000000000000000006C
+S219021E6F00000000000000000000000000000000000000000057
+S219021E8400000000000000000000000000000000000000000042
+S219021E990000000000000000000000000000000000000000002D
+S219021EAE00000000000000000000000000000000000000000018
+S219021EC300000000000000000000000000000000000000000003
+S219021ED8000000000000000000000000000000000000000000EE
+S219021EED000000000000000000000000000000000000007C71EC
+S219021F0243A67C9243A67CB343A67C80002638A01F0054A5D1E8
+S219021F17BE3C600000606330007C63282E7CA802A67C6803A6D3
+S219021F2C38601F004E80002000000000000000000000000000F4
+S219021F4100000000000000000000000000000000000000000084
+S219021F560000000000000000000000000000000000000000006F
+S219021F6B0000000000000000000000000000000000000000005A
+S219021F8000000000000000000000000000000000000000000045
+S219021F9500000000000000000000000000000000000000000030
+S219021FAA0000000000000000000000000000000000000000001B
+S219021FBF00000000000000000000000000000000000000000006
+S219021FD4000000000000000000000000000000000000000000F1
+S219021FE9000000000000000000000000000000000000000000DC
+S206021FFE0000DA
+S2190220003C600000606300077C7E23A6386000007C7523A63C0D
+S219022015600400606300007C0004AC7C788BA63C6004006063D4
+S21902202A00004C00012C7C708BA64C00012C7C70C2A664632050
+S21902203F007C70C3A67C78C2A6646320007C78C3A63C600000F4
+S219022054606330027C0004AC7C6001247C0004AC3C6000016025
+S21902206963FFFC3C80FFFF6084FFFC3CA0000260A51F308403AB
+S21902207E0004940400047C0328404082FFF43C4000036042B732
+S219022093D87C631A787C7C43A67C8422787C9D43A64800467D60
+S2190220A83C200003602148F07C3043A63C600002606300003CD2
+S2190220BD800000608400003CA0000260A51F347C0328404182C3
+S2190220D200203863FFFC3884FFFC38A5FFFC840300049404008A
+S2190220E7047C0328404180FFF43C600002606321D43C8000002C
+S2190220FC608430003884FFFC38A000209464000438A5FFFF2C02
+S2190221110500004082FFF43C600002606322DC3C8000006084F9
+S219022126300090640014906400243C600003606338F03C800007
+S21902213B0460841DF0380000007C032040418200149003000012
+S219022150386300047C0320404180FFF43C600003606337E83C84
+S219022165800003608438E47C03204041820014900300003863F7
+S21902217A00047C0320404180FFF43821FFF4380000009001009D
+S21902218F00900100089421FFC8480041114800456548003C55BA
+S2190221A43C600000606330327C0004AC7C6001247C0004AC48BD
+S2190221B9003CA948003B7948003CA548005E75480079BD48001F
+S2190221CE0405480000003821FF64906100989081008090A1009D
+S2190221E3883C600000606330327C0004AC7C6001247C0004AC3E
+S2190221F87C7142A69061000C7C9242A6908100107CB342A6903B
+S21902220DA1001490010000904100087C230B783863009C90614C
+S219022222000490C1001890E1001C91010020912100249141004C
+S219022237289161002C9181003091A1003491C1003891E1003C65
+S21902224C9201004092210044924100489261004C92810050925D
+S219022261A1005492C1005892E1005C9301006093210064934112
+S21902227600689361006C9381007093A1007493C1007893E10018
+S21902228B7C91C1003891E1003C7C6102A67C8902A67CBA02A673
+S2190222A07CDB02A6906100849081008C90A1009490C100907CEF
+S2190222B5230B783821FFC8380000009001000090010008942130
+S2190222CAFFC83CA0000260A5246C7CA803A648003ABC3821FF5B
+S2190222DF64906100989081008090A100883C60000060633032EB
+S2190222F47C0004AC7C6001247C0004AC7C7142A69061000C7C27
+S2190223099242A6908100107CB342A690A100149001000090415F
+S21902231E00087C230B783863009C9061000490C1001890E10073
+S2190223331C9101002091210024914100289161002C9181003090
+S21902234891A1003491C1003891E1003C9201004092210044927F
+S21902235D4100489261004C9281005092A1005492C1005892E194
+S219022372005C9301006093210064934100689361006C93810037
+S2190223877093A1007493C1007893E1007C91C1003891E1003C2E
+S21902239C7C6102A67C8902A67CBA02A67CDB02A6906100849011
+S2190223B181008C90A1009490C100907C2E0B783C6000036063CE
+S2190223C648F03C800003608438F07CA408514180000C7CA1187D
+S2190223DB51418100087C611B7895C1FFFC3821FFC838000000B2
+S2190223F090010000900100089421FFC881EE009855EFB7FF41E9
+S2190224058200183DE0FF0061EF001C89EF000055EFF0BE39EF07
+S21902241A000191EE009855EF103A3C6000036063387091C300A2
+S21902242F00806E00983CC0000360C632407CC6782E3C800003CD
+S2190224446084332C7C84782E7CC903A64E800421802100703869
+S21902245921FFC83800000090010000900100089421FFC8382148
+S21902246E0070806100848081008880A1008C7C6103A67C8803BA
+S219022483A67CA903A681C1003881E1003C80C1001880E1001CDB
+S2190224988101002081210024814100288161002C818100308115
+S2190224ADA1003481C1003881E1003C82010040822100448241B9
+S2190224C200488261004C8281005082A1005482C1005882E100BF
+S2190224D75C8301006083210064834100688361006C83810070B1
+S2190224EC83A1007483C1007883E1007C7C0000A6386000005096
+S2190225016004207C0004AC7C0001247C0004AC800100008041FF
+S2190225160008806100808081009480A100907C6FF1207C9A03E5
+S21902252BA67CBB03A68061000C8081001080A100148021000436
+S2190225407C0004AC4C00012C4C0000647C230B783C80000360E9
+S2190225558448F03884FFE87C8123789061000C7C6000A6906103
+S21902256A00107C6802A69061001438000000900100009001005A
+S21902257F087C0000A660638000506004207C0004AC7C00012432
+S2190225947C0004AC9421FFC848006C8138210038806100147C4C
+S2190225A96803A680A1000C806100107C0000A6506004207C0075
+S2190225BE04AC7C0001247C0004AC7CA12B784E8000209421FE23
+S2190225D3D87C0802A69321010C9341011093610114938101180C
+S2190225E893A1011C93C1012093E101249001012C3FA000003BA0
+S2190225FDBD3200813D00343860FFFF7D2803A63B8000003BE027
+S21902261200013F4000034E800021813D00347C7E1B7838600023
+S219022627007D2803A63F6000033F2000004E800021801D004874
+S21902263C3C60000360630D407C0803A63D2000033D6000039313
+S2190226518937E893EB38084E8000213C0000403C6000033C8041
+S21902266600033CA00003901B37EC38630C9438840CC438A50CF8
+S21902267BD0939A3804480080353C6000033C8000033CA00003D0
+S2190226903CC0000338C60D1038630CDC38840CF438A50D04489F
+S2190226A50080113C60000338630D1448008005809A380480BBCF
+S2190226BA37EC3C60000338630D3848007FF13D2000033D6000AD
+S2190226CF03380937C83BAB37B87C1D00003D200003938937FC8F
+S2190226E4418200207C1C0378813D00003BBD00087D2803A64E8A
+S2190226F98000217C1DE0004082FFEC3F800003837C38102C1BAE
+S21902270E00004182004C3FA00003809D37F03C60000338630D33
+S2190227234448007F9180BD37F03D2000033BA000001CA503E8B3
+S21902273893A938103861000838800100480085E12C03FFFE408D
+S21902274D82000C93BC381048000008937C38107FFDFB787F3CFA
+S219022762CB787FDBF3782C1D0000418200143C60000338630DEC
+S2190227778048007F3D3BA00000386100083880010038A000FABB
+S21902278C480085992C0300004080001C3D200003800938142C5F
+S2190227A10000004182FFC44800A3414BFFFFBC40820020393C0E
+S2190227B63200800900347F63DB787C0803A64E80002148006619
+S2190227CB014BFFFF9C3861000848007F9D2C0300004081004CCB
+S2190227E03FA000033F40000438610008389D380038BA18D048A8
+S2190227F5008A957C631B794182001C8003000C807D3800389AC1
+S21902280A18D07C0803A64E800021480000143C60000338630D0B
+S21902281F8C3881000848007E913BA000014BFFFF3C9421FFF0F4
+S2190228347C0802A693E1000C900100142C0300027C9F23784010
+S219022849820144807F00043C80000338840DAC48007FA92C03D6
+S21902285E0000408200447D6000A67D605B783920000051200457
+S219022873207C0001243C0002004C00012C7C108BA64C00012C9B
+S2190228883D4002007C0004AC7D588BA67C0000A6516004207C10
+S21902289D000124480000F8807F00043C80000338840DB0480037
+S2190228B27F512C030000408200C07D6000A67D605B78392000FD
+S2190228C700512004207C00012439200000380000807C0903A680
+S2190228DC612010003D400E007C0004AC7D398BA67D588BA67C2F
+S2190228F1198BA67D588BA6392900104200FFE03C0004004C005C
+S219022906012C7C108BA64C00012C3D4004007C0004AC7D588B45
+S21902291BA639200000380000807C0903A6612010003D400E009F
+S2190229307C0004AC7D398BA67D588BA67C198BA67D588BA6396D
+S2190229452900104200FFE03C000C004C00012C7C108BA64C0052
+S21902295A012C3D400C007C0004AC7D588BA67C0000A6516004A2
+S21902296F207C000124480000243C600003809F000438630DB401
+S21902298448007D31480000103C60000338630DCC48007D218070
+S2190229990100147C0803A683E1000C382100104E800020942164
+S2190229AEFFE87C0802A693A1000C93C1001093E100149001003D
+S2190229C31C3D6000033D200003392936F83BEB36887C1F480085
+S2190229D84182002C7D3D4B783FC00003809F000480BF00008093
+S2190229EDDF0008387E0DD848007CC13BFF00107C1FE800408238
+S219022A02FFE48001001C7C0803A683A1000C83C1001083E10023
+S219022A1714382100184E8000209421FFA87C0802A6938100484C
+S219022A2C93A1004C93C1005093E100549001005C7C7D1B787CAD
+S219022A419C23783D20000339290DE8386100083880006238A0F8
+S219022A56000138C0000038E100383901003C48008B4D3D200027
+S219022A6B0339290DF8386100203880006C38A0000138C0000037
+S219022A8038E100403901004448008B293D4000037FA3EB787FE3
+S219022A9584E378394A0D1038A0000138C1000838E00002390079
+S219022AAA00003920000048008B1D2C0300004182004080010014
+S219022ABF3C2C000000408200143C60000338630E0048007BE5CD
+S219022AD448000024800100442C0000004082000C3800002090D3
+S219022AE90100408061003880810040480086998001005C7C086E
+S219022AFE03A68381004883A1004C83C1005083E10054382100B2
+S219022B13584E8000209421FFB87C0802A69381003893A1003C0C
+S219022B2893C1004093E100449001004C3D2000038009380C7CBF
+S219022B3D7D1B787C9C23783D2000039001002839290E1838617F
+S219022B5200083880007738A0000138C0000038E10020390100EC
+S219022B672448008A493D4000037FA3EB787F84E378394A0E28F7
+S219022B7C38A0000138C1000838E0000139010028392000004847
+S219022B91008A3D2C030000418200F8800100242C0000004182E3
+S219022BA600343C6000038081002880A1002038630E3C48007A2F
+S219022BBBFD80A10020386100301CA503E8388000084800815969
+S219022BD02C03FFFE418200BC814100287D6000A67D605B7839E8
+S219022BE5200000512004207C00012439200000380000807C09E8
+S219022BFA03A6612010003D600E007C0004AC7D398BA67D788B47
+S219022C0FA67C198BA67D788BA6392900104200FFE03C00040044
+S219022C244C00012C7C108BA64C00012C3D6004007C0004AC7D9B
+S219022C39788BA639200000380000807C0903A6612010003D6069
+S219022C4E0E007C0004AC7D398BA67D788BA67C198BA67D788BDD
+S219022C63A6392900104200FFE03C000C004C00012C7C108BA69E
+S219022C784C00012C3D600C007C0004AC7D788BA67D4803A64E10
+S219022C8D8000218001004C7C0803A68381003883A1003C83C1B0
+S219022CA2004083E10044382100484E8000209421FFE07C080285
+S219022CB7A693A1001493C1001893E1001C90010024380000002A
+S219022CCC3D2000033FC000033BA9381090093810901E37FC4854
+S219022CE1000A992C030000418200EC3D200003808938243D60F4
+S219022CF60003800B38203D2000033BE978E47C8422147C8400C6
+S219022D0B507FE3FB7838A004004800719D7FE3FB78388003FCC9
+S219022D20480004F9801F03FC7C030000408200303D2000038162
+S219022D356978E43C000BAD6000FACE7C0B000040820018813F80
+S219022D4A03F83C00DEAD6000DEAD7C090000418200283C6000B4
+S219022D5F0338631CF0480079513C600003386378E4388000004E
+S219022D7438A0040048007211480000583C60000338631AD83898
+S219022D8981000838A0000148000061800100082C0000004182AB
+S219022D9E00303C60000338631AF07FA4EB7838A00004480000FB
+S219022DB3413C6000033C80000338631B18388437F038A00002DA
+S219022DC84800002938000001901E37FC800100247C0803A6830F
+S219022DDDA1001483C1001883E1001C382100204E80002094212D
+S219022DF2FFD87C0802A69321000C934100109361001493810002
+S219022E071893A1001C93C1002093E100249001002C3D2000031E
+S219022E1C3D6000033B4937B87C7B1B787C9D23787CB92B783B36
+S219022E31CB36F8480009452C0300003B800004418200CC7C1EDF
+S219022E46D000418200B43D200003392978E4807E00007FFC4A48
+S219022E5B147F64DB78480079392C0300004082007C807E00109C
+S219022E707C03C8004082005C3803FFFF280000054181008C3DF0
+S219022E85600003396B1CD85400103A7D4B002E3D2000033929E0
+S219022E9A1CD87D4A4A147D4903A64E800420801F0000901D0056
+S219022EAF004800005CA01F0004813F0000B01D0004913D000041
+S219022EC44800004893FD0000480000403C60000338631C887FED
+S219022ED964DB78480077D94800002C807E00103BDE0018480093
+S219022EEE02DD7C1ED0007F9C1A144082FF543C60000338631CCB
+S219022F03B47F64DB78480077AD8001002C7C0803A68321000CD2
+S219022F1883410010836100148381001883A1001C83C10020838E
+S219022F2DE10024382100284E8000209421FBB87C0802A69301EC
+S219022F4204289321042C93410430936104349381043893A104A7
+S219022F573C93C1044093E104449001044C3D2000033D600003ED
+S219022F6C3B0936F83B2B37B87C7C1B787C9B2378480007FD2CCD
+S219022F810300003B4000007F1FC3783BC00004418202083C8055
+S219022F960003388478E43861000838A0040048006F0D3BA104E3
+S219022FAB083D6000033D200003934B381039291BE87FA3EB78F2
+S219022FC03880006C38A0000038C0000238E10420390000004841
+S219022FD50085DD3D4000037F83E3787F64DB787FA6EB78394A60
+S219022FEA131838A0000138E0000139000000392000004800854F
+S219022FFFD12C030000418201947C1FC800418200A480A104204F
+S2190230147FE3FB787FC4F37848000265380300012800000541C4
+S21902302981FFE03D600003396B1C705400103A7D4B002E3D206A
+S21902303E000339291C707D4A4A147D4903A64E8004203C600063
+S21902305303386378E43881000838A0040048006E514800013446
+S2190230683B400001807F00103BFF0018480001557FDE1A144BFB
+S21902307DFFFF8C7FE9C2783129FFFF7D294910381FFFE87C00FA
+S21902309248787FE948387D3F03784BFFFF6C3C60000338631C38
+S2190230A7004800760D4BFFFF5C2C1A0000418200E43C000BADBC
+S2190230BC3D6000036000FACE3D20DEAD3B8B78E46129DEAD9081
+S2190230D10B78E4913C03F87F83E378388003FC480001393D20C1
+S2190230E600033FE00003801F382481693820907C03FC7C0002E3
+S2190230FB143C6000037FC0585038631C14480080A92C030000B4
+S21902311041820088809F38243BA104247FC3F3787FA5EB78485D
+S21902312500A6897C7F1B794182002C83A104247FE3FB78480078
+S21902313AA9917C661B783C600003386315947FA4EB787FE5FB02
+S21902314F7848007565480000447FC3F3787F84E3787FA6EB78AB
+S21902316438A004004800A7B57C7F1B794182002883A104247F8A
+S219023179E3FB784800A94D7C661B783C60000338631C407FA478
+S21902318EEB787FE5FB78480075218001044C7C0803A683010487
+S2190231A3288321042C83410430836104348381043883A1043C5C
+S2190231B883C1044083E10444382104484E8000203803FFFF28D3
+S2190231CD0000054D8100203D600003396B1BD05400103A7D4B5E
+S2190231E2002E3D20000339291BD07D4A4A147D4903A64E800490
+S2190231F720386000044E800020386000084E80002038600000EC
+S21902320C4E800020386002004E800020388400035484F0BE7C6F
+S2190232218023782C00000038C0000038E000003884FFFF4081BF
+S2190232360044816300007C8A23787D68383038E7000168E900F5
+S21902324B102C0A00007D2AFE707D404A787C0050507D6B4378CE
+S2190232607C00FE707CC65A78386300047CE700383884FFFF411F
+S21902327581FFC47CC333784E8000209421FF707C0802A693013D
+S21902328A007093210074934100789361007C9381008093A1000C
+S21902329F8493C1008893E1008C900100947C7B1B78807B000801
+S2190232B47C9F23782C0300007CB82B78418200383881006038F6
+S2190232C9A000014BFFFB25801B000C2C000000418200148001B3
+S2190232DE00602C0000004182019848000010800100602C000087
+S2190232F300408201883D200003392978E43C600003809B000498
+S2190233087FBF4A1438631B2C480073A5813B00103809FFFF2898
+S21902331D000005418101483D600003396B1BA05400103A7D4B1F
+S219023332002E3D20000339291BA07D4A4A147D4903A64E80046E
+S21902334720801D00002C000000418200103D20000338891B383A
+S21902335C480000303D20000338891B40480000243C60000380D6
+S2190233719D000038631B484800733D480000EC7FA3EB784800AC
+S2190233869B6D7C641B783C60000338631B344800732148000003
+S21902339BD07FBEEB783BE000003F8000033FA000037C9EF8AE27
+S2190233B0387C1B4C48007301281F00044181000C387D1B5448A5
+S2190233C50072F13BFF0001281F00054081FFDC3C6000037FDD6B
+S2190233DAF37838631B58480072D5480000843C60000338631BAE
+S2190233EF5C480000883C60000338631B60480072B9881D0000C9
+S2190234047FBEEB782C0000007FBFEB78418200583F2000033B87
+S2190234194000003B80000A881E00002C00000A418200187FEB71
+S21902342EFB788C0B00012C00000A4082FFF87D7F5B787FC4F383
+S219023443789B5F000038791B64480072693BDF00019B9F000053
+S219023458881E00007FDFF3782C0000004082FFBC2C18000041BB
+S21902346D8200183C60000338631B604800723D3860000248001B
+S219023482022C801B00102C0000044182005438610008388000B5
+S2190234975038A00000480078892C0300003860FFFF418002041C
+S2190234AC38610008480072C12C0300004182FFC4880100082C76
+S2190234C100002E4082000C38600000480001E02C00005E4082E6
+S2190234D6000C38600003480001D0813B00103809FFFF280000E7
+S2190234EB05418101BC3D600003396B1BB85400103A7D4B002E96
+S2190235003D20000339291BB87D4A4A147D4903A64E8004208311
+S219023515FD0000386100087FA4EB78480085754800003083FD3C
+S21902352A0000386100087FA4EB7838A0000038C00000480083C3
+S21902353FE94800001483FD0000386100087FA4EB78480098396B
+S2190235542C0300004182013C801D00007FE002787C09FE707D46
+S2190235692302787C6348507C63FE707C6018F8546307FE5400E9
+S21902357E07BC7C63037848000128801D0000A17D000490010053
+S2190235935839210058B1690004380100087D3A4B789001006840
+S2190235A83BC000003F6000033BE100643B810068806100687FFE
+S2190235BDE4FB787F85E37838DB1B544800835D2C0300004182A0
+S2190235D200B4881F00037C1DF1AE3BDE0001281E00054081FF22
+S2190235E7D4480000C03C6000037FBEEB7838631B6C480070BD16
+S2190235FC48000044880100083BE100082C000000418200287FDC
+S219023611C4F3787FEBFB78880B0000980400008D2B00013884ED
+S21902362600012C0900004082FFEC7C9E23783800000A981E00F8
+S21902363B003BDE0001380000003C600003981E000038631B987E
+S21902365048007065386100083880005038A00000480076C52C11
+S2190236650300003860FFFF4180004038610008480070FD2C032A
+S21902367A00004082FF8448000028A01A000481210058B01D00FA
+S21902368F04913D000038600004480000143C60000338631B5CA4
+S2190236A44800701138600001800100947C0803A68301007083EF
+S2190236B9210074834100788361007C8381008083A1008483C154
+S2190236CE008883E1008C382100904E8000209421FFF07C080267
+S2190236E3A693C1000893E1000C900100147C7E1B782C1E0001CC
+S2190236F87C9F2378418100143C60000338631A98480012B548E7
+S21902370D000054480000692C030000418200483C6000033C8006
+S219023722000380BF0004386336183884368848007CBD7C631B67
+S219023737794182001C8003000C7FC3F3787FE4FB787C0803A6DF
+S21902374C4E800021480000103C60000338631AAC4800126180DF
+S2190237610100147C0803A683C1000883E1000C382100104E8017
+S21902377600209421FFE07C0802A6934100089361000C93810067
+S21902378B1093A1001493C1001893E1001C900100243D200003B9
+S2190237A0800931E82C0000004082009C3FE00003807F37EC3865
+S2190237B5000001900931E83C63FFFF3C80000148009ED57C6450
+S2190237CA1B79418200183C60000338631A4448006EDD386000B1
+S2190237DF00480000683F6000033F40000338600000389B381C3B
+S2190237F438BA382048009F493FA000033F800003387D38243852
+S2190238099C382848009F69809B381C80BA382080DC38283C60FE
+S21902381E000380FD382438631A6C48006E8D813D3824801F375E
+S219023833EC3D2900017C0900503D600003900B382C3860000119
+S219023848800100247C0803A6834100088361000C83810010833F
+S21902385DA1001483C1001883E1001C382100204E8000209421A2
+S219023872FFE07C0802A693A1001493C1001893E1001C9001005A
+S219023887243D400003394A19F438A0000238C0000038E0000007
+S21902389C390100083920000148007D292C030000408200143C45
+S2190238B16000033863178C48001105480000E03D6000033D20D7
+S2190238C6000380A93824808B38203FA00003807D382C7C852097
+S2190238DB50480065D583BD382C3BC000003BE000004800000CF1
+S2190238F03BFF00013BBD01003D200003800938245400C23E7C73
+S2190239051F004040800028881D00002C0000FF4182FFDC806110
+S21902391A00087FA4EB7848006E792C0300004082FFC83BC00021
+S21902392F012C1E0000408200183C6000038081000838631A14E6
+S21902394448006D71480000543D20000380093804807D00147CF3
+S2190239590300404180001C80BD00183D200003816937EC7C03F1
+S21902396E2A147C005840418000143C60000338631A2C48006DE1
+S2190239833548000018809D001048006525801D001C3D2000037B
+S2190239989009380C800100247C0803A683A1001483C10018834D
+S2190239ADE1001C382100204E8000209421FFD87C0802A693410E
+S2190239C20010936100149381001893A1001C93C1002093E1006D
+S2190239D7249001002C3D400003394A19F438A0000238C0000011
+S2190239EC38E00000390100083920000148007BD52C0300004004
+S219023A018200143C6000033863178C48000FB1480001843D60C4
+S219023A1600033D20000380A93824800B38203FA000037F650003
+S219023A2B50807D382C7F64DB784800647D83DD382C3BA00000D0
+S219023A403BDE02003BE000024800000C3BFF00013BDE01003F4A
+S219023A55400003801A38245400C23E7C1F004040800040881E47
+S219023A6A00002C0000FF4182FFDC806100087FC4F37848006D2B
+S219023A7F1D2C0300004082FFC83C6000038081000838631A00F9
+S219023A944800771D2C030000418200F83BA000012C1D000040EB
+S219023AA98200183C6000038081000838631A1448006BFD4800FE
+S219023ABE00D83B81000C807E0010809E00187F85E37848009CC5
+S219023AD3DD7C7F1B794182002883A1000C7FE3FB7848009FE5AF
+S219023AE87C661B783C600003386319947FA4EB787FE5FB7848C1
+S219023AFD006BB97FC3F378388000FF38A001004800647D809A09
+S219023B1238247F63DB787F85E37848009C917C7F1B79418200E0
+S219023B272C83A1000C7FE3FB7848009F997C661B783C600003BD
+S219023B3C386319947FA4EB787FE5FB7848006B6D480000483DDB
+S219023B512000038089382C80BA38247F63DB787F86E378480055
+S219023B669DB97C7F1B794182002883A1000C7FE3FB7848009F87
+S219023B7B517C661B783C600003386319B47FA4EB787FE5FB7804
+S219023B9048006B258001002C7C0803A683410010836100148318
+S219023BA581001883A1001C83C1002083E10024382100284E80F0
+S219023BBA00209421FFA07C0802A69381005093A1005493C1000F
+S219023BCF5893E1005C90010064380000007C7D1B787C9C237846
+S219023BE43D20000390010044392917309001003C386100083841
+S219023BF980006638A0000138C0000038E100383901003C4800EA
+S219023C0E79A53D200003392919D8386100203880006C38A00014
+S219023C230138C0000038E1004039010044480079813D400003F3
+S219023C387FA3EB787F84E378394A131838A0000238C1000838CC
+S219023C4DE000023900000039200000480079752C0300004082C0
+S219023C6200143C6000033863178C48000D5148000104800100E1
+S219023C773C2C00000041820010800100442C000000408200142F
+S219023C8C3C600003386319E048000D29480000DC8061003848E6
+S219023CA1009A5D7C7C1B794082002080610038800100407C63E9
+S219023CB602143863FFFF48009A417C7C1B794182004483A10069
+S219023CCB387F83E37848009DF97C651B783C600003386317E8BD
+S219023CE07FA4EB78480069D13D2000033D6000033C60000380A1
+S219023CF589381C80AB382038631808480069B548000070808179
+S219023D0A0038800100407C8323787C8402143884FFFF48009F53
+S219023D1F912C030000418200143C600003386319184800698550
+S219023D3448000040806100388081004038A1004848009A697CA9
+S219023D497C1B794182002883A100487F83E37848009D717C6662
+S219023D5E1B783C600003386319947FA4EB787F85E37848006939
+S219023D7345800100647C0803A68381005083A1005483C1005875
+S219023D8883E1005C382100604E8000209421FF187C0802A6932D
+S219023D9D4100D0936100D4938100D893A100DC93C100E093E18D
+S219023DB200E4900100EC380000007C7D1B787C9C23783D2000C0
+S219023DC703900100C4392916F49001009C900100A4900100AC7D
+S219023DDC900100B4900100BC386100083880006238A00001386D
+S219023DF1C0000038E100983901009C480077B53D200003392939
+S219023E061708386100203880007238A0000138C0000038E100B4
+S219023E1BA0390100A4480077913D2000033929171C38610038F7
+S219023E303880006538A0000138C0000038E100A8390100AC4899
+S219023E4500776D38E100B03D2000037CFE3B78392917303861E5
+S219023E5A00503880006638A0000138C00000390100B448007760
+S219023E6F453D2000033929174C386100683880006C38A00001CF
+S219023E8438C0000038E100B8390100BC480077213D20000339EA
+S219023E99291764386100803880007338A0000138C0000038E13B
+S219023EAE00C0390100C4480076FD3D4000037FA3EB787F84E394
+S219023EC378394A178038A0000238C1000838E00006390100C856
+S219023ED839200001480076F12C030000408200143C60000338E9
+S219023EED63178C48000ACD480004988001009C2C0000004182A4
+S219023F02001C800100BC2C00000041820010800100C82C0000D6
+S219023F1700408200143C600003386317A048000A99480004642C
+S219023F2C800100C4814100B82C00000040820008914100C03DF5
+S219023F4120000380093824816100C07D2A02143929FFFF7D29F7
+S219023F5603963F4000037D2901D67C095840912100B840800070
+S219023F6B143C600003386317BC4800674148000414800100B494
+S219023F802C00000041820070806100B0480097717C7C1B794019
+S219023F95820020806100B0800100C07C6302143863FFFF4800C6
+S219023FAA97557C7C1B794182004483A100B07F83E37848009B68
+S219023FBF0D7C651B783C600003386317E87FA4EB78480066E513
+S219023FD43D2000033D6000033C6000038089381C80AB3820381A
+S219023FE9631808480066C94800039C3FE0000380810098801F81
+S219023FFE38047C0400404180001C800100C03D2000038169370C
+S219024013EC7C0402147C005840418000283C600003386318249C
+S2190240284800668D3D2000033C600003809F380480A937EC3863
+S21902403D63180848006675806100C8480067292803000F408145
+S21902405200183C60000338631850388000104800665548000382
+S21902406728800100B42C0000004082002C808100B87FC3F37860
+S21902407C480003392C030000408200183C600003808100B8380B
+S21902409163188048006621480002F43F8000033D20000380BCAD
+S2190240A63824800938203FA000037F650050807D382C7F64DB8C
+S2190240BB7848005DF5801C382483FD382C5409C23F3BA00000C2
+S2190240D03B800000418200883FC00003881F00002C0000FF41B9
+S2190240E5820060806100C87FE4FB78480066A92C030000408216
+S2190240FA004C800100B42C00000041820014813F0010800100D5
+S21902410FB07C09000040820214813F0018800100B87C090000F1
+S21902412440820214808100C8387E18FC480070812C030000416B
+S2190241398202543B8000014800001C801A38243BBD000154002F
+S21902414EC23E7C1D00403BFF01004180FF842C1C0000814100F3
+S219024163C0806100B04082004C3D200003800938243D600003FC
+S2190241785400C23E7C1C004083EB382C3BA000004800001C3DB1
+S21902418D200003800938243BBD00015400C23E7C1D00403BFFAE
+S2190241A2010040800010881F00002C0000FF4082FFDC7C835270
+S2190241B7143884FFFF48009AF12C030000418200143C600003A6
+S2190241CC38631918480064E5480001B838A100CC806100B080C3
+S2190241E18100B87CBE2B78480095C57C7C1B793BA000014182DF
+S2190241F6002C83A100CC7F83E378480098C97C661B783C60007A
+S21902420B037FA4EB783863194C7F85E3784800649D3BA000008B
+S2190242202C1D000041820044806100B08081009880A100C07FA8
+S219024235C6F378480096E57C7C1B794182002883A100CC7F8310
+S21902424AE3784800987D7C661B783C600003386319707FA4EB5A
+S21902425F787F85E378480064517FE3FB783880000038A0010009
+S21902427448005D15808100C87FE3FB784800654D800100A48136
+S2190242892100B02C000000913F001040820020800100B42C00F9
+S21902429E00004182000C812100B0480000108121009848000009
+S2190242B308812100A0800100AC913F00142C0000004082001096
+S2190242C83D2000038009380C48000008800100A8901F001C80E9
+S2190242DD0100B83D20000380893824901F00187F63DB787FC507
+S2190242F2F378480094B97C7C1B794182004C83A100CC7F83E340
+S21902430778480097C17C661B783C600003386319947FA4EB78A0
+S21902431C7F85E37848006395480000683C600003386318A848F4
+S219024331006385480000583C600003386318D44800637548005A
+S21902434600483D2000038089382C80BA38247F63DB787FC6F343
+S21902435B78480095C17C7C1B794182002883A100CC7F83E3786C
+S219024370480097597C661B783C600003386319B47FA4EB787F78
+S21902438585E3784800632D800100EC7C0803A6834100D0836152
+S21902439A00D4838100D883A100DC83C100E083E100E438210092
+S2190243AFE84E8000203D20000380E938243D600003814B381C37
+S2190243C43D2000037C073A14810938207D4A02147D4953787CE0
+S2190243D90940404080007054E0F0BE7C0603785407103A800A01
+S2190243EE00002C00FFFF4182004C7C095000418200147C0950F9
+S219024403507C0016707C002040408000587D4953787C094040C1
+S2190244184080002054CB103A7D295A147C0940404080001080D6
+S21902442D0900002C00FFFF4082FFEC7D2A4B78480000087D4A12
+S2190244423A147C0A40404180FFA47C095000418200207C095019
+S219024457507C0016707C002040418000109123000038600001FD
+S21902446C4E800020386000004E8000209421FFE07C0802A6936D
+S21902448161000C9381001093A1001493C1001893E1001C9001B9
+S21902449600243D200003800938243D600003814B381C3D200084
+S2190244AB0383C938207C0002147FEA02147C1FF0407FE4FB789C
+S2190244C03F600003408000883F8000033FA00003801F00002C87
+S2190244D500FFFF4182005C7C04F80041820010387C16DC7FE559
+S2190244EAFB78480061C97C1FF0407FE4FB7840800034801F009D
+S2190244FF002C00FFFF41820028801D38245400F0BE5409103AEA
+S2190245147C844A147C04F04040800010800400002C00FFFF40BF
+S21902452982FFEC7C9F237848000014801B38245400F0BE5400AA
+S21902453E103A7FFF02147C1FF0404180FF887C04F80041820035
+S219024553143C600003386316DC7FE5FB78480061558001002492
+S2190245687C0803A68361000C8381001083A1001483C1001883EF
+S21902457DE1001C382100204E8000209421FFE87C0802A69381E2
+S219024592000893A1000C93C1001093E100149001001C3FA0004D
+S2190245A7033D20000381693820801D38243C6000037FE05850B4
+S2190245BC3863166C480060F5801D38243BC000005409C23F3F98
+S2190245D1800003418200547FFDFB787FDFF3787F9EE3783F8045
+S2190245E60003881D00002C0000FF4182002080BD001080DD0059
+S2190245FB1480FD0018811D001C387C16B07FA4EB78480060A9F0
+S219024610801E38243BFF00015400C23E7C1F00403BBD010041F0
+S21902462580FFC48001001C7C0803A68381000883A1000C83C1EC
+S21902463A001083E10014382100184E8000209421FFB87C08028B
+S21902464FA69321002C93410030936100349381003893A1003CE1
+S21902466493C1004093E100449001004C7C7D1B787C9C23783B97
+S219024679E000003D2000033929150893E1002038610008388079
+S21902468E006638A0000038C0000238E100203900000048006FAF
+S2190246A3113D4000037FA3EB787F84E378394A131838A00002FF
+S2190246B838C1000838E00001390000003920000048006F052C52
+S2190246CD030000418202C03C6000033863153448006AD52C0310
+S2190246E20000408200143C6000033863156448005FC54800027D
+S2190246F79C3C6000033863157048005FB5800100202C00000023
+S21902470C4182006C3D200003808938283D600003800B38243DD5
+S2190247212000033884FFFC8069381C7C8401D63BA100247C0012
+S21902473602147C6302147FA5EB784800906D7C7C1B797FBEEBDC
+S21902474B784182003C83A100247F83E378480093717C661B7875
+S2190247603C600003386315947FA4EB787F85E37848005F454841
+S2190247750000143C600003386315BC48005F353BC100243F408E
+S21902478A0003839A38243C0000027F9C00003F20000383B93868
+S21902479F2C4FFEEB827C000026540007FE7C0000D07C0900F854
+S2190247B47F9C00385529039C7F9C4B787FA3EB78388000003826
+S2190247C9A00100480057BD3D2000033F60000339691604801B7E
+S2190247DE381C81491604810B0004939D0018915D0000911D0013
+S2190247F304901D0014901D00103BBD01007FA3EB7838800000F2
+S21902480838A001004800577D3D600003801B381C810B160C3929
+S21902481D2B160C80E9000C81690004814900087C00E214939D5B
+S2190248320018911D0000917D0004915D000890FD000C901D0056
+S21902484714901D00103BBD01007FA3EB783880000038A0010075
+S21902485C4800572D3D2000038009161C3969161C812B00088150
+S2190248714B0004A10B000C913D0008901D0000915D0004B11DE1
+S219024886000C880B000E3F800003981D000E817A3824801C38B9
+S21902489B207D2B5A147C090050901D0014917D0018901D001052
+S2190248B03BBD01007FA3EB783880000038A00100480056C980F6
+S2190248C51C3820809A38243D600003814B162C7F640050392BA8
+S2190248DA162CA109000C8009000481690008915D0000901D00B0
+S2190248EF04917D0008B11D000C909D0018937D0010937D001430
+S2190249047F63DB787FC5F37848008EA13BFF00013BFF00017C4A
+S2190249197C1B793BFF00013BFF00014182002C83A100247F83C3
+S21902492EE378480091997C661B783C600003386315947FA4EB3A
+S219024943787F85E37848005D6D480000448099382C7F63DB7831
+S21902495857E5402E7FC6F37848008FBD7C7C1B7941820028835B
+S21902496DA100247F83E378480091557C661B783C60000338632F
+S219024982163C7FA4EB787F85E37848005D298001004C7C0803C0
+S219024997A68321002C83410030836100348381003883A1003CE6
+S2190249AC83C1004083E10044382100484E8000209421FFF87C0C
+S2190249C10802A69001000C7C641B783C600003386314E04800A4
+S2190249D65CE13C6000033C8000033CA000033863361838843670
+S2190249EB8838A5150048006B3D8001000C7C0803A6382100082B
+S219024A004E8000203860001C4E8000209421FFE87C0802A693AF
+S219024A15A1000C93C1001093E100149001001C7C7D1B78813DF5
+S219024A2A000483C900044800002C73E00012418200107FA3EB63
+S219024A3F787FE4FB784800004973E000084182000C7FA3EB78CD
+S219024A54480001A9B3FE0010A01E00107000001A541F043E2C5A
+S219024A691F00004082FFC88001001C7C0803A683A1000C83C14B
+S219024A7E001083E10014382100184E8000209421FFE87C080213
+S219024A93A69381000893A1000C93C1001093E100149001001C6C
+S219024AA87C7D1B7883DD000483FE0018A01F0000700090002C7E
+S219024ABD001000408200683B9E0028813D0000801E001081694C
+S219024AD200247C00F850816B00085400F87AA13F00007C9C002E
+S219024AE72E7FA3EB7838A000007D6803A67129EFFFB13F000022
+S219024AFC4E800021A01F0000700920004182000C83FE001048AF
+S219024B110000083BFF0008A01F0000700090002C001000418280
+S219024B26FFA493FE00188001001C7C0803A68381000883A1002D
+S219024B3B0C83C1001083E10014382100184E8000209421FFE88B
+S219024B507C0802A693A1000C93C1001093E100149001001C81C3
+S219024B652300048169000C83EB00047C188AA654000FFE2C0054
+S219024B7A000041820028812B0004A00B00022C000000408100EA
+S219024B8F187C004BAC7C0004AC3400FFF0392900104181FFF00D
+S219024BA42C050000408100387C9E23787CBD2B78807E00002C10
+S219024BB90300004182001880BE00047FE4FB78480052E9801EC9
+S219024BCE00047FFF021437BDFFFF3BDE00084082FFD880010006
+S219024BE31C7C0803A683A1000C83C1001083E100143821001800
+S219024BF84E8000209421FFE87C0802A693A1000C93C1001093B4
+S219024C0DE100149001001C7C7D1B7883DD000483FE001C480014
+S219024C220048813D000093FE000C816900247FA3EB78800B00B5
+S219024C3704A09F00027C0803A64E800021A01F00006000800061
+S219024C4CB01F0000A13F0000712020004182000C83FE00144840
+S219024C610000083BFF0008A01F0000700090002C00100041822F
+S219024C76FFB093FE001C8001001C7C0803A683A1000C83C10088
+S219024C8B1083E10014382100184E8000209421FFD87C0802A66E
+S219024CA0930100089321000C93410010936100149381001893F1
+S219024CB5A1001C93C1002093E100249001002C83C300047C98FF
+S219024CCA237883BE00087CBB2B78A01D00007CD933787009805A
+S219024CDF007CFA3B78418200447FBFEB783F800003A01F000067
+S219024CF4700920004182000C83FE0010480000083BFF00087C9D
+S219024D091FE8004082000C387C125C480059A1A01F000070091D
+S219024D1E80004082FFD07FFDFB78A01D00007009200041820060
+S219024D3310801E00107C0903784800000C381D0008813E001026
+S219024D48901E00087C09E8502C1B00005400F87A393E0028B37D
+S219024D5D3D00027F49012E83FD0004408100307F1EC3787F7CBC
+S219024D72DB78809E000080BE00047FE3FB7848005131801E0035
+S219024D8704379CFFFF3BDE00087FFF02144082FFE07C188AA621
+S219024D9C54000FFE2C00000041820028813D0004A01D00022CD6
+S219024DB1000000408100187C004BAC7C0004AC3400FFF03929E9
+S219024DC600104181FFF0A01D00006000DC00B01D0000800100C9
+S219024DDB2C7C0803A6830100088321000C83410010836100145B
+S219024DF08381001883A1001C83C1002083E10024382100284E90
+S219024E058000208123000481690008A06B000054638BFE686341
+S219024E1A00014E800020688401003004FFFF7C6021104E800093
+S219024E2F208123000481690004800B000060000030900B0000FB
+S219024E444E8000208123000481690004800B0000540007329026
+S219024E590B00004E8000209421FFD87C0802A69321000C9341F8
+S219024E6E0010936100149381001893A1001C93C1002093E100AC
+S219024E83249001002C83230008839900047FDE9AA677DEFFFF74
+S219024E983C800003388432303860000838A000064800177D7F48
+S219024EAD788AA6577B0FFE39200000380000807C0903A66120A2
+S219024EC210003CC00E007C0004AC7D398BA67CD88BA67C198B02
+S219024ED7A67CD88BA6392900104200FFE03D2004007C0004AC74
+S219024EEC7D388BA63FA000033CC000023CE000033D200003382D
+S219024F01C6527438E7D66C391D3818392978C83860001C3880F3
+S219024F1600007F25CB7848004321807D38183BFE3C004800439F
+S219024F2B3D3860001C480047493860001C480045F1801E0A00C7
+S219024F403B5E0A005400073293FC0000901E0A00935C00047F6C
+S219024F55E3FB783880000038A000A44800502938C000047CC9B4
+S219024F6A03A62F9B0000391E2C00395E2C203D2000033D600055
+S219024F7F0338E0000038009000915C001C39294910396B60D09B
+S219024F94911C0010911C0008911C0018915C0014915C000CB020
+S219024FA9EA0002912A0004B00A0000392905F0394A0008420063
+S219024FBEFFECA40AFFF87D09437860002000B00A000039400053
+S219024FD3047D4903A6399F007238000000B00900029169000414
+S219024FE8B0090000396B05F0392900084200FFEC7D284B78A4B8
+S219024FFD08FFF83B60000160002000B0080000A13E09523BA0B0
+S219025012001061290003B13E0952A01E0950390005F0540004FE
+S2190250273AB01E0950A13E09543B80FFFF7129FFFDB13E095435
+S21902503CA01E09623D40DEBB7000FFCFB01E0962A13E096061F9
+S2190250514A20E37129FFCFB13E0960A01E096439600000600012
+S2190250660030B01E0964A13E09523860888861290A00B13E0955
+S21902507B52A01E09503880000F7000F5FFB01E0950813E0AECA9
+S21902509038C005EE5529002E913E0AEC801E0AEC38E00040605C
+S2190250A500003D901E0AEC813E0AEC38002C20552906B0913ED2
+S2190250BA0AEC937E0030B01F000039202C00B13F00029BBF0003
+S2190250CF049BBF0005B11F0006939F0030915F0034917F0038BE
+S2190250E4917F003C917F0040B07F0044B17F0044B09F0046B1E7
+S2190250F97F0048B0DF004AB0FF004CB11F004EB11F005038008A
+S21902510E0006B17F00587C0903A6B17F005A3CA00003B17F0030
+S2190251235CB17F005E38A532367D8963788C05FFFF9809000030
+S219025138392900014200FFF438000000B01F0078B01F0094B031
+S21902514D1F0096B01F0098B01F009AB01F009EB01F00A0B01F16
+S21902516200A239200001B13E09C0A01E09C070060001418200BC
+S219025177187FC9F378A00909C0700A00014082FFF87D3E4B782D
+S21902518C3800FFFFB01A00103920001AB13A0014396000003CB0
+S2190251A1001088917A00046000000C901A00003920D555B13AC7
+S2190251B6000E3800280AB01A0008392000903D60FA10992B003F
+S2190251CB00A01E096260000001B01E0962A13E09605529043CFF
+S2190251E0B13E0960419E00103D6002007C0004AC7D788BA681FA
+S2190251F53900003C800003816900247F23CB78800B000038846C
+S21902520A32307C0803A64E800021386000018001002C7C08033D
+S21902521FA68321000C83410010836100148381001883A1001CF5
+S21902523483C1002083E10024382100284E8000209421FFF87CDB
+S2190252490802A69001000C4BFFF7BD3860001C48004421386005
+S21902525E001C480042C98001000C7C0803A6382100084E8000DC
+S219025273209421FFF87C0802A69001000C3860001C480041410C
+S219025288386000038001000C7C0803A6382100084E80002094D2
+S21902529D21FF207C0802A67D800026934100C8936100CC9381F6
+S2190252B200D093A100D493C100D893E100DC900100E491810005
+S2190252C7C43BA000007C7B1B787C9A23783D2000033BC910403D
+S2190252DC93A1009893A100B0386100083880000038A0000C4881
+S2190252F1004C993D200004814919643B8100183800000C396063
+S21902530600013D200003B0010010B161000E91410008B3A1001B
+S21902531B0C392910987F83E3783880007638A0000038C0000203
+S21902533038E1009039000000480062793D200003392910A038B2
+S2190253456100303880007238A0000038C0000238E100943900D9
+S21902535A0000480062553D200003392910B0386100483880001D
+S21902536F6238A0000138C0000038E100983901009C480062318D
+S2190253843D200003392910C0386100603880006D38A00001384C
+S219025399C0000138E100A0390100A44800620D3D200003392927
+S2190253AE10E0386100783880006838A0000138C0000138E100D7
+S2190253C3A8390100AC480061E93D4000037F63DB787F44D378EB
+S2190253D87F86E378394A10F838A0000138E00005390100B039B5
+S2190253ED200001480061DD2C0300003BE00000418202888001E5
+S21902540200AC2C0000004182002C806100A838810008480079BC
+S219025417752C030000408200183C600003808100A83863110403
+S21902542C4800528948000254800100A42C00000041820074809B
+S2190254416100A03C8000033884111C480053B52C030000408265
+S219025456000C3BE0000148000054806100A03C80000338841169
+S21902546B24480053952C030000408200283D2000038009381483
+S2190254803BE000002C000000408200283C6000033863112C4820
+S219025495005221480001EC3C600003808100A0386311544800CB
+S2190254AA520D480001D82E1F0000409200DC806100B02C0300AB
+S2190254BF004082001C3C60000338631168480051E97FC3F37811
+S2190254D4480051E1480001AC38C100B47CDE33783881000838A2
+S2190254E9A00001480066257C7C1B7940800028806100B483A106
+S2190254FE00B0480069BD7C651B783C6000033863117C7FA4EB2B
+S21902551378480051A14800016C3C600003808100903863BCB8D6
+S219025528480001A93D2000043B491A7C3BA000003B6100B84883
+S21902553D00000C7F9DD9AE3BBD0001281D000341810018480040
+S21902555201A97C7C1B794080FFE8801A0110900100B42C1C0028
+S2190255670040800028806100B44800694D7C641B783C6000039B
+S21902557C38631194480051357FC3F3784800671D480000F82C20
+S2190255911F0001408200143C600003386311B84800511548000F
+S2190255A600E04800010D800100942C00000041820054800100DA
+S2190255BB9C2C000000408200143C600003386311E4480050E986
+S2190255D0480000A883A100984800000C987D00003BBD00014869
+S2190255E50001157C631B794080FFF03C6000038081009838639F
+S2190255FA12087FA5EB78480050B5480000743C8000033884125E
+S21902560F20386100B938A00003480052492C0300003BA100B88C
+S219025624408200143C600002386356F8480006DD4800004488CE
+S2190256390100B82C00005340820028893D00013929FFD028090A
+S21902564E0009418100183C60000280810098386356F8480001F4
+S219025663C9480000143C600003808100B8386312244800504104
+S2190256784092000C386100B448006625800100E4818100C47C71
+S21902568D0803A6834100C8836100CC838100D083A100D483C104
+S2190256A200D883E100DC7D808120382100E04E8000203D2000B2
+S2190256B70439291A7C8009010C396900049009010891690104FE
+S2190256CC4E8000203D600004392B1A7C394000003800010090F7
+S2190256E16B1A7C914901189009010C90890114914901084E8034
+S2190256F600209421FFF07C0802A693C1000893E1000C9001003B
+S21902570B143D2000043BE91A7C83DF01082C1E00004080000CD2
+S2190257203860FFFF480000EC408200C4801F01142C00000041FC
+S219025735820038817F01183D200003392932387C8958AE396BAA
+S21902574A00013C600003917F01183863103848004F5D801F0103
+S21902575F18280000064081000893DF01183D2000043BE91A7C79
+S219025774801F010C2C0000FF41810020801F01142C000000413F
+S21902578982FF983C6000033863103C48004F214BFFFF883D207F
+S21902579E000481291A7C381F00047C0303783880010038BF01A5
+S2190257B3107D2803A6901F01044E8000212C030000907F010C8E
+S2190257C8907F010841810020801F01142C0000004182FF483CA5
+S2190257DD6000033863103C48004ED14BFFFF383D400004394A7A
+S2190257F21A7C812A0108816A01043929FFFF912A0108886B004A
+S21902580700396B0001916A0104800100147C0803A683C10008D2
+S21902581C83E1000C382100104E8000209421FF707C0802A692C7
+S21902583181006092A1006492C1006892E1006C93010070932191
+S2190258460074934100789361007C9381008093A1008493C10076
+S21902585B8893E1008C900100947C7D1B787C9523783B600000B1
+S2190258703A8000013B2000003AC000003AE0FFFF480002602C1E
+S219025885050053418200183C60000338630ED87F64DB78480036
+S21902589A4E1D480002547FA803A63B7B00024E80002138A10099
+S2190258AF5838000000547C063E7CBA2B78900100587FA3EB78F2
+S2190258C438800001480002697C7F1B79408000183C600003381E
+S2190258D9630F047F64DB7848004DD54800020C381CFFD02800FC
+S2190258EE00093B7B0001418101AC3D600003396B1010540010A7
+S2190259033A7D4B002E3D200003392910107D4A4A147D4903A6E2
+S2190259184E8004207FA3EB78389CFFD17F45D378480002092CCA
+S21902592D1400007C7E1B78381BFFD17FD8F3787F60E214418240
+S219025942002C2C1500004182001C7F3EA8503C60000338630FFF
+S219025957287F24CB7848004D59480000083B2000003A800000D3
+S21902596C3D200003816938047FDECA147D39F0507C1748107C01
+S2190259810001107C0003B87D2900787C1E58407EE000387C1749
+S2190259964B78418000143D200003800937EC7C1E0040408100B6
+S2190259AB183C60000338630F407FC4F37848004CFD4800013483
+S2190259C0381F002E7FFC00507FE9FB782C0900007F7BFA143B28
+S2190259D5FFFFFF408100307F5CD3787FA3EB78388000017F8560
+S2190259EAE378480001457FE0FB782C000000987E00003BDE008B
+S2190259FF013BFFFFFF4181FFDC7FA3EB783880000138A00000A0
+S219025A144800011D88A1005B7C6318F85466063E7C0628003BBA
+S219025A297B000190A10058418200183C60000338630F7C7F0439
+S219025A3EC37848004C75480000AC7D39F0507C09B0107C00015C
+S219025A53107C0003B87D2900787EC000387C164B78480000546B
+S219025A687FA3EB78209C003B7F45D378480000BD7C7E1B783DC8
+S219025A7D2000033C60000393C9380C38630FB87FC4F3787EE538
+S219025A92BB787EC6B37848004C1D480000543C60000338630FC0
+S219025AA7E07F64DB787F85E37848004C054800003C7F7FDB7800
+S219025ABC7FBEEB78480000083BFF00017FC803A64E8000212C98
+S219025AD103000A4082FFF07FDDF3787FFBFB787FA803A64E80A9
+S219025AE600217C651B794181FD98800100947C0803A682810072
+S219025AFB6082A1006482C1006882E1006C830100708321007422
+S219025B10834100788361007C8381008083A1008483C100888362
+S219025B25E1008C382100904E8000209421FFE07C0802A693616C
+S219025B3A000C9381001093A1001493C1001893E1001C9001004A
+S219025B4F247C9E23787FC0F3782C0000007C7B1B787CBC2B7826
+S219025B643BA000003BDEFFFF408101787F6803A64E8000217FFB
+S219025B796803A6547F063E4E800021393FFFD0381FFFBF212953
+S219025B8E0009392000007D29491420000005380000007C0001BC
+S219025BA3147D270379546B063E3920000040820010381FFF9F8F
+S219025BB82800000541810008392000012C09000041820104394A
+S219025BCD2BFFD0380BFFBF7D2A4B787C0803785529063E540042
+S219025BE2063E21290009392000007D2949142000000538000057
+S219025BF7007C0001147D2703793920000040820010380BFF9FD5
+S219025C0C2800000541810008392000012C090000418200B0394A
+S219025C213FFFD05520063E2800000957BD402E4181000C7D237F
+S219025C364B7848000030381FFF9F280000054181000C387FFF71
+S219025C4BA94800001C381FFFBF393FFFC9200000057C00011029
+S219025C607C0003B87C0348385540063E280000094181000C7D9D
+S219025C7549537848000030380BFF9F280000054181000C392B47
+S219025C8AFFA94800001C5500063E392BFFC9200000057C00018B
+S219025C9F107C0003B87C094838546020362C1C00007C034B7809
+S219025CB47FBD1B784182001C801C00007C001A14901C000048EC
+S219025CC900000C3860FFFF480000187FC0F3782C0000003BDECE
+S219025CDEFFFF4181FE907FA3EB78800100247C0803A683610021
+S219025CF30C8381001083A1001483C1001883E1001C38210020E8
+S219025D084E8000209421FFF87C0802A69001000C3C6000033845
+S219025D1D630EBC480049958001000C7C0803A6382100084E802E
+S219025D3200209421FFF07C0802A693C1000893E1000C900100F8
+S219025D47143D6000033D200003392936183BEB36147C1F4840E9
+S219025D5C418000207D3E4B78813F00003BFFFFFC7D2803A64E3B
+S219025D718000217C1FF0404080FFEC800100147C0803A683C1F9
+S219025D86000883E1000C382100104E8000209421FFF87C080200
+S219025D9BA69001000C3D200003800935942C0000004182000CFC
+S219025DB090030094480000243D2000039069385C480015417C3D
+S219025DC51602A628007A124081000C38007A127C1603A6800103
+S219025DDA000C7C0803A6382100084E8000204E8000203860009F
+S219025DEF004E8000209421FFF07C0802A693E1000C90010014B5
+S219025E04480005AD3D20000338893504800400083BE000002C5B
+S219025E19000000418200307FE3FB787C9F2378809F000080BF91
+S219025E2E000480DF000888FF000C3BFF00104800047D801F00A8
+S219025E43082C0000004082FFE0800100147C0803A683E1000C3C
+S219025E58382100104E8000204E8000209421FFF87C0802A69081
+S219025E6D01000C480000ED38007A127C1603A68001000C7C08C7
+S219025E8203A6382100084E8000203D20002F6129AF087C634917
+S219025E97D63C00431B6000DE837C0300967C63FE707C009670DA
+S219025EAC7D6300507D3602A67D605B782C000000396BFFFF4C85
+S219025EC1810020394BFFFF7C1602A67C0900004182FFF87C09A4
+S219025ED603787D605B782C0000007D4B53784181FFE04E800057
+S219025EEB209421FFF87C0802A69001000C3D20FF0061290930E7
+S219025F0038000001B00900007C0006ACA00900007C0006AC543A
+S219025F1500AAFF38600000418200302060003A3D60000354602E
+S219025F2A103A396B32407D6B002E3D2000033929332C7C8900BF
+S219025F3F2E7D6803A64E800021546307FA8001000C7C0803A629
+S219025F54382100084E8000203D20000339493240390000407C99
+S219025F690A402E3D20000239295DEC7C00480041820018800A71
+S219025F7E00403D20000339299E087C004800408200343D200048
+S219025F930239295EEC3D600003380000007D2A412E6000DEAD6B
+S219025FA8396B332C7C0B412E3D20000339293418380000007C22
+S219025FBD09412E3D600003800B1D643D20000339291D287D29F7
+S219025FD202147D2903A64E8004203D20FF0061290014800900D9
+S219025FE7007C0006AC64000001900900007C0006AC480000E814
+S219025FFC3D20FF0061290200A00900007C0006AC60000008B0B2
+S2190260110900007C0006AC480000C83D20FF0061290200A0099B
+S21902602600007C0006AC60000004B00900007C0006AC4800009D
+S21902603BA83D20FF0061290240A00900007C0006AC600000043E
+S219026050B00900007C0006AC480000883D20FF0061290220A0D5
+S2190260650900007C0006AC60000008B00900007C0006AC480051
+S21902607A00683D20FF0061290220A00900007C0006AC60000063
+S21902608F04B00900007C0006AC480000483D20FF00612909404B
+S2190260A4800900007C0006AC60000080900900007C0006AC483A
+S2190260B90000283D20FF0061290948816900007C0006AC3C0018
+S2190260CE800054005D7E7D6B0378916900007C0006AC3D6000DF
+S2190260E303800B1E743D20000339291E107D2902147D2903A686
+S2190260F84E8004203D20FF0061290200A00900007C0006AC5487
+S21902610D00063E60000100B00900007C0006AC480000683D20DD
+S219026122FF0061290240A00900007C0006AC5400063E600001C6
+S21902613700B00900007C0006AC480000443D20FF0061290220D1
+S21902614CA00900007C0006AC5400063E60000100B00900007C32
+S2190261610006AC480000203D20FF0061290940800900007C00D4
+S21902617606AC6000E000900900007C0006AC3D600003800B1F0A
+S21902618B5C3D20000339291EF87D2902147D2903A64E800420C7
+S2190261A03D20FF0061290014800900007C0006AC600000409002
+S2190261B50900007C0006AC4E8000203D20FF0061290200A00918
+S2190261CA00007C0006AC60000008B00900007C0006AC4E80006E
+S2190261DF203D20FF0061290200A00900007C0006AC6000000461
+S2190261F4B00900007C0006AC4E8000203D20FF0061290240A0F2
+S2190262090900007C0006AC60000004B00900007C0006AC4E8029
+S21902621E00203D20FF0061290220A00900007C0006AC60000005
+S21902623308B00900007C0006AC4E8000203D20FF00612902206A
+S219026248A00900007C0006AC60000004B00900007C0006AC4ECA
+S21902625D8000203D20FF0061290940800900007C0006AC60003F
+S2190262720080900900007C0006AC4E8000203D20FF00612909EC
+S21902628748816900007C0006AC3C00800054000FFE7D6B03781B
+S21902629C916900007C0006AC4E8000207C1E22A6600000077C8B
+S2190262B11E23A64E8000209421FFF093E1000C54E0FFFE70FF38
+S2190262C600012F0000002F8300207CC0FE707D600026556B1F2E
+S2190262DBFE54A500267D400026554ADFFE7C0600507D4A00D0C2
+S2190262F07CE0002654E7EFFE7D6B00D060A808FF54000FFE7D43
+S2190263050858787D4950F860A508FD7CFF00387CAB5838714A67
+S21902631A000D2F9F00007D654378548400267129001D7D4A4B28
+S21902632F78608402003960000039000020419E005C546B402E9A
+S2190263447D55C3A67D70C3A67C93C3A67CB6C3A660A001007D1B
+S2190263595DC3A67D78C3A67C9BC3A67C1EC3A6386300013CC6E3
+S21902636EFF807F8340007CC0FE707C0600507D2000265529EFA6
+S219026383FE54000FFE7D2700393C8400803CA500804082FFACB4
+S219026398656020007C10C3A67C18C3A683E1000C382100104EEB
+S2190263AD800020380000007C19C3A6380000207C0903A639201F
+S2190263C20000380000007C15C3A67D30C3A67C13C3A67C16C32A
+S2190263D7A67C1DC3A67D38C3A67C1BC3A67C1EC3A6392901007E
+S2190263EC4200FFD83C00200060001F007C10C3A67C18C3A64E61
+S2190264018000209421FDE87CDE9AA674C6FFFF3D600003812B27
+S21902641635542C0900004082020039400030380000017D49033D
+S21902642BA6900B3554B12609C43800000039263C807D284B782C
+S2190264409806086038E62E0838A1000838862E0038610009393E
+S21902645581021198090000392900014200FFF839202E00B128FA
+S21902646A0002396000103940020938002E089968000599680072
+S21902647F04B0080000B14800063920A800B1262E0838000101FE
+S219026494B007000290A700047C8B2378B14B0002380000A598E3
+S2190264A901000890AB0004B1262E0038000000980608643920EF
+S2190264BE005099260868380000019806086039200111B12609B9
+S2190264D3C0A00609C070090001418200187CC93378A00909C0C7
+S2190264E8700A00014082FFF87D264B7838000211B00609C0A193
+S2190264FD2609C071200001418200187CC93378A00909C0700A4B
+S21902651200014082FFF87D264B78392000007D2903A63800006D
+S219026527819806086C7D4902A6614AC3517D4903A6A00B00007E
+S21902653C70098000418200084200FFF4394001007D4903A63D24
+S21902655120000339297CE439600000380000FF7C0959AE396B49
+S21902656600014200FFF87D8763787C6B1B787C0B380041820004
+S21902657B9C3CA00003880B00002C00004D40820080880B0001A7
+S2190265902C00004F40820074880B00022C000054408200688C73
+S2190265A50B000839400000892B00015400402E7C084B787C0A0A
+S2190265BA4000396B00024080005438857CE47C651B78880B00A7
+S2190265CF00396B00017D693A787D23FE707C0451AE7C604A7848
+S2190265E47C0018507C00FE70394A00017CA900787C0A40007D69
+S2190265F96000387C0B4B784180FFCC48000010396B00017C0B94
+S21902660E38004082FF703800000098060860382102184E800088
+S219026623209421FFE87C0802A693A1000C93C1001093E1001447
+S2190266389001001C7C7D1B787C9F23787CBE2B784BFFFDBD3D39
+S21902664D20000339697CE4394B01007C0B50404080008457A82D
+S219026662063E880B00007C00400040820054886B0001396B00DB
+S219026677027F83F0004FFEE3827C000026540007FE7C0000D01A
+S21902668C7FC900787C6000387C034B794081004C7C6903A67DC3
+S2190266A1695B787FE4FB7888090000392900019804000038847F
+S2190266B600014200FFF048000028886B0001380300027D2B004D
+S2190266CBEE5529063E2C0900FF4182000C7C0B50404180FF88A1
+S2190266E0386000008001001C7C0803A683A1000C83C100108335
+S2190266F5E10014382100184E8000209421FFF87C0802A69001CC
+S21902670A000C480035418001000C7C0803A6382100084E8000C0
+S21902671F203C80FF00608400007C9E9BA63CA0FA1060A5000158
+S2190267343C60000060630000986500007C788AA63C600A007CA7
+S2190267490004AC7C788BA63C600C007C0004AC7C788BA63C60CA
+S21902675E04007C0004AC7C788BA63C6001007C0004AC7C788B82
+S219026773A63C6007007C0004AC7C788BA67C708AA63C600A00AE
+S2190267887C708BA64C00012C3C600C007C708BA64C00012C3CE5
+S21902679D6004007C708BA64C00012C7C0004AC3C6000606063FB
+S2190267B22400906400003C60FFFF6063FF88906400043C60003B
+S2190267C700606300C2B06402003C6055CC6063AA3390640320A7
+S2190267DC90640324906403289064032C386000C3B0640220387B
+S2190267F1600083B064024038600200B064017A3C601880606333
+S2190268061000906401703C60FE00606304013CA0FF8060A50936
+S21902681B609064010090A401043C600000606300813CA0FFC058
+S21902683060A504009064010890A4010C3C600000606300803CEA
+S219026845A0000060A504009064011090A401143C6000006063E1
+S21902685A00803CA0000060A504009064011890A4011C3C60FAC9
+S21902686F00606304013CA0FFE060A509309064012090A40124DE
+S2190268843C608000606300013CA0A00060A501089064012890E1
+S219026899A4012C3C60FA21606300013CA0FFFF60A501089064BB
+S2190268AE013090A401343C60FC00606300013CA0FF8060A5096F
+S2190268C3409064013890A4013C3C600200606300009064028004
+S2190268D8806402845463653E2C030000418200103C605F506033
+S2190268ED63D0004800000C3C6000006063D000906402843C40E3
+S21902690200003C60FF0060630014904300003C40000060420016
+S219026917007C4210F87C5603A6384000013C60FF00606302004A
+S21902692CB04300003CA0FA1060A500013C600000606300089871
+S2190269416500004E8000207063000E3C80FA106084000198645F
+S21902695600004E8000203C80FA106084000138A0000A98A4006E
+S21902696B003CA0000A7CA903A64200000038A0000C98A40000FA
+S2190269803CA0000A7CA903A6420000003863FFFF2C03000040FD
+S21902699580FFD038A0000698A400003CA000147CA903A642007D
+S2190269AA00004E8000203D20000339291FE05463073E7C691829
+S2190269BFAE4E8000209421FFF87C0802A69001000C3D2000034B
+S2190269D4806935702C0300004181000C48001B454800000C38E8
+S2190269E900FFFF900935708001000C7C0803A6382100084E806D
+S2190269FE00203803FF9F280000054181000C3863FFA94E800078
+S219026A13203923FFD05520063E280000094181000C7D234B7801
+S219026A284E8000203803FFBF280000054081000C3860FFFF4E8D
+S219026A3D8000203863FFC94E8000209421FFE07C0802A69001FB
+S219026A5200243800000098010018906100104BFFFF65546306AF
+S219026A673E388100084800001D2C0300014082FFEC800100242D
+S219026A7C7C0803A6382100204E8000209421FFF07C0802A69307
+S219026A91C1000893E1000C900100147C9F2378897F00102C0BF6
+S219026AA60000408200282C03002440820098392000013800FFAC
+S219026ABBFF901F0004993F0010917F0000917F000C4800007C35
+S219026AD02C0B0001408200542C03002340820020815F000881BF
+S219026AE57F000C380000007C0A59AE39200002993F00104800BA
+S219026AFA0050817F000C2C0B0800418200E8801F0000813F00DB
+S219026B0F087C001A14901F00007C6959AE380B0001901F000C1E
+S219026B24480000242C0B0002408200245463063E4BFFFECD5466
+S219026B3963203638000003907F0004981F001038600000480092
+S219026B4E00AC2C0B0003408200985463063E4BFFFEA5801F0064
+S219026B6304893F00037C001B787C090000901F0004418200102D
+S219026B783860002D4800196D4800006C3860002B4800196181B4
+S219026B8D3F0008880900022C00003A4082004C8869000083DF4B
+S219026BA2000C48001945813F0008886900014800193939600038
+S219026BB7037C0BF040418100287FCAF3787FE4FB7881240008E7
+S219026BCC7C0958AE7D2B4A14396B00017C0B50409809FFFD4083
+S219026BE181FFE8386000014800001038000000981F00103860A8
+S219026BF6FFFF800100147C0803A683C1000883E1000C382100AE
+S219026C0B104E8000209421FFE07C0802A69361000C938100108B
+S219026C2093A1001493C1001893E1001C900100243D2000033BC4
+S219026C35691FE07C7C1B7838600024480018A98BFC00003BC009
+S219026C4A00002C1F00003BA00000418200247FE3FB78480018EC
+S219026C5F8D7C1DFA143BDE00017FFCF0AE541D063E2C1F0000B2
+S219026C744082FFE4386000234800186D57A0E13E7C7B00AE48D4
+S219026C8900186157A0073E7C7B00AE480018554BFFFD2D5463B5
+S219026C9E067E2C03002B4082FF98800100247C0803A6836100ED
+S219026CB30C8381001083A1001483C1001883E1001C3821002018
+S219026CC84E8000209421FFD87C0802A693610014938100189343
+S219026CDDA1001C93C1002093E100249001002C3D2000038169CB
+S219026CF238303D4000032C0B000038000000900A35743F60004D
+S219026D07033F800003408101383FC000033FA000033D2000036D
+S219026D1C8009383C2C0000004182006C801C38303D6000032837
+S219026D3100000340810018801E3834700900034082000C3BE0FB
+S219026D46000448000034801C38303BE0000128000001408100A7
+S219026D5B24800B3834540007FE7C0000D07C00FE707C0900F8F5
+S219026D70540007FE552907BC7C1F4B78808B3834386100087F78
+S219026D85E5FB784800233148000014813E38343BE000018809CA
+S219026D9A0000980100083D200003800935742C000000408200BC
+S219026DAF98390000007C08F8004080006C3D20000338C91FE0EF
+S219026DC438A100083CE000033C8000037D6828AE8147383855AC
+S219026DD960E13E7D2600AE992A000080043574394A00012C002E
+S219026DEE000091473838408200505560073E7D2600AE396A0041
+S219026E0301992A0000801B3574916738382C00000040820030E5
+S219026E18390800017C08F8004180FFB0813D3830801E38347D83
+S219026E2D3F48502C0900007C00FA14901E3834913D38304181A1
+S219026E42FED88001002C7C0803A6836100148381001883A1004C
+S219026E571C83C1002083E10024382100284E8000209421FFE80C
+S219026E6C7C0802A693A1000C93C1001093E100149001001C2CD9
+S219026E810600003D2000033D6000033D4000033D000003908916
+S219026E963838906B383490AA383090C8383C418200303FA000C9
+S219026EAB0338000000901D3574813D35744BFFFE15813D35740F
+S219026EC0801D35742C00000041820010386000004800001C4B2A
+S219026ED5FFFDF93D600003812B38383800000098090000806B2C
+S219026EEA38388001001C7C0803A683A1000C83C1001083E1006A
+S219026EFF14382100184E8000209421FFC07C0802A69281001041
+S219026F1492A1001492C1001892E1001C93010020932100249301
+S219026F294100289361002C9381003093A1003493C1003893E117
+S219026F3E003C900100443D200003800938303B6000002C00000E
+S219026F53003D200003936935743E8000033EA000034081017049
+S219026F683D200003816938343F000003880B00002C0000004115
+S219026F7D8201583EC000033F4000033EE000038016383C2C0043
+S219026F92000041820058801538302800000340810018801A38F5
+S219026FA738700900034082000C3BC000044800003C80153830CC
+S219026FBC3BC00001280000014081002C801A3838540007FE7CC8
+S219026FD10000D07C00FE707C0900F8540007FE552907BC7C1E39
+S219026FE64B78480000083BC000013BE000007C1FF0004080001A
+S219026FFB743FA000033F2000033B810008813D383488690000E3
+S21902701039290001913D38345463063E4BFFF9E580193574540E
+S2190270257B26362C000000408200A8813838348869000039296A
+S21902703A0001913838345463063E4BFFF9BD801435747F631BCF
+S21902704F782C000000547B063E4082007C7F7FE1AE3BFF000168
+S2190270647C1FF0004180FFA08016383C2C000000418200188094
+S2190270799A3838386100087FC5F378480020954800000C813A95
+S21902708E38389B6900003D200003800935742C000000408200F2
+S2190270A33481373830801A38387D3E48502C0900007C00F21469
+S2190270B8901A3838913738304081001481383834880900002CBB
+S2190270CD0000004082FEBC800100447C0803A68281001082A103
+S2190270E2001482C1001882E1001C830100208321002483410074
+S2190270F7288361002C8381003083A1003483C1003883E1003C9D
+S21902710C382100404E8000209421FFE87C0802A693A1000C9345
+S219027121C1001093E100149001001C2C0600003D2000033D601D
+S21902713600033D4000033D00000390693834908B383890AA3818
+S21902714B3090C8383C418200303FA0000338000000901D3574C9
+S219027160813D35744BFFFDA5813D3574801D35742C00000041A6
+S21902717582001038600000480000104BFFFD893D200003806963
+S21902718A38388001001C7C0803A683A1000C83C1001083E100C7
+S21902719F14382100184E8000209421FFF87C0802A69001000CEC
+S2190271B448001AA53D20000338000001900935588001000C7CF0
+S2190271C90803A6382100084E8000209421FFE87C0802A693A1AE
+S2190271DE000C93C1001093E100149001001C7C9E23783BA00060
+S2190271F3007C7F1B7893BE000048000024801E0000813F0000D7
+S219027208540020367C001B7839290001901E0000913F00003B95
+S21902721DBD0001813F0000886900002C030000418200104BFF9A
+S219027232F7D17C631B794080FFC87FA3EB788001001C7C0803D5
+S219027247A683A1000C83C1001083E10014382100184E8000202A
+S21902725C7C84237939400000408200183800003098030001988B
+S219027271030000386000024E800020392500077D20FE705400B2
+S2190272861F7E7D2902147D251E71418200603D20000338C91FBF
+S21902729BE038E5FFFF54E018387C88043068A9000120090000E5
+S2190272B07D2049143168FFFF7C0B41107C0B4B794182002855CE
+S2190272C508063E5500E13E7D6600AE5509073E7C0648AE996345
+S2190272DA00009C03000138630001394A00027CE53B794082FF01
+S2190272EFB07D4353784E8000204E8000204E8000209421FFF0DA
+S2190273047C0802A693C1000893E1000C900100143D20000380E0
+S21902731909356C2C000000418200108009356C7C0803A64E808A
+S21902732E00213D200003800938602C0000004182001438000066
+S21902734300900938603BE000024800001048006D7148006CA509
+S2190273587C7F1B7848006E2D2C0300004182000848006E594857
+S21902736D006E194BFFFF8D48006DC93860000348001BD13860C2
+S219027382000348001B612C1F0000418200203FC00003813E3504
+S2190273975C7FE3FB787D2803A64E8000212C0300004082FFEC90
+S2190273AC48006DD53D200003800935682C000000418200108036
+S2190273C10935687C0803A64E800021800100147C0803A683C1E8
+S2190273D6000883E1000C382100104E8000209421FFB87C0802DA
+S2190273EBA6936100349381003893A1003C93C1004093E10044B0
+S2190274009001004C7C7E1B783BE000003F6000033B81002880E5
+S2190274151B384C3BA000012C0000004182001C7FE3FB787F84FD
+S21902742AE3787C0803A64E8000217C7D1B78480000107FE3FB8E
+S21902743F784800108190610028381FFFE02800001F7C0A037849
+S2190274542F9D00003BFF00017F83E3784181004C390000047DF0
+S2190274690903A6386100087C6B1B7838000000392000007C0B22
+S21902747E49AE392900014200FFF8380000047C0903A67C6943CD
+S219027493787F8BE378880B0000396B00019809000039290001C4
+S2190274A84200FFF0419E0030200A001F7C0001107C0500F854E5
+S2190274BD00077A54A507387FC4F3787C052B7838C000004BFFE6
+S2190274D2F9997C7E1B7848000058212A001F7D2949107D204891
+S2190274E7F8540006F6552907387D2903782C0900007FCBF37879
+S2190274FC380000783929FFFF418200182C090000980B00003978
+S2190275116B00013929FFFF4082FFF0280A001F4181000C3BDEA9
+S2190275260010480000083BDE00082C1F00464081FEE080010017
+S21902753B4C7C0803A6836100348381003883A1003C83C1004083
+S21902755083E10044382100484E8000209421FFD07C0802A67DBB
+S2190275658000269381002093A1002493C1002893E1002C90012B
+S21902757A00349181001C88030000386300012C0000507C9D23B4
+S21902758F7890610008392000003BC00047408200703861000801
+S2190275A43881000C4BFFFC2D2C03000041820028812100088847
+S2190275B9090000392900012C00003D91210008408200108121B3
+S2190275CE000C3BC90001480000383D20000388091FF87FA4EBFA
+S2190275E3782C00000039691FF8418200D8880B00009804000065
+S2190275F88D2B0001388400012C0900004082FFEC480000BC7D9E
+S21902760D3F4B787C1FF000408000803B800000397FFFE020AB77
+S219027622001F7CA52910392100103881000C7CA028F87C842840
+S219027637787CA9483854A5077A54000738806100082A0B001FD0
+S21902764C7CA503787D2423789381001038C000004BFFFAB980B1
+S2190276618100107FE3FB7848000E6D41910010812100083929F6
+S21902767600104800000C8121000839290008912100083BFF008C
+S21902768B017C1FF0004180FF8C3D20000388091FFC7FA4EB7879
+S2190276A02C00000039691FFC4182001C880B0000980400008D4A
+S2190276B52B0001388400012C0900004082FFEC3800000098041A
+S2190276CA0000800100348181001C7C0803A68381002083A1005C
+S2190276DF2483C1002883E1002C7D808120382100304E8000205A
+S2190276F49421FF287C0802A693A100CC93C100D093E100D49076
+S2190277090100DC3BA000003D6000047C7E1B789BAB8774893E76
+S21902771E00003809FFC128000034418108283D600003396B209C
+S219027733105400103A7D4B002E3D200003392920107D4A4A147F
+S2190277487D4903A64E80042048006971480068A53D20000339B4
+S21902775D291FE05460E73E7D0900AE5463073E7CE918AE3D4037
+S219027772000438000053392A8774980A877439600000996900D6
+S219027787039909000198E90002480007D4387E000148000B6D23
+S21902779C480007C8387E000148000CE5480007BC3C60000438E7
+S2190277B16387744BFFFC31480007AC881E00012C000000408257
+S2190277C60040480009013D20000388091FFC3D6000042C00003C
+S2190277DB00396B877439491FFC41820748880A00008D2A0001FA
+S2190277F0980B00002C090000396B00014082FFEC4800072C38A0
+S2190278051E0001900100883BC1008C3BE100887FE3FB787FC4EB
+S21902781AF3784BFFF9B92C030000418200A4812100888809009A
+S21902782F00392900012C00002C912100884082008C7FE3FB7825
+S219027844388100904BFFF98D2C030000418200788121008888F3
+S219027859090000392900012C00002C91210088408200608081F2
+S21902786E008C2C04000041820038806100904800088D7C641BFE
+S21902788379418200148061008880A1008C38C000004BFFF881C8
+S2190278988001008C812100887C0002147D290214912100888194
+S2190278AD210088880900002C00002C4082001038090001900188
+S2190278C200884BFFFF5081210088880900002C000000408200E0
+S2190278D73C3D20000388091FFC3D6000042C000000396B8774E1
+S2190278EC39491FFC4182063C880A00008D2A0001980B00002CC5
+S219027901090000396B00014082FFEC480006203D2000038809B0
+S21902791620003D6000042C000000396B8774394920004182065E
+S21902792B04880A00008D2A0001980B00002C090000396B000175
+S2190279404082FFEC480005E83C8000047FC3F378388487744BDA
+S219027955FFFC094800060C381E00013BE10094900100947FE32A
+S21902796AFB78388100984BFFF8652C0300004182009081210072
+S21902797F9488090000392900012C00002C91210094408200788C
+S2190279947FE3FB783881009C4BFFF8392C03000041820064805C
+S2190279A96100983C80000480A1009C3884877438C000014BFF52
+S2190279BEF4AD2C030000408205A03D600003880B20043D2000C2
+S2190279D3042C00000039498774396B20044182001C880B0000B1
+S2190279E88D2B0001980A00002C090000394A00014082FFEC388A
+S2190279FD000000980A0000480005603D200003880920003D6071
+S219027A1200042C000000396B8774394920004182050C880A0081
+S219027A27008D2A0001980B00002C090000396B00014082FFEC61
+S219027A3C480004F03BA00001381E00013BE100A0900100A07F53
+S219027A51E3FB78388100A44BFFF77D2C030000418201F881211B
+S219027A6600A088090000392900012C00002C912100A040820103
+S219027A7BE07FE3FB78388100A84BFFF7512C030000418201CC88
+S219027A90806100A088030000386300012C00003A906100A040FB
+S219027AA58201B42C1D000041820124800100A82C000000418245
+S219027ABA00A8800100A83BE000007C1F0040408000543941005B
+S219027ACF08816100A0892B0000396B00017D204B782C00007DAF
+S219027AE47D2AF9AE916100A040820018880B0000392B00016074
+S219027AF90000207C0AF9AE912100A03BFF0001281F007F41810F
+S219027B0E0010800100A87C1F00404180FFB8808100A438610091
+S219027B23087FE5FB78480015F17C03F80040820024812100A872
+S219027B38800100A47D3F48502C0900007C00FA14900100A49133
+S219027B4D2100A84082FF6C800100A82C0000004082003C3D2076
+S219027B62000388091FFC3D6000042C000000396B877439491F4B
+S219027B77FC418203B4880A00008D2A0001980B00002C0900005A
+S219027B8C396B00014082FFEC480003983D200003880920043D56
+S219027BA16000042C000000396B8774394920044182037C880A1F
+S219027BB600008D2A0001980B00002C090000396B00014082FFBD
+S219027BCBEC48000360808100A480A100A838C000014BFFF53928
+S219027BE02C0300004182003C3D20000388091FFC3D6000042C82
+S219027BF5000000396B877439491FFC4182032C880A00008D2AFD
+S219027C0A0001980B00002C090000396B00014082FFEC480003E8
+S219027C1F103D200003880920043D6000042C000000396B8774B8
+S219027C3439492004418202F4880A00008D2A0001980B00002CBC
+S219027C49090000396B00014082FFEC480002D83D2000038809B1
+S219027C5E20083D6000042C000000396B87743949200841820207
+S219027C73BC880A00008D2A0001980B00002C090000396B000172
+S219027C884082FFEC480002A0881E0000395E0001680900532126
+S219027C9D6900007D2B491468000043216000007C0B01147C0B0E
+S219027CB24B7939600000914100AC916100B03BE100AC418200AE
+S219027CC7287FE3FB78388100B04BFFF505812100AC8809000018
+S219027CDC2C00003B4082000C38090001900100AC7FE3FB7838CB
+S219027CF18100B44BFFF4E12C0300004182000C806100B4480048
+S219027D0663D1386000034800124138600003480011D180610051
+S219027D1BB02C0300004182004C3D200003800935642C000000B0
+S219027D304182001C800935647C0803A64E8000217C631B794067
+S219027D45820008906100B0800100B02C00000041820018380087
+S219027D5A0009900100B0386000094800030D4800020848000927
+S219027D6F4D2C0300004182001838000063981E00003D200003F0
+S219027D843800000190093584881E000068090053216900007DE7
+S219027D992B491468000073216000007C0B01147C0B4B79418240
+S219027DAE0024386000004BFFF5453D20000439291B983D600066
+S219027DC303912B3580480063354800000C386000014BFFF525FF
+S219027DD8386000034800117138600003480011013860FFFF4857
+S219027DED0001883D200003800935607C0803A64E8000213860BF
+S219027E0200014800017048000F8948000158381E000190010041
+S219027E17B8386100B8388100BC4BFFF3B52C0300004182007C71
+S219027E2C812100B888090000392900012C00002C912100B840EA
+S219027E4182006488090000392900012C000043912100B84082B0
+S219027E560010806100BC48001ADD4800000C806100BC48001AD1
+S219027E6BC93D20000388091FFC3D6000042C000000396B8774BA
+S219027E8039491FFC418200A8880A00008D2A0001980B00002CC5
+S219027E95090000396B00014082FFEC4800008C3D2000038809B1
+S219027EAA20003D6000042C000000396B877439492000418200CB
+S219027EBF70880A00008D2A0001980B00002C090000396B000170
+S219027ED44082FFEC48000054381E0001900100C0386100C03810
+S219027EE98100C44BFFF2E92C030000408200443D2000038809ED
+S219027EFE200C3D6000042C000000396B87743949200C4182005F
+S219027F131C880A00008D2A0001980B00002C090000396B00016F
+S219027F284082FFEC38000000980B0000480000303C6000033866
+S219027F3D631FFC4BFFECD1806100C448000615480000183C807F
+S219027F5200047FC3F3783884877438A0012C4800121D3C600093
+S219027F6704386387744BFFECA538600000800100DC7C0803A667
+S219027F7C83A100CC83C100D083E100D4382100D84E80002094FA
+S219027F9121FFE87C0802A693A1000C93C1001093E100149001E3
+S219027FA6001C3FA00004389D877448000E21387D87744BFFEC93
+S219027FBB598001001C7C0803A683A1000C83C1001083E100148B
+S219027FD0382100184E8000209421FFF07C0802A693E1000C9056
+S219027FE50100143D200003800935702C000000408000084BFF9F
+S219027FFAFF993FE00003387F7F744BFFEA45387F7F744BFFF6A4
+S21902800FE97C631B794182FFEC7C6318F854630FFE8001001403
+S2190280247C0803A683E1000C382100104E8000204E80002094CA
+S21902803921FFF87C0802A69001000C4BFFF16548000C55386069
+S21902804E002B480004998001000C7C0803A6382100084E80001D
+S219028063203D200003906935704E8000209421FFF87C0802A61D
+S2190280789001000C3D20000339291FE05460E73E7D4900AE54ED
+S21902808D63073E7D0918AE3D60000438000058386B8774980B71
+S2190280A28774392000009943000199030002992300034BFFEBFF
+S2190280B75D8001000C7C0803A6382100084E8000203D200004E6
+S2190280CC38A0000039298FC43CC0000338E0FFFF3C8000033DFA
+S2190280E16000043D4000033D0000033800000190E6384490ABF9
+S2190280F68F74912A38489008357890A438404E8000209421FF9D
+S21902810BF07C0802A693C1000893E1000C900100143D2000035B
+S219028120800935787C7F1B782C0000007C9E2378408200084B89
+S219028135FFFF952C1F0012418100243D600003800B38483D2050
+S21902814A000439298FC47C0900507C00F21428000080408100A0
+S21902815F0C386000004800006C3CE00003800738447C1F0000EF
+S2190281744182004C3D000003800838407C1F00004180002039EB
+S2190281895F00013D20000439298F74554B103A380000007C090D
+S21902819E592E914838403D600003814B38483D20000439298FAF
+S2190281B37457E0103A7D49012E93E738443D2000038069384807
+S2190281C87C03F21490093848800100147C0803A683C10008836C
+S2190281DDE1000C382100104E8000209421FFD87C0802A6936196
+S2190281F200149381001893A1001C93C1002093E1002490010044
+S2190282072C3D600003800B357C7C7D1B782C0000007C9E2378E6
+S21902821C7CBF2B7840820058380000013D2000043929904490EE
+S2190282310B357C39400000380000087C0903A6390A0001554BAA
+S219028246C00E5547103A2C0B00005560083C4080000C6C0004FC
+S21902825BC168001DB77C0B03784200FFE87D0A4378280A00FF6C
+S2190282707C09392E4081FFC43D600003380000003D2000043B0E
+S219028285699044900B35743F800003480000248921000857E045
+S21902829A463E7C004A785400103A7D7B002E57E9402E7D3F5A7E
+S2190282AF783BBD00012C1E00003BDEFFFF41820020386100085D
+S2190282C47FA4EB7838A0000148000DED801C35742C000000414B
+S2190282D982FFBC7FE3FB788001002C7C0803A6836100148381A1
+S2190282EE001883A1001C83C1002083E10024382100284E8000E1
+S219028303209421FFD87C0802A693A1001C93C1002093E100242A
+S2190283189001002C3D20000438000000980987743BA987747CFC
+S21902832D691B7890610008880900002C000043408200F48809F8
+S21902834200012C000052408200E88BC900022C1E004340820051
+S219028357DC880900032C00003A408200D0380900043BE1000839
+S21902836C900100087FE3FB783881000C4BFFEE5D2C03000041BD
+S2190283818200EC8121000888090000392900012C00002C9121CA
+S2190283960008408200D47FE3FB78388100104BFFEE312C0300F7
+S2190283AB00418200C08061000C8081001038A0FFFF4BFFFE2DEA
+S2190283C03D20000383E935742C1F0000418200403D20000388F6
+S2190283D50920007FA3EB782C000000396920004182001C880B7E
+S2190283EA00008D2B0001980300002C090000386300014082FF91
+S2190283FFEC3800000098030000480000647C641B78387D0001CE
+S21902841438A000204BFFEE453D2000049BC98774386300017FFC
+S219028429FD19AE4800004081210008880900007D234B782C0021
+S21902843E004C7C090378418200284181000C2C00004348000066
+S219028453082C090050418200143C8000043884877438A0012C2D
+S21902846848000D058001002C7C0803A683A1001C83C10020839D
+S21902847DE10024382100284E8000209421FFF87C0802A6900106
+S219028492000C880300002C000070418200143C800004388487C1
+S2190284A77438A0012C48000CC98001000C7C0803A63821000808
+S2190284BC4E8000203D200003816935805463103A7C63582E4E03
+S2190284D18000203D200003816935805463103A7C83592E4E809B
+S2190284E600209421FFF87C0802A69001000C3D200000392932F4
+S2190284FB00816900185464063E806B0000800B000C7C0803A6B8
+S2190285104E8000218001000C7C0803A6382100084E80002094C3
+S21902852521FFF87C0802A69001000C3D2000003929320081697E
+S21902853A0018806B0000800B00107C0803A64E800021800100EA
+S21902854F0C7C0803A6382100084E8000209421FFF87C0802A6B0
+S2190285649001000C3D20000039293200816900187C651B788077
+S2190285796B0000800B0014388000007C0803A64E800021800187
+S21902858E000C7C0803A6382100084E8000209421FFF87C080217
+S2190285A3A69001000C480000158001000C7C0803A63821000801
+S2190285B84E8000209421FFE87C0802A693A1000C93C1001093BA
+S2190285CDE100149001001C3FC00003817E38503D2000032C0BD0
+S2190285E20000380000003BBE3850900935847C7F1B7841820021
+S2190285F7187D635B7848000055801E38502C0000004082002CC0
+S21902860C813F00003C007D82913D000460001008901F000093CB
+S219028621FE3850386000034800092538600003480008B5800185
+S219028636001C7C0803A683A1000C83C1001083E100143821008A
+S21902864B184E8000209421FFF87C0802A69001000C3D20000338
+S219028660816935842C0B0000408200183D2000038009385039A0
+S2190286754938507C0300004182000C3860000048000024800A3C
+S21902868A0004916938509003000038600003480008B538600083
+S21902869F0348000845386000018001000C7C0803A63821000873
+S2190286B44E8000203D200003800938503120FFFF7C6901104EB8
+S2190286C98000209421FFF87C0802A69001000C2C03000041828E
+S2190286DE00483D400003812A35883929FFFF2C090000912A35CB
+S2190286F388418100683D2000003929320081690018380000008E
+S219028708900A3588806B0000800B0014388000057C0803A64E3C
+S21902871D8000214800003C3D600003812B3588392900012C097A
+S2190287320001912B3588408200243D20000039293200816900F0
+S2190287471838800004806B0000800B00147C0803A64E8000219C
+S21902875C8001000C7C0803A6382100084E8000209421FFF87CD0
+S2190287710802A69001000C3D2000003929320081690018806BC1
+S2190287860000800B00107C0803A64E8000218001000C7C08030C
+S21902879BA6382100084E8000209421FFC87C0802A692C10010C2
+S2190287B092E10014930100189321001C9341002093610024930B
+S2190287C581002893A1002C93C1003093E100349001003C2C0466
+S2190287DA000D418201CC3D600003814B358C3D20000439299462
+S2190287EF447C8951AE2C04000A394A0001914B358C3F40000349
+S2190288044182000C2C0A00644082019C3D20000039293200831C
+S219028819C900187EE000A67EE0BB7839200000512004207C0063
+S21902882E01243C600003386389A84BFFFD653D2000033AC9206F
+S219028843E8807E0000813E000C388000247D2803A63B600000A3
+S2190288583BE0004F4E800021807E0000813E000C3880004F7D5E
+S21902886D2803A64E800021801A358C7C1B0000408000703D20B0
+S21902888200043D6000033B0994443B2B20E87D38D8AE807E0073
+S219028897005520E13E7F9900AE817E000C7F84E3787D6803A674
+S2190288AC5529073E7FB948AE3B7B00014E800021807E0000819A
+S2190288C13E000C7FA4EB787D2803A64E800021801A358C7F9F15
+S2190288D6E214579F063E7C1B00007FBFEA1457BF063E4180FF69
+S2190288EBA8807E0000813E000C388000237D2803A64E800021E8
+S219028900807E0000813E000C57E0E13E7C9600AE7D2803A64EE0
+S219028915800021807E0000813E000C57E0073E7C9600AE7D28FB
+S21902892A03A64E800021807E0000813E00107D2803A64E8000B0
+S21902893F215460063E2C00002B9861000841820038386100080F
+S21902895438800001480014392C03000040820014880100082CF7
+S21902896900002D4082FFC44BFFFED43D200000392932003800FB
+S21902897E0001900900443D200003380000009009358C3C600071
+S21902899303386389A84BFFFCB97C0000A652E004207C000124E1
+S2190289A88001003C7C0803A682C1001082E100148301001883E0
+S2190289BD21001C83410020836100248381002883A1002C83C1B5
+S2190289D2003083E10034382100384E8000209421FFE87C080220
+S2190289E7A693A1000C93C1001093E100149001001C7CBF2B7817
+S2190289FC7FE0FB782C0000007C7D1B787C9E23783BFFFFFF41A7
+S219028A11820024889E00007FA3EB784BFFFD897FE0FB782C002A
+S219028A2600003BDE00013BFFFFFF4082FFE48001001C7C080319
+S219028A3BA683A1000C83C1001083E10014382100184E8000201E
+S219028A509421FFE87C0802A693A1000C93C1001093E100149086
+S219028A6501001C7CBF2B787FE0FB782C0000007C7D1B787C9E56
+S219028A7A23783BFFFFFF418200247FA3EB784BFFFCE57FE0FB1C
+S219028A8F782C000000987E00003BDE00013BFFFFFF4082FFE41A
+S219028AA48001001C7C0803A683A1000C83C1001083E1001438B8
+S219028AB92100184E8000209421FF909081000C90A1001090C187
+S219028ACE001490E100189101001C9121002091410024386000E1
+S219028AE300382100704E8000209421FFF87C0802A69001000C4B
+S219028AF8386000004BFFFBD13D600004380000207C0903A63D50
+S219028B0D2000038149385C396B1B983D000003392000007C0956
+S219028B22502E7C09592E392900044200FFF47D6A5B783D2000FB
+S219028B37038169385C800B0094900A0100812B0090912A0104EB
+S219028B4C800B0080900A0108812B0088912A010C800B008C90BC
+S219028B610A0110812B0084912A01143D4000033D600003800B32
+S219028B7635843D2000042C00000039291B98912A358041820055
+S219028B8B183800000090083584386000404BFFF9294BFFFAB5F0
+S219028BA0386000404BFFF91D4BFFFAA93D200003906938608023
+S219028BB501000C7C0803A6382100084E8000209421FFF87C08EB
+S219028BCA02A69001000C380000207C0903A63D20000381493862
+S219028BDF5C3D600004396B1B98392000007C09582E7C09512EBE
+S219028BF4392900044200FFF47D6A5B783D2000038169385C80B2
+S219028C090A0100900B0094812A0104912B0090800A0108900BEB
+S219028C1E0080812A010C912B0088800A0110900B008C812A0150
+S219028C3314912B0084386000014BFFFA918001000C7C0803A6A9
+S219028C48382100084E800020386000004E8000203D20000339A2
+S219028C5D298C503D400003912A35643D600003396B8D903D2064
+S219028C720003916935603D4000033D600003394A8AEC914B352A
+S219028C876C3D20000339298BC43D600003912B35684E8000206D
+S219028C9C9421FFF07C0802A693C1000893E1000C900100143D2E
+S219028CB1200003800935902C000000408200BC380000019009BA
+S219028CC63590480055293D2000003BC93200813E00343860FFEA
+S219028CDBFF7D2803A64E800021813E00347C7F1B783860FFFD2C
+S219028CF07D2803A64E800021815E00143D200003392989E0917C
+S219028D052A00043D6000036FE0FFFF396B8A506800FFFE3D20F7
+S219028D1A0003916A0008392987A43100FFFF7CE80110912A004B
+S219028D2F0C3D600003301FFFFF7D00F910396B876C3D200003B2
+S219028D447CE04039916A001039298AC0912A0014418200148160
+S219028D593E00347FE3FB787D2803A64E800021801E0030386014
+S219028D6E00007C0803A64E800021800100147C0803A683C100C7
+S219028D830883E1000C382100104E8000209421FFF87C0802A62D
+S219028D989001000C3D20000039293200800900402C00000041FB
+S219028DAD82000C7C0803A64E8000218001000C7C0803A63821ED
+S219028DC200084E8000207FE000084E8000209421FFD87C080238
+S219028DD7A6936100149381001893A1001C93C1002093E100244A
+S219028DEC9001002C7C9D23787C7C1B7838000054981D00007FAF
+S219028E018326704BFFDBAD9C7D00017F83E3784BFFDBA17FBFEF
+S219028E16EB789C7F0001386000044BFFDB919C7F0001386000BB
+S219028E2B404BFFDB859C7F00013BA0003A9FBF000138600040D9
+S219028E404BFFF6813B810008906100083BFF00017FE4FB787F08
+S219028E5583E37838A0000438C000004BFFE0097C7F1B783B60F3
+S219028E6A003B9B7F0000386000004BFFDB3D9C7F0001386000E9
+S219028E7F014BFFDB319C7F00019FBF0001386000014BFFF631FB
+S219028E94906100083BFF00017FE4FB787F83E37838A000043847
+S219028EA9C000004BFFDFBD7C7F1B7838000000981F00019B7F6F
+S219028EBE00008001002C7C0803A6836100148381001883A10086
+S219028ED31C83C1002083E10024382100284E8000202C030001DC
+S219028EE84182002028030001418000502C030002418200242C0A
+S219028EFD030003418200304800003C3C0002004C00012C7C1099
+S219028F128BA64C00012C480000283C0004004C00012C7C108B59
+S219028F27A64C00012C480000143C000C004C00012C7C108BA635
+S219028F3C4C00012C7C708AA654630FFE4E8000202C0300014161
+S219028F5182002028030001418000682C030002418200202C03CA
+S219028F66000341820028480000543C0002007C0004AC7C188BDC
+S219028F7BA6480000443D6004007C0004AC7D788BA64800003439
+S219028F90380000807C0903A639200000612010003D600E007CCE
+S219028FA50004AC7D398BA67D788BA67C198BA67D788BA63929A5
+S219028FBA00104200FFE07C788AA654630FFE4E8000203D6000F7
+S219028FCF0338000001900B35743D200003800938583D600003ED
+S219028FE42C000000396B90A83D20000391693594418200A83D9E
+S219028FF9400003800A385828000003408100307080000340822E
+S21902900E002870600003408200208003000038630004900400B3
+S21902902300812A3858388400043929FFFC4800005C3D60000395
+S219029038800B38582800000140810034708000014082002C7094
+S21902904D60000140820024A003000038630002B0040000812B20
+S2190290623858388400023929FFFE912B38584800002088030006
+S219029077003863000198040000812A3858388400013929FFFF4D
+S21902908C912A3858800A38582C0000004082FF643D200003387A
+S2190290A1000000900935743D20000338000000900935944E80A9
+S2190290B600209421FFE87C0802A69381000893A1000C93C10006
+S2190290CB1093E100149001001C7C601B787CBC2B787C83237860
+S2190290E03FA000037C040378939D38584BFFFEE1807D38587CA5
+S2190290F563E0508001001C7C0803A68381000883A1000C83C182
+S21902910A001083E10014382100184E8000209421FFE87C080240
+S21902911FA69381000893A1000C93C1001093E100149001001C99
+S2190291347CBC2B783FA00003939D38584BFFFE8D807D38587CC4
+S21902914963E0508001001C7C0803A68381000883A1000C83C12D
+S21902915E001083E10014382100184E800020386000004E8000A8
+S21902917320386000004E800020386000004E8000209421FFF010
+S2190291887C0802A693C1000893E1000C900100143D200003803E
+S21902919D0938682C000000418200603FE000033BC000007D40E4
+S2190291B200A67D40537839200000512004207C000124817F38AC
+S2190291C768800B0014808B0018901F386893CB00187C0000A67B
+S2190291DC514004207C000124812B000C80AB0010806B00007DC6
+S2190291F12803A64E800021801F38682C0000004082FFB0800145
+S21902920600147C0803A683C1000883E1000C382100104E800018
+S21902921B209421FFF87C0802A69001000C4BFFFF5D8001000C6F
+S2190292307C0803A6382100084E800020906900003800000090E5
+S21902924589000490A90010900900189128000090C9000890E9F3
+S21902925A000C900900144E800020812300002C090000418200B5
+S21902926FF8810300043809FFFF28000039418100E83D60000379
+S219029284396B21005400103A7D4B002E3D200003392921007D15
+S2190292994A4A147D4903A64E8004203D20FF0061290200A169BE
+S2190292AE00007C0006AC556B063E38000000600080007C004698
+S2190292C3307D600378540B043EB16900007C0006AC4800009046
+S2190292D83D20FF0061290240A16900007C0006AC556B063E38DE
+S2190292ED000000600080007C0046307D600378540B043EB16980
+S21902930200007C0006AC4800005C3D20FF0061290220A169006B
+S219029317007C0006AC556B063E38000000600080007C004630FE
+S21902932C7D600378540B043EB16900007C0006AC480000283D37
+S21902934120FF0061290940800900007C0006AC540004DE550BD1
+S21902935668247C005B78900900007C0006AC800300003D200079
+S21902936B03394932405408103A7C0A402E3D20000239295DEC4B
+S2190293807C004800418200187C0A402E3D20000339299E087C5A
+S2190293950048004C820020800300083D6000037C0A412E8143A2
+S2190293AA0010396B332C3D2000037D4B412E392934187C694129
+S2190293BF2E4E8000207C631B794D8200203803FFFF280000397A
+S2190293D47C0803784D8100203D600003396B21E85500103A7D27
+S2190293E94B002E3D200003392921E87D4A4A147D4903A64E80C2
+S2190293FE04203D20FF0061290014816900007C0006AC3C008061
+S219029413007C0044307D6B0078916900007C0006AC4E800020D7
+S2190294283D20FF0061290200A00900007C0006AC7000FFF754AF
+S21902943D00043EB00900007C0006AC4E8000203D20FF00612916
+S2190294520200A00900007C0006AC7000FFFB5400043EB009006C
+S219029467007C0006AC4E8000203D20FF0061290240A0090000FC
+S21902947C7C0006AC7000FFFB5400043EB00900007C0006AC4E71
+S2190294918000203D20FF0061290220A00900007C0006AC7000D0
+S2190294A6FFF75400043EB00900007C0006AC4E8000203D20FFED
+S2190294BB0061290220A00900007C0006AC7000FFFB5400043E12
+S2190294D0B00900007C0006AC4E8000203D20FF006129094080FC
+S2190294E50900007C0006AC5400066E900900007C0006AC4E80D7
+S2190294FA00203D20FF0061290948816900007C0006AC3943FF6C
+S21902950FE53C0080007C0054307D6B0078916900007C0006AC17
+S2190295244E8000207C631B794D8200203803FFFF280000397CC5
+S2190295390803784D8100203D600003396B22D05500103A7D4B08
+S21902954E002E3D200003392922D07D4A4A147D4903A64E8004B9
+S219029563203D20FF0061290014816900007C0006AC3C008000FE
+S2190295787C0044307D6B0378916900007C0006AC4E8000203D31
+S21902958D20FF0061290200A00900007C0006AC60000008B0091F
+S2190295A200007C0006AC4E8000203D20FF0061290200A0090000
+S2190295B7007C0006AC60000004B00900007C0006AC4E80002031
+S2190295CC3D20FF0061290240A00900007C0006AC60000004B070
+S2190295E10900007C0006AC4E8000203D20FF0061290220A00998
+S2190295F600007C0006AC60000008B00900007C0006AC4E80000E
+S21902960B203D20FF0061290220A00900007C0006AC60000004E0
+S219029620B00900007C0006AC4E8000203D20FF006129094080AA
+S2190296350900007C0006AC60000080900900007C0006AC4E806D
+S21902964A00203D20FF0061290948816900007C0006AC3943FF1A
+S21902965FE53C0080007C0054307D6B0378916900007C0006ACC3
+S2190296744E8000207C631B794D8200203803FFFF280000397C74
+S2190296890803784D8100203D600003396B23B85500103A7D4BCE
+S21902969E002E3D200003392923B87D4A4A147D4903A64E80047F
+S2190296B3203D20FF0061290010816900007C0006AC3C008000B1
+S2190296C87C0044307D6B0378916900007C0006AC4E8000203DE0
+S2190296DD20FF0061290200A00900007C0006AC60000080B00956
+S2190296F200007C0006AC4E8000203D20FF0061290200A00900AF
+S219029707007C0006AC60000040B00900007C0006AC4E800020A3
+S21902971C3D20FF0061290240A00900007C0006AC60000080B0A2
+S2190297310900007C0006AC4E8000203D20FF0061290220A00946
+S21902974600007C0006AC60000080B00900007C0006AC4E800044
+S21902975B203D20FF0061290220A00900007C0006AC6000004053
+S219029770B00900007C0006AC4E8000203D20FF006129094C814C
+S2190297856900007C0006AC3943FFE53C0080007C0054307D6B2D
+S21902979A0378916900007C0006AC4E8000207C8723787C631B8A
+S2190297AF794D8200203803FFFF280000397C0803784D810020AF
+S2190297C43D600003396B24A05500103A7D4B002E3D2000033953
+S2190297D92924A07D4A4A147D4903A64E8004203C0080007C00C9
+S2190297EE44303D60FF00616B0018808B00007C0006AC7C840032
+S219029803787CEAFE707D493A787D2950507D29FE707C800378B4
+S2190298187C0048787C8948387D240378908B00007C0006AC4EC0
+S21902982D8000207C8823787C631B794D8200203803FFFF28001D
+S21902984200394D8100203D600003396B25885400103A7D4B008C
+S2190298572E3D200003392925887D4A4A147D4903A64E800420D2
+S21902986C3D20FF0061290200A08900007C0006AC5484063E384D
+S219029881000000600080007C0046307C8003785404043EB089AF
+S21902989600007C0006AC4E8000203D20FF0061290240A0890049
+S2190298AB007C0006AC5484063E38000000600080007C0046304D
+S2190298C07C8003785404043EB08900007C0006AC4E8000203DE9
+S2190298D520FF0061290220A08900007C0006AC5484063E380001
+S2190298EA0000600080007C0046307C8003785404043EB0890046
+S2190298FF007C0006AC4E8000203D20FF00612909408009000079
+S2190299147C0006AC540004DE550B68247C005B78900900007C83
+S2190299290006AC4E800020386000014E800020386000014E8094
+S21902993E00209421FFF87C0802A69001000C4BFFC541800100A7
+S2190299530C7C0803A6382100084E8000203C00FE0060000100D5
+S2190299687C0903A64E8004209421FFF87C0802A69001000C4B03
+S21902997DFFFFE5386000008001000C7C0803A6382100084E806A
+S2190299920020386000004E8000209421FFE87C0802A693A10017
+S2190299A70C93C1001093E100149001001C7C7F1B7838600000D9
+S2190299BC3BA00001380000002C1FFFFE41820040418100102C32
+S2190299D11FFFFD4182004C480000502C1FFFFF408200483D2008
+S2190299E60003812935982C0900003BA9FFFF4181003C7D3D4BD1
+S2190299FB78408200343BA0FFFD4800002C3D20000039293200A6
+S219029A103D6000039069001893EB3598480000143BE00000487F
+S219029A250000083BFF0001380000012C000000418200803D20DD
+S219029A3A00003BC93200813E00182C090000418200188069000A
+S219029A4F0080090014388000047C0803A64E8000213D20000425
+S219029A64392994A857E028347C004A143D2000032C03000090BC
+S219029A791E001893E93598813E00184182001C8069000080092A
+S219029A8E0014388000057C0803A64E8000214800001880690086
+S219029AA30080090014388000047C0803A64E8000217FA3EB78AD
+S219029AB88001001C7C0803A683A1000C83C1001083E100143894
+S219029ACD2100184E80002039400001380000002C03FFFE4182B5
+S219029AE20040418100102C03FFFD4182004C480000502C03FF56
+S219029AF7FF408200483D2000038129359C2C0900003949FFFFBA
+S219029B0C4181003C7D2A4B78408200343940FFFD4800002C3DB9
+S219029B21200000392932003D60000390090014906B359C480013
+S219029B360014386000004800000838630001380000012C000016
+S219029B4B00418200283D200004392994A8546028343D60000067
+S219029B607C004A14396B32003D200003900B00149069359C7DE3
+S219029B754353784E8000204E8000204E8000209421FFF87C08CC
+S219029B8A02A69001000C3D600000392B320081290018800B32C8
+S219029B9F002C0000134082002038000014900B32008069000087
+S219029BB480090014388000057C0803A64E8000218001000C7C16
+S219029BC90803A6382100084E8000209421FFE87C0802A693E144
+S219029BDE00149001001C3D20000039293200816900183800007F
+S219029BF30090010008812B0000800B00187C651B787C8623785D
+S219029C087D234B78388100087C0803A64E800021800100087CFB
+S219029C1D7F1B782C000000418200103D200003806938704800E1
+S219029C3201917FE3FB788001001C7C0803A683E1001438210014
+S219029C47184E8000209421FFE87C0802A693A1000C93C100108F
+S219029C5C93E100149001001C380000407C0903A63D2000003D77
+S219029C7160000339293200396B9994394000007D69512E394AAE
+S219029C8600044200FFF83D2000043D600003392994A8396B99A9
+S219029C9B9439000000550A283438080001390000087D0903A674
+S219029CB07D69512E394A00044200FFF87C0803782C08000240FE
+S219029CC581FFDC3FA0000038000013901D32003D6000033BBD86
+S219029CDA3200396B3240917D00043D200000392930003D600088
+S219029CEF03913D0008396B9960917D00403D20000339299970CA
+S219029D043D600003913D0010396B9940917D00483D2000033959
+S219029D1929999C3D600003913D0030396B9AD43D400003917D92
+S219029D2E0034394A9B7C3D200003915D002039299B80913D0092
+S219029D431C3860FFFE4BFFFC553860FFFE4BFFFD85380000001F
+S219029D58901D0024901D0028901D004C3D200003901D004439C6
+S219029D6D2985BC913D008C8001001C7C0803A683A1000C83C1D8
+S219029D82001083E10014382100184E8000207C8423794182007F
+S219029D97243884FFFF7C0320AE2C0000034082000C38600001EF
+S219029DAC4E8000202C0400004082FFE4386000004E80002094BE
+S219029DC121FFF87C0802A69001000C7C631B793D200003380991
+S219029DD69DF841820008800300943D200000392932008129005F
+S219029DEB8C7C0303787D2803A64E8000218001000C7C0803A6DF
+S219029E00382100084E8000209421FFF07C0802A693C100089338
+S219029E15E1000C900100143D200000800932007C7F1B782C00CD
+S219029E2A0014396932007C9E23783860FFFF4082001C812B005F
+S219029E3F183880000680690000800900147C0803A64E8000218F
+S219029E547C1F18004082001C7FE3FB787FC4F3784BFFFD717CAA
+S219029E69601B797C030378408200287FE3FB787FC4F3784BFF38
+S219029E7EBF6D7C601B787C09FE707D2302787C6348507C63FECC
+S219029E93707C031838800100147C0803A683C1000883E1000CF6
+S219029EA8382100104E800020280500037C691B78408100107C52
+S219029EBD801B78700B0003418200302C05000038A5FFFF4D822A
+S219029ED20020880400002C0500009809000038840001392900D7
+S219029EE70138A5FFFF4082FFE84E8000202805000F7C6B1B7836
+S219029EFC408100388004000038A5FFF0900B0000852400042891
+S219029F1105000F952B000484040004940B000485240004952BC0
+S219029F26000438840004396B00044181FFD02805000340810031
+S219029F3B208004000038A5FFFC28050003900B00003884000403
+S219029F50396B00044181FFE82C0500007D695B7838A5FFFF4D92
+S219029F65820020880400002C05000098090000388400013929C1
+S219029F7A000138A5FFFF4082FFE84E800020280500037C691B28
+S219029F8F784081000C70600003418200282C05000038A5FFFFA7
+S219029FA44D8200202C050000988900003929000138A5FFFF40E2
+S219029FB982FFF04E8000205484063E5480402E7C00237854095B
+S219029FCE801E7C004B787C6B1B782805000F40810024900B0064
+S219029FE300940B000438A5FFF0940B00042805000F940B000471
+S219029FF8396B00044181FFE4280500034081001838A5FFFC28F7
+S21902A00D050003900B0000396B00044181FFF02C0500007D6924
+S21902A0225B784D8200207CA903A698890000392900014200FFCD
+S21902A037F84E8000209421FFA87C631B79394100087D47537847
+S21902A04C39000000408200143800003098010008394100094815
+S21902A0610000247C032B967D2029D67D2918507D6648AE7C037D
+S21902A0760379996A0000394A00014082FFE47C0A3800418200A5
+S21902A08B287D0343787CE93B788C0AFFFF386300017C0A480040
+S21902A0A098040000388400014082FFEC7C681B78380000009857
+S21902A0B50400007D034378382100584E8000209421FF987C08E1
+S21902A0CA02A67D80002692410030926100349281003892A10007
+S21902A0DF3C92C1004092E10044930100489321004C93410050DF
+S21902A0F4936100549381005893A1005C93C1006093E1006490F0
+S21902A10901006C9181002C7C9923788BB900003AE100082C1D2F
+S21902A11E00007EF2BB787C7B1B787CB82B783BC000003AA0004C
+S21902A133003B390001418204802C1D00254082043C8BB90000A0
+S21902A1483B3900012C1D002D3AC000003BE00000408200108B9E
+S21902A15DB900003B3900013AC000012C1D0030408200148BB92A
+S21902A17200003B8000013B390001480000083B800000381DFF41
+S21902A187D0280000094181003C7FA3EB787F24CB787FE9FB7877
+S21902A19C1D29000A3929FFD07D291A1488640000388400013871
+S21902A1B103FFD0280000094081FFE47D3F4B787C9923787C7DC3
+S21902A1C61B782C1D002E4082003C8BB900003B390001381DFF68
+S21902A1DBD0280000093B9C0001418100247F24CB7888640000D7
+S21902A1F0388400013803FFD0280000094081FFF07C7D1B787CA3
+S21902A2059923782C1D006C3A8000004082000C8BB900003B3914
+S21902A21A0001381DFFA8280000203A790001418101F83D6000D7
+S21902A22F03396B26A85400103A7D4B002E3D200003392926A87A
+S21902A2447D4A4A147D4903A64E800420386000307F6803A63BE5
+S21902A2598000013BE000084E800021386000787F6803A64E80E8
+S21902A26E0021897800005569063E38090001280000084181007C
+S21902A2831C801800085529103A396B00017C604A14997800004B
+S21902A29848000030280900074181001C807800043800000839A7
+S21902A2AD23000498180000913800044800001080780004380362
+S21902A2C20004901800042C1D0064806300004182002841810093
+S21902A2D7102C1D00584182004C480000602C1D00704182003453
+S21902A2EC2C1D00784182002C4800004C2C0300004080000C3ADD
+S21902A30180002D7C6300D03CC0000338C626703881000838A0B8
+S21902A316000A480000203CC0000338C6267C4800000C3CC000CA
+S21902A32B0338C626903881000838A000104BFFFD057C751B78E6
+S21902A3407E579378480000EC897800005569063E380900012880
+S21902A3550000084181001C801800085529103A396B00017C601D
+S21902A36A4A149978000048000030280900074181001C807800E2
+S21902A37F04380000083923000498180000913800044800001049
+S21902A39480780004380300049018000482E300007EE3BB784885
+S21902A3A90003C97C751B7848000080897800005569063E38093C
+S21902A3BE0001280000084181001C801800085529103A396B0068
+S21902A3D3017D404A149978000048000030280900074181001CB3
+S21902A3E88158000438000008392A000498180000913800044810
+S21902A3FD00001081580004380A000490180004886A00037F6889
+S21902A41203A63BDE00014E8000214800018C3860003F7F6803E6
+S21902A427A63BDE00014E8000217F55F8503134FFFF7D294910EC
+S21902A43C381AFFFF7C0048782F9C00007F4948387D3A03782C07
+S21902A451140000419E00243BA00030418200207E83A3787F68E7
+S21902A46603A63BDE00013A8000004E800021480000083BA00043
+S21902A47B202C1400002E1600003AD5FFFF7F8000264092003CE1
+S21902A4907F40D3782C0000003B5AFFFF4081002C7F5FD3787F52
+S21902A4A5A3EB787F6803A63BDE00014E8000217FE0FB782C00FE
+S21902A4BA00003BFFFFFF4181FFE47FFAFB787F880120418200D2
+S21902A4CF147E83A3787F6803A63BDE00014E8000217EA0AB7867
+S21902A4E42C0000007ED5B378408100547EBDAB787EFCBB788B07
+S21902A4F9FC00007F6803A67FE3FB783B9C00013BDE00014E8026
+S21902A50E00212C1F000A408200143860000D7F6803A63BDE0097
+S21902A523014E8000217FA0EB782C0000003BBDFFFF4181FFC403
+S21902A5387F97E3787FB5EB78419200687F40D3782C0000003B53
+S21902A54D5AFFFF408100587F5FD378386000207F6803A63BDEF7
+S21902A56200014E8000217FE0FB782C0000003BFFFFFF4181FFF6
+S21902A577E4480000307FA3EB787F6803A63BDE00013A79000189
+S21902A58C4E8000212C1D000A408200143860000D7F6803A63B2B
+S21902A5A1DE00014E8000218BB900007E799B782C1D0000408277
+S21902A5B6FB887FC3F3788001006C8181002C7C0803A68241004E
+S21902A5CB30826100348281003882A1003C82C1004082E1004469
+S21902A5E0830100488321004C8341005083610054838100588378
+S21902A5F5A1005C83C1006083E100647D808120382100684E80B4
+S21902A60A00203D2000038169387438000000986B0000396B003F
+S21902A61F0191693874980B00004E8000209421FF707C0802A697
+S21902A63493A1008493C1008893E1008C900100943D6000039021
+S21902A649A10010906B387438A100083BA1009838000002396075
+S21902A65E00003C60000390A100789081000C90C1001490E100A5
+S21902A673189101001C91210020914100249801007099610071C9
+S21902A68893A100743863A60C38A100704BFFFA31800100947C72
+S21902A69D0803A683A1008483C1008883E1008C382100904E80D5
+S21902A6B200209421FF707C0802A693A1008493C1008893E10014
+S21902A6C78C9001009490A100109081000C7C641B7890610008FC
+S21902A6DC38A100083BA1009838000001396000003C600003900C
+S21902A6F1A1007890C1001490E100189101001C912100209141F4
+S21902A7060024980100709961007193A100743863A96838A10072
+S21902A71B704BFFF9A9800100947C0803A683A1008483C1008810
+S21902A73083E1008C382100904E8000209421FFF87C0802A690DE
+S21902A74501000C7C601B787C8523783C6000033863A9687C0415
+S21902A75A03784BFFF9698001000C7C0803A6382100084E8000D3
+S21902A76F2088030000392000004800000C880300003929000188
+S21902A7842C000000386300014082FFF07D234B784E8000207C73
+S21902A799691B78480000102C030000386000004D8200208869A9
+S21902A7AE000088040000388400017C030000392900014182FFA2
+S21902A7C3E07C6018504E800020880400007C691B78480000100C
+S21902A7D89803000088040000386300012C000000388400014079
+S21902A7ED82FFEC38000000980300007D234B784E8000207C6BD8
+S21902A8021B78480000102C030000386000004D820020886B00A6
+S21902A81700396B00013803FFBF280000194181000C380300201D
+S21902A82C5403063E89240000388400013809FFBF28000019418A
+S21902A84181000C380900205409063E7D204B787C0300004182CA
+S21902A856FFB47C6018504E8000207CA02B797C691B787C090341
+S21902A86BA640820014386000004E8000207C6018504E8000209D
+S21902A8808869000088040000388400017C030000392900014060
+S21902A89582FFE42C030000418200084200FFE0386000004E80C1
+S21902A8AA00207CA02B797C6B1B787C0903A64082001838600098
+S21902A8BF004E8000207C6018504E80002042400050886B000098
+S21902A8D4396B00013803FFBF280000194181000C38030020540C
+S21902A8E903063E89240000388400013809FFBF280000194181A0
+S21902A8FE000C380900205409063E7D204B787C0300004082FF90
+S21902A913B42C0300004082FFB4386000004E8000204800002CD6
+S21902A9288923000088040000388400017C0900003863000141BC
+S21902A93D8200148803FFFF8864FFFF7C6300504E8000207CA0BC
+S21902A9522B782C00000038A5FFFF4082FFCC386000004E80004C
+S21902A967209421FFE87C0802A69381000893A1000C93C100102C
+S21902A97C93E100149001001C3D200003800937E87C7D1B782CCA
+S21902A991000000408200743D200000392932008009003438602E
+S21902A9A6FFFF7C0803A67D3E4B783BE000004E8000217C7C1BCF
+S21902A9BB78813E00347FE3FB787D2803A64E800021813E001430
+S21902A9D07FA4EB78806900008009000C7C0803A64E8000213714
+S21902A9E5FF00014081FFD43D20000039293200800900347F8312
+S21902A9FAE3787C0803A64E800021480000483D20000039293249
+S21902AA0F00816900142C0B00004182001C806B0000800B000C95
+S21902AA247FA4EB787C0803A64E8000214800001C816900187F8F
+S21902AA39A4EB78806B0000800B000C7C0803A64E8000218001DB
+S21902AA4E001C7C0803A68381000883A1000C83C1001083E100AF
+S21902AA6314382100184E8000209421FFF07C0802A693E1000C14
+S21902AA78900100143D20000039293200816900147C7F1B782C74
+S21902AA8D0B00004082000881690018806B0000800B00107C08CC
+S21902AAA203A64E800021987F0000800100147C0803A683E100C3
+S21902AAB70C382100104E8000209421FFE07C0802A69361000C60
+S21902AACC9381001093A1001493C1001893E1001C900100243D14
+S21902AAE1200003800937E87C7D1B782C000000408200883D202F
+S21902AAF6000039293200800900343860FFFF7C0803A67D3C4B2C
+S21902AB0B783BE000004E8000217C7B1B78813C00347FE3FB785C
+S21902AB207D2803A64E800021817C00147FA4EB78806B000080DA
+S21902AB350B001C7C0803A64E8000217C7E1B7941820010881DBB
+S21902AB4A00002C0000004082004C37FF00014081FFC03D2000A1
+S21902AB5F0039293200800900347F63DB787C0803A64E80002138
+S21902AB74480000643D20000039293200816900142C0B000041B2
+S21902AB89820034806B0000800B001C7FA4EB7848000034817C69
+S21902AB9E00307FE3FB787D6803A63D200003380000019009379F
+S21902ABB3E84E80002148000020816900187FA4EB78806B0000D4
+S21902ABC8800B001C7C0803A64E8000217C7E1B787FC3F37880F4
+S21902ABDD0100247C0803A68361000C8381001083A1001483C18A
+S21902ABF2001883E1001C382100204E8000209421FFE87C080226
+S21902AC07A69381000893A1000C93C1001093E100149001001C96
+S21902AC1C3D200003800937E87C7D1B782C000000408200803DDD
+S21902AC3120000039293200800900343860FFFF7C0803A67D3E18
+S21902AC464B783BE000004E8000217C7C1B78813E00347FE3FB4A
+S21902AC5B787D2803A64E800021813E00142C0900004182001C41
+S21902AC708069000080090014388000077FA5EB787C0803A64E81
+S21902AC8580002137FF00014081FFC83D200000392932008009D9
+S21902AC9A00347F83E3787C0803A64E800021480000303D20001C
+S21902ACAF0039293200812900142C0900004182001C806900003A
+S21902ACC480090014388000077FA5EB787C0803A64E8000213D38
+S21902ACD920000039293200812900182C0900004182001C8069EC
+S21902ACEE0000800900147FA5EB78388000077C0803A64E80006C
+S21902AD03218001001C7C0803A68381000883A1000C83C10010B9
+S21902AD1883E10014382100184E8000209421FFD07C0802A69305
+S21902AD2D01001093210014934100189361001C9381002093A1CD
+S21902AD42002493C1002893E1002C900100347C7D1B787CBE2BFF
+S21902AD57787FBFEB783B6000003F2000033F8000033B4000008D
+S21902AD6C813938102C09000041820020896900002C0B00004147
+S21902AD81820014380900019961000890193810480000647FC000
+S21902AD96FE707C1E005054000FFE7FE9EA78216900007D2B49A3
+S21902ADAB147C0B48394182003C386000324BFFFE4948000008C6
+S21902ADC03BDEFFCE2C1E000040810014386100084BFFFCF17C1E
+S21902ADD57B1B794182FFE82C1B0000408200143860FFFF4800AE
+S21902ADEA0180386100084BFFFC7D880100089B5F00007C03035B
+S21902ADFF785400063E2C00000D4182007C418100282C00000892
+S21902AE14418200D4418100102C00000341820038480001142C06
+S21902AE2900000A41820058480001082C00002B418200E84181D3
+S21902AE3E00102C000024418200DC480000F02C00007F41820053
+S21902AE5398480000E47C1FE800408200183C6000033863273031
+S21902AE684BFFF84D3860FFFE480000F8987F00003BFF00013FD9
+S21902AE7D000003480000DC892100083F0000032C09000A40829D
+S21902AE920010881835A02C00000D418200182C09000D40820007
+S21902AEA718881835A02C00000A4082000C9B410008480000A42E
+S21902AEBC801C38082C000000418200143860000D4BFFFA9D38DD
+S21902AED160000A4BFFFA958801000838600001981835A048002B
+S21902AEE600847C1FE8003F0000034182006C801C38082C0000D0
+S21902AEFB004182001C386000084BFFFA65386000204BFFFA5DBA
+S21902AF10386000084BFFFA553BFFFFFF480000407C1FE8004069
+S21902AF258200145463063E4BFFD1393860000048000034801C7B
+S21902AF3A38082C0000004182000C886100084BFFFA21880100E1
+S21902AF4F083F000003981F00003BFF000188010008981835A094
+S21902AF644BFFFE08800100347C0803A6830100108321001483D0
+S21902AF794100188361001C8381002083A1002483C1002883E127
+S21902AF8E002C382100304E8000209421FFC07C0802A692410091
+S21902AFA3089261000C9281001092A1001492C1001892E1001C27
+S21902AFB89301002093210024934100289361002C9381003093FE
+S21902AFCDA1003493C1003893E1003C900100447C9D23787C7CD6
+S21902AFE21B787D3DE0107D2949107D294BB87C1CE8507C0048DA
+S21902AFF7787FA948387D3D03797CB62B78408101403E40000390
+S21902B00C2C16000041820014387227347C96E0504BFFF69948A7
+S21902B021000010387227347F84E3784BFFF6897FBEEB787F9D1B
+S21902B036E3783BE000003E8000033EA000033E6000033B5EFFAD
+S21902B04BF03AFD00103F0000033F6000033F2000037C1FF000E1
+S21902B060408000147C9DF8AE387827404BFFF6494800000C3815
+S21902B0757927484BFFF63D7FFCFE707C1CF8507C000E707C001B
+S21902B08A02147C00F8502C0000014082000C387B274C4BFFF66F
+S21902B09F1957801F7E7C1F02147C001E70540018387C00F850E5
+S21902B0B42C0000074082000C387B274C4BFFF5F53BFF00012CBE
+S21902B0C91F000F4081FF907FBCEB787FDDF378387427504BFF1B
+S21902B0DEF5D97EBEAB783BE000007C1FE8004080002C7C9CF88F
+S21902B0F3AE3804FFE02000005E7C0001107C0003B87C0900F8B9
+S21902B1087C8000387129002E7C044B784800000838800020388C
+S21902B11D7E27544BFFF5953BFF00012C1F000F4081FFBC38738D
+S21902B13227584BFFF5817F5DD3797EFCBB784181FECC800100E0
+S21902B147447C0803A6824100088261000C8281001082A1001477
+S21902B15C82C1001882E1001C8301002083210024834100288322
+S21902B17161002C8381003083A1003483C1003883E1003C382134
+S21902B18600404E8000209421FFF87C0802A69001000C38A00032
+S21902B19B004BFFFDFD8001000C7C0803A6382100084E8000204B
+S21902B1B09421FF607C0802A69361008C9381009093A1009493C4
+S21902B1C5C1009893E1009C900100A49081000C388100A83FA073
+S21902B1DA00033B800000380000013961000890810074837D3803
+S21902B1EF109061000890A1001090C1001490E100189101001C5E
+S21902B204912100209141002498010070916100789B810071382E
+S21902B2198100704BFFF5213C6000033863275C4BFFF48D939D10
+S21902B22E3810386100803880000838A000004BFFFAE9886100F5
+S21902B24380937D381068600059212000007C09011468630079D7
+S21902B258212300007C6919147C630378800100A47C0803A68355
+S21902B26D61008C8381009083A1009483C1009883E1009C382157
+S21902B28200A04E8000209421FFE87C0802A69381000893A1000A
+S21902B2970C93C1001093E100149001001C7C9C23787CBD2B7867
+S21902B2AC7C7F1B783BC00000480000C857C0103A7FFD012E8859
+S21902B2C11F00003BDE000148000098881F00002C0000224082A1
+S21902B2D6008457C0103A7D60EA14812BFFFC7C09F800408200B6
+S21902B2EB0C3BFF000193EBFFFC893F0000692000227C0000D0C8
+S21902B3007D2900D055290FFE54000FFE7D2B00394182002C7F80
+S21902B315E3FB788D230001692000227C0000D07D2900D055292A
+S21902B32A0FFE54000FFE7D2B00394082FFE47C7F1B78881F00DE
+S21902B33F002C0000004082002C3C600003386327744BFFF36561
+S21902B354480000083BFF0001881F00002C0000004182004C2C44
+S21902B3690000204082FF6038000000981F00003BFF0001881FB6
+S21902B37E00002C0000004182002C2C000020408200187FE3FB15
+S21902B393788C0300012C0000204182FFF87C7F1B78881F00005B
+S21902B3A82C0000004082FF0C3C6000033C80000380BD00009362
+S21902B3BDDC000038633688388436F8480000258001001C7C08C7
+S21902B3D203A68381000883A1000C83C1001083E1001438210055
+S21902B3E7184E8000209421FFD87C0802A6930100089321000C30
+S21902B3FC93410010936100149381001893A1001C93C1002093C6
+S21902B411E100249001002C7C7F1B787CBC2B787C9A23787F8341
+S21902B426E3784BFFF3497FFDFB787C1DD0007C7B1B7841820084
+S21902B43BC0809D00007F83E3787F65DB784BFFF4652C030000B2
+S21902B4504082009C807D00004BFFF3197C03D800408100847C17
+S21902B4651FD0003BC00001418200603F0000033F2000037C1D80
+S21902B47AF80041820044809F00007F83E3787F65DB784BFFF4C6
+S21902B48F212C0300004082002C2C1E00004182001880BD000001
+S21902B4A4387827887F84E3784BFFF2093BC00000809F00003838
+S21902B4B97927B04BFFF1F93BFF00107C1FD0004082FFB02C1E83
+S21902B4CE0000408200143C600003386327B44BFFF1D94800001B
+S21902B4E3187FA3EB78480000143BBD00107C1DD0004082FF48DA
+S21902B4F8386000008001002C7C0803A6830100088321000C8307
+S21902B50D410010836100148381001883A1001C83C1002083E1B5
+S21902B5220024382100284E8000209421FFE87C0802A69381009E
+S21902B5370893A1000C93C1001093E100149001001C7C601B78A8
+S21902B54C3C6000037C9D23787C1F03787CBE2B78386327B84BD8
+S21902B561FFF1557C1FE800418200283F80000380BF000080DFBB
+S21902B5760008387C27C07FC4F3784BFFF1353BFF00107C1FE82B
+S21902B58B004082FFE48001001C7C0803A68381000883A1000CF9
+S21902B5A083C1001083E10014382100184E800020912300149804
+S21902B5B583000090A3000490C3000890E3000C910300104E8074
+S21902B5CA00209421FFB07C0802A691C1000891E1000C9201004A
+S21902B5DF1092210014924100189261001C9281002092A10024F5
+S21902B5F492C1002892E1002C93010030932100349341003893D6
+S21902B60961003C9381004093A1004493C1004893E1004C9001CF
+S21902B61E00547D344B787D1643783016FFFF7D20B1106A80006E
+S21902B63301216000007C0B01147D2B00397C701B787C982378CE
+S21902B6487CD133787CF53B787D5353783B4000013A40000041F8
+S21902B65D820008925600007C12A8007E3F8B78408000507EA932
+S21902B67203A67FEBFB7839000000812B00102C09000041820049
+S21902B6870891090000814B00042C0A000040820020800B00088A
+S21902B69C2C0000004182000C2C0000024082000C812B000C9152
+S21902B6B1490000396B00184200FFC47CBD2B787C1D80004080BE
+S21902B6C602043DC000033DE0000357BE103A7C9EC02E8804004F
+S21902B6DB002C00002D4082014C396000007C0BA8008AE40001B4
+S21902B6F07E3F8B78392000003B7D0001408001147F9EC2143B69
+S21902B705200001881F00007C170000408200F0813F00102C0916
+S21902B71A000041820020800900002C00000041820014809F0085
+S21902B72F14386E27CC4BFFEF813B400000801F00042C0000004D
+S21902B74441820080813C0000880900023BC900032C00003D41A5
+S21902B75982000C83DC00043BBD0001801F00082C000000418254
+S21902B76E00102C0000014182003C48000040809F000C7FC3F39B
+S21902B7837838A0000038C00000480001992C030000408200246B
+S21902B79880BF00147FC4F378386F27EC4BFFEF113B40000048CD
+S21902B7AD00000C813F000C93C90000813F00103B7D000148007B
+S21902B7C20034801F00082C000000418200102C000002418200A0
+S21902B7D71C48000020817F000C812B000039290001912B0000FB
+S21902B7EC4800000C813F000C9329000039600001480000143936
+S21902B8012900017C09A8003BFF00184180FEFC2C0B00004082CE
+S21902B81600A83C600003386328147EE4BB784BFFEE9148000052
+S21902B82B902C160000418200782C12000041820014386E27CC46
+S21902B8407E649B784BFFEE713B4000002C140000418200102C94
+S21902B8551400014182003C480000407C7EC02E7EC4B37838A00E
+S21902B86A000038C00000480000B52C030000408200247C9EC0DE
+S21902B87F2E386F27EC7E659B784BFFEE2D3B4000004800000C9B
+S21902B8947C1EC02E901600003B7D00013A400001480000183C9A
+S21902B8A9600003386328343B7D00014BFFEE013B4000007F7DC0
+S21902B8BEDB787C1D80004180FE0C7F43D378800100547C0803CE
+S21902B8D3A681C1000881E1000C820100108221001482410018D6
+S21902B8E88261001C8281002082A1002482C1002882E1002C835E
+S21902B8FD01003083210034834100388361003C8381004083A1A2
+S21902B912004483C1004883E1004C382100504E80002088030077
+S21902B9270038E000012C0000203900000A3980000040820010D1
+S21902B93C8C0300012C0000204182FFF8880300002C0000004161
+S21902B95182012C2C07000041820038880300002C000030408254
+S21902B966002C892300013809FFBF280000194181000C3809009D
+S21902B97B205409063E2C0900784082000C39000010386300028E
+S21902B9908943000038E00000392AFFD0380AFFBF2129000939F9
+S21902B9A52000007D29491420000005380000007C0001147D2BCD
+S21902B9BA0379386300013920000040820010380AFF9F28000026
+S21902B9CF0541810008392000012C09000041820068392AFFD0A1
+S21902B9E45520063E280000094181000C7D2B4B78480000303874
+S21902B9F90AFF9F280000054181000C396AFFA94800001C380A9E
+S21902BA0EFFBF200000057C0001107C0003B8392AFFC97C0B487B
+S21902BA23387C0B40004080001C880300007D2C41D62C000000B5
+S21902BA387D895A144082FF184800003C2C0600004182002C8878
+S21902BA4D060000480000088C0600012C000000418200187C0A67
+S21902BA6200004082FFF0880600002C0000004082000C386000F7
+S21902BA77004E8000202C050000918400004182000890650000BF
+S21902BA8C386000014E800020880300002C000020408200108CE2
+S21902BAA10300012C0000204182FFF88863000068690074200926
+S21902BAB600007D20491468600054214000007C0A01147D2B03B7
+S21902BACB794182001038000001900400004800003068690046B7
+S21902BAE0200900007D20491468600066214000007C0A01147C81
+S21902BAF50A4B794082000C386000004E80002091640000386086
+S21902BB0A00014E8000209421FFE07C0802A69361000C9381005C
+S21902BB1F1093A1001493C1001893E1001C900100243D200004A0
+S21902BB3439699534800BFFD47C9C23782C0000007CDB3378410A
+S21902BB4982000C3800000A4800012838000001B0099534880359
+S21902BB5E0000396B00022C0000002F85000041820018980B00C7
+S21902BB73008C030001396B00012C0000004082FFF0380000006C
+S21902BB88980B0000396B0001409E00103D200003386928684892
+S21902BB9D00001C2C0500014182000C3800000A480000CC3D20BC
+S21902BBB2000338692874880300002C00000041820018980B0002
+S21902BBC7008C030001396B00012C0000004082FFF03D200004EF
+S21902BBDC3BA9951C38000000980B00007FA3EB78388000003868
+S21902BBF1A0000C4BFFE3953D600003812B35A83BFDFFEC380046
+S21902BC060001B13F0018B01F001AA01C0004392900012C0000E1
+S21902BC1B003BC00000912B35A893DF00144082000C38000045A8
+S21902BC30B01C00047F85E378387D0018388002057FA6EB78486D
+S21902BC450033A92C0300004180002838000001901DFFEC3920C5
+S21902BC5AFFFF93DF0004913F001093DF000C93DF0008386000EA
+S21902BC6F004800001038000009901B00003860FFFF800100243A
+S21902BC847C0803A68361000C8381001083A1001483C10018835C
+S21902BC99E1001C382100204E8000203D200004380000009009F9
+S21902BCAE9508386000004E8000209421FFC87C0802A692C1005C
+S21902BCC31092E10014930100189321001C934100209361002446
+S21902BCD89381002893A1002C93C1003093E100349001003C7C3F
+S21902BCED9923783B6000007C1BC8003D2000043BC995347C7AE9
+S21902BD021B787CBC2B78408001783BFEFFD43B0100083AE00014
+S21902BD17043AC00009813F000C2C0900004081005C7C1BC8503C
+S21902BD2C7F890000809F02347F43D3784FFEE3827FA000265743
+S21902BD41BD07FE7FBD00D07C00E8787D3DE8387FBD03787FA587
+S21902BD56EB784BFFE159801F0234813F000C7C00EA147D3D48CD
+S21902BD6B50901F0234913F000C7F7BEA147F5AEA14480000FC98
+S21902BD80801F0010280001FF408100F83800000190010008390C
+S21902BD9520000091380004387F002C3880020538BF002038DFD5
+S21902BDAA00147F07C378480033697C631B794080002C813F00A5
+S21902BDBF04392900012C09000F913F000441810010801F000870
+S21902BDD42C00000040820044380000084800008CA81E00002C1B
+S21902BDE900000340820064813F0008A97E0002392900017C0B3A
+S21902BDFE48004082001C3863FFFC381E0004907F000C901F0247
+S21902BE1334917F0008907F0010A01F000AB2FE0000B01E00025F
+S21902BE28387F002C3880000438BF002038DF0014480031B52CC3
+S21902BE3D0300004080003892DC00003860FFFF480000382C003E
+S21902BE52000540820014A81E00023860FFFF901C0000480000A7
+S21902BE67203800000B901C00003860FFFF480000107C1BC80063
+S21902BE7C4180FEA07F63DB788001003C7C0803A682C100108257
+S21902BE91E10014830100188321001C8341002083610024838154
+S21902BEA6002883A1002C83C1003083E10034382100384E80009D
+S21902BEBB203803FFFF2800000B3D2000033869287C4D8100204C
+S21902BED03D600003396B29985400103A7D4B002E3D2000033924
+S21902BEE52929987D4A4A147D4903A64E8004203C600003386397
+S21902BEFA288C4E8000203C6000033863289C4E8000203C600002
+S21902BF0F03386328B04E8000203C600003386328D44E8000208E
+S21902BF243C600003386328EC4E8000203C600003386329004E14
+S21902BF398000203C600003386329144E8000203C6000033863AD
+S21902BF4E29244E8000203C600003386329384E8000203C600077
+S21902BF6303386329544E8000203C600003386329684E80002000
+S21902BF783C6000033863297C4E8000209421FFE87C0802A69385
+S21902BF8DA1000C93C1001093E100149001001C3D200003800969
+S21902BFA235B07C9F23782C0000004082007C480043113D200085
+S21902BFB70438699740800300042C00000540820018A0030016A7
+S21902BFCC2C00000040820050480043E5480000482C00000040AF
+S21902BFE1820014480008D93800000A981F0000480000603FA005
+S21902BFF60004389D9D8438A000804800444D2C0300003BBD9D40
+S21902C00B843D2000033D60000393A93890906B35B04082000CE3
+S21902C02038600000480000303D400003816A38903D00000388F9
+S21902C0350B0000396B0001981F0000812835B0916A38903929D5
+S21902C04AFFFF912835B0386000018001001C7C0803A683A100B7
+S21902C05F0C83C1001083E10014382100184E8000209421FFE0FA
+S21902C0747C0802A693A1001493C1001893E1001C900100243D4E
+S21902C0892000003BA932007C7E1B783BE000644800002837FFB3
+S21902C09EFFFF40820010480000513BE0006448000014813D0084
+S21902C0B348386000647D2803A64E8000217FC3F3783881000882
+S21902C0C84BFFFEBD2C0300004182FFCC88610008800100247C88
+S21902C0DD0803A683A1001483C1001883E1001C382100204E803B
+S21902C0F200209421FFE87C0802A693A1000C93C1001093E10032
+S21902C107149001001C3D2000043BA99E044800003080BE35B4D5
+S21902C11C7FE3FB787FA4EB784800443D7C631B7940810014801B
+S21902C1311E35B47FBD1A147C030050901E35B4480041813FC012
+S21902C1460003801E35B42C000000418200303D2000043BE99718
+S21902C15B40801F00042C0000054082000C7FE3FB784800424D3A
+S21902C170801F00042C0000004082FFA0480007413D2000003B5B
+S21902C185C93200801E00443D2000042C00000039299E043D6093
+S21902C19A00033D4000033BE00000912B389493EA35B44182003A
+S21902C1AF10386000004BFFDC0D93FE00448001001C7C0803A6FA
+S21902C1C483A1000C83C1001083E10014382100184E8000209470
+S21902C1D921FFF07C0802A693E1000C900100143D600003812B9D
+S21902C1EE38942C0400249889000039290001912B389440820047
+S21902C20310380000013D200003900938783FE00003801F3878BC
+S21902C218688B0023212B00007D6959143140FFFF7D2A01107DB1
+S21902C22D2058394182001C3D400003392000013D6000033800B3
+S21902C2420000912A387C900B38803D600003812B35B439290087
+S21902C257012C090100912B35B44182002C3D2000038009387C63
+S21902C26C2C000000418200283D600003812B3880392900012C0C
+S21902C281090003912B3880408200104BFFFE6938000000901FB7
+S21902C2963878800100147C0803A683E1000C382100104E800073
+S21902C2AB209421FFE87C0802A693A1000C93C1001093E1001463
+S21902C2C09001001C4800055D7C7D1B783C6000033C80000338E9
+S21902C2D5A000EC38842A9038632A884BFFE3D57FA3EB7848002F
+S21902C2EA05A58001001C7C0803A683A1000C83C1001083E100DC
+S21902C2FF14382100184E8000209421FFE87C0802A693A1000CA8
+S21902C31493C1001093E100149001001C480005017C7D1B783C5E
+S21902C3296000033C80000338A000FE38842AA038632A884BFFE3
+S21902C33EE3797FA3EB78480005498001001C7C0803A683A1007E
+S21902C3530C83C1001083E10014382100184E8000209421FFE8FB
+S21902C3687C0802A69381000893A1000C93C1001093E1001490B5
+S21902C37D01001C7C7D1B787C9E23784BFFFD6D3D2000038009A9
+S21902C39235AC3D6000001FE0000A3B8B320048000014813C00F7
+S21902C3A748386000647D2803A64E8000217FA3EB787FC4F378C6
+S21902C3BC4BFFFBC97C631B79408200102C1F00003BFFFFFF404F
+S21902C3D182FFD48001001C7C0803A68381000883A1000C83C1B1
+S21902C3E6001083E10014382100184E8000209421FF787C0802A2
+S21902C3FBA693C1008093E100849001008C7C8023782C000005CF
+S21902C41090A1001090C1001490E100189101001C9121002091D0
+S21902C4254100249081000C3BC000004182002C280000054181A0
+S21902C43A00102C00000441820194480003482C000006418203C3
+S21902C44F082C0000074182030C480003343FE00003801F35B897
+S21902C4643D6000032C00000039200001912B35BC4082001448CB
+S21902C4790011C1907F35B82C03000041820308811F35B838080F
+S21902C48EFFFF28000039418102F83D600003396B2AB0540010F5
+S21902C4A33A7D4B002E3D20000339292AB07D4A4A147D4903A61D
+S21902C4B84E8004203D20FF0061290014816900007C0006AC392B
+S21902C4CD48FFFF3C0080007C0054307D6B0378916900007C0078
+S21902C4E206AC480002A83D20FF0061290200A00900007C000687
+S21902C4F7AC60000008B00900007C0006AC480002883D20FF0000
+S21902C50C61290200A00900007C0006AC60000004B00900007C17
+S21902C5210006AC480002683D20FF0061290240A00900007C004D
+S21902C53606AC60000004B00900007C0006AC480002483D20FFFE
+S21902C54B0061290220A00900007C0006AC60000008B009000030
+S21902C5607C0006AC480002283D20FF0061290220A00900007CF2
+S21902C5750006AC60000004B00900007C0006AC480002083D20FE
+S21902C58AFF0061290940800900007C0006AC6000008090090093
+S21902C59F007C0006AC480001E83D20FF00612909488169000000
+S21902C5B47C0006AC3948FFE53C0080007C0054307D6B03789128
+S21902C5C96900007C0006AC480001BC3D60000383CB35BC3800A3
+S21902C5DE0000900B35BC3D200003814935B82C0A0000418201A4
+S21902C5F39C7D4853783808FFFF280000394181018C3D60000372
+S21902C608396B2B985400103A7D4B002E3D20000339292B987D19
+S21902C61D4A4A147D4903A64E8004203D20FF0061290014816914
+S21902C63200007C0006AC3948FFFF3C0080007C0054307D6B009B
+S21902C64778916900007C0006AC4800013C3D20FF0061290200CA
+S21902C65CA00900007C0006AC7000FFF75400043EB00900007CBA
+S21902C6710006AC480001183D20FF0061290200A00900007C008D
+S21902C68606AC7000FFFB5400043EB00900007C0006AC480000B7
+S21902C69BF43D20FF0061290240A00900007C0006AC7000FFFB26
+S21902C6B05400043EB00900007C0006AC480000D03D20FF00611C
+S21902C6C5290220A00900007C0006AC7000FFF75400043EB00982
+S21902C6DA00007C0006AC480000AC3D20FF0061290220A0090071
+S21902C6EF007C0006AC7000FFFB5400043EB00900007C0006AC1A
+S21902C704480000883D20FF0061290940800900007C0006AC540F
+S21902C71900066E900900007C0006AC480000683D20FF00612933
+S21902C72E0948816900007C0006AC3948FFE53C0080007C005495
+S21902C743307D6B0078916900007C0006AC4800003C3D2000033E
+S21902C75883C935B8480000303961000838010090392000039BB2
+S21902C76DC100719921007090010074916100783D200003800BFA
+S21902C782000883C935AC900935AC7FC3F3788001008C7C0803AB
+S21902C797A683C1008083E10084382100884E8000209421FFE0D1
+S21902C7AC7C0802A693A1001493C1001893E1001C900100247CD0
+S21902C7C17D1B787C9F23787CA32B784BFFCEAD38000000901F28
+S21902C7D600007FA3EB78388100084BFFF7A52C03000041820029
+S21902C7EB18880100082C0000034082000C38000001901F0000A4
+S21902C80038600001800100247C0803A683A1001483C10018839A
+S21902C815E1001C382100204E8000209421FFE87C0802A69381C7
+S21902C82A000893A1000C93C1001093E100149001001C3FA00032
+S21902C83F003BBD3200813D00343860FFFF7D2803A64E800021EE
+S21902C854801D00347C7C1B78386000007C0803A64E8000217F39
+S21902C86983E3788001001C7C0803A68381000883A1000C83C18B
+S21902C87E001083E10014382100184E8000209421FFF87C080285
+S21902C893A69001000C3D20000039293200800900347C0803A66B
+S21902C8A84E8000218001000C7C0803A6382100084E80002094E8
+S21902C8BD21FFE87C0802A693A1000C93C1001093E1001490016E
+S21902C8D2001C3FA000003BBD3200817D00343D20000380693872
+S21902C8E7887D6803A63D20000338000000900937E84E800021E0
+S21902C8FC801D00303D2000038069388C7C0803A64E8000213DED
+S21902C91120000338000001900938088001001C7C0803A683A1E7
+S21902C926000C83C1001083E10014382100184E8000209421FF0A
+S21902C93BE87C0802A693A1000C93C1001093E100149001001CF3
+S21902C9503FA000003BBD3200811D00343860FFFF7D0803A63DEF
+S21902C965400003392000013D60000338000000912A37E8900BCC
+S21902C97A38084E8000213D20000390693888813D0034386000CF
+S21902C98F017D2803A64E800021813D00303860FFFF7D2803A67C
+S21902C9A44E8000213D200003801D00309069388C386000017C89
+S21902C9B90803A64E8000218001001C7C0803A683A1000C83C184
+S21902C9CE001083E10014382100184E8000209421FFE87C080244
+S21902C9E3A69381000893A1000C93C1001093E100149001001C9D
+S21902C9F83FE00003801F35C02C000000408200A03FA000003BC5
+S21902CA0DBD3200813D00343860FFFF7D2803A64E800021813D9B
+S21902CA2200347C7C1B78386000017D2803A64E800021815D0085
+S21902CA37143D2000033929C2AC912A00043D600003396BC308D1
+S21902CA4C3D200003916A00083929C1D8912A000C3D60000339D0
+S21902CA616BC0703D200003916A00103929C3F4912A00143D602E
+S21902CA760003396BC7A83D200003916A00183929C364912A00D7
+S21902CA8B1C801D00347F83E3787C0803A64E80002138000001F0
+S21902CAA0901F35C03D2000033FA00004A08937FA387D97404865
+S21902CAB50038313BBD9740801D00043D20000390093884800156
+S21902CACA001C7C0803A68381000883A1000C83C1001083E10013
+S21902CADF14382100184E8000209421FFF07C0802A693E1000C78
+S21902CAF490010014480037C93D2000043BE997403D20000381FC
+S21902CB097F0004800938847C005800418200602C0B0004408254
+S21902CB1E00484BFFFE193C6000043D20000439299E043C800091
+S21902CB330338C39D843CA00003396000013940000D3D00000388
+S21902CB483CE000033800000090C43890916535B099439D8491F5
+S21902CB5D283894900735B4801F00042C000000408200084BFF65
+S21902CB72FE6D3D200004800997443D600003900B3884800100FF
+S21902CB87147C0803A683E1000C382100104E8000209421FFE8EE
+S21902CB9C7C0802A693A1000C93C1001093E100149001001C3D3B
+S21902CBB120000380E937FC2C070000408200283D0000033920F3
+S21902CBC600013D6000033D40000338002328912837F490EB3818
+S21902CBDBB8900A37F84800007C3C6000033C80000338632A04D2
+S21902CBF0388438B838A000014BFF61F93C6000033C800003386A
+S21902CC056329DC388437F838A000024BFF61E13C6000033C80FF
+S21902CC1A000338632A34388437F438A000014BFF61C93C600032
+S21902CC2F033C80000338632A50388435E838A000054BFF61B100
+S21902CC443C6000033C80000438632A783884196438A000054BD7
+S21902CC59FF61993D20000338000000900938144800034D480069
+S21902CC6E287D3D6000033D200003392937D83BEB37C87C1F488C
+S21902CC83004182003C7D3D4B783BC00001813F00047FE3FB7884
+S21902CC987D2803A64E8000217C631B794182000C93DF000C483B
+S21902CCAD000008907F000C3BFF00107C1FE8004082FFD43D2089
+S21902CCC20003800938BC2C000000408200143C60000338632C6E
+S21902CCD7804BFFD9DD480000903D200003800937F42C000000A9
+S21902CCEC418200283C6000043863195048001E8D2C030000413A
+S21902CD018200143C60000338632CA04BFFD9A9480000103D20F9
+S21902CD16000338000001900938143D200003800938142C00007F
+S21902CD2B00418200403C600003386335E8480001B97C641B781D
+S21902CD403C60000338632CCC4BFFD96D3C600004386319644815
+S21902CD5500019D7C641B783C60000338632CD44BFFD9514BFFB9
+S21902CD6AFC758001001C7C0803A683A1000C83C1001083E1008A
+S21902CD7F14382100184E8000209421FFF093E1000C38000004C5
+S21902CD947C0903A67C9F237838800000398000188963000038F2
+S21902CDA9E000012C0B000038A0000038C0000A3863000141821D
+S21902CDBE011069600030212000007C0901147CE9003941820013
+S21902CDD330892300003809FFBF280000194181000C38090020F9
+S21902CDE85409063E2C090078408200108D63000138C0001038DE
+S21902CDFD630001392BFFD0380BFFBF7D2A4B787C08037855299B
+S21902CE12063E5400063E21290009392000007D29491420000059
+S21902CE2705380000007C0001147D27037938E000003920000090
+S21902CE3C40820010380BFF9F2800000541810008392000012CAA
+S21902CE51090000418200685540063E280000094181000C7D49F3
+S21902CE66537848000030380BFF9F280000054181000C392BFF2E
+S21902CE7BA94800001C5500063E200000057C0001107C0003B80C
+S21902CE90392BFFC97C0948387C09300040800020896300007C58
+S21902CEA50531D62C0B00007CA04A14386300014082FF0C480003
+S21902CEBA00142C0B002E4182000C386000004800001C7CA0609C
+S21902CECF307C840378398CFFF84200FECC909F0000386000010C
+S21902CEE483E1000C382100104E8000209421FFE87C0802A69310
+S21902CEF9A1000C93C1001093E100149001001C890300033FA069
+S21902CF0E000488A3000088C3000188E300023C80000338842C78
+S21902CF23F0387D9F044BFFD705387D9F048001001C7C0803A662
+S21902CF3883A1000C83C1001083E10014382100184E8000208101
+S21902CF4D2300007C0918004182002081230004908900008003E1
+S21902CF6200049064000090040004908300044E80002090890005
+S21902CF77049089000091240000912400044E8000207C6B1B78AB
+S21902CF8C806B00007C0358004182001880030000900B0000814D
+S21902CFA1230000916900044E800020386000004E80002094212A
+S21902CFB6FFE87C0802A693A1000C93C1001093E100149001008F
+S21902CFCB1C3D0000033CE00003392838A039673898912838A095
+S21902CFE0916738983D400004912900043BCA9F24916B00043F27
+S21902CFF5A000033BE000107FC4F378387D38984BFFFF4937FF57
+S21902D00AFFFF3BDE06104082FFEC8001001C7C0803A683A10042
+S21902D01F0C83C1001083E10014382100184E8000209421FFF812
+S21902D0347C0802A69001000C80040000A124000490030010B176
+S21902D04923001480040000A10400043D200003396938B09009E4
+S21902D05E38B03D400003B10B0004906A38BC48000015800100C2
+S21902D0730C7C0803A6382100084E8000209421FFF87C0802A641
+S21902D0889001000C81230000388300108009000038A000007CA3
+S21902D09D0803A64E8000218001000C7C0803A6382100084E80EE
+S21902D0B200209421FF587C0802A67D800026934100909361008F
+S21902D0C7949381009893A1009C93C100A093E100A4900100ACF4
+S21902D0DC9181008C3D2000003929320083A9004C3D6000032C65
+S21902D0F11D00007C7B1B787C9A23787CBC2B7883EB38BC3BC093
+S21902D1060005418200547FBFEB78815F0000801F000C816A00DA
+S21902D11B243D2000032C000000392935C4916A0028912A0024EB
+S21902D1304082002C800A00003C800003388438B07FE3FB7838FB
+S21902D145A000007C0803A64E800021801F000C60000001901F57
+S21902D15A000C2E1D00004800003C813F00007FE3FB78800900C0
+S21902D16F1C7C0803A64E8000213D2000003929320080090048AA
+S21902D1843C60000360630D407C0803A64E80002137DEFFFF4071
+S21902D1998100E4813F00007FE3FB788009000C7C0803A64E80F0
+S21902D1AE00212C0300004182FFB0813F00003D60000381490079
+S21902D1C31038A0000238EB38A89361000893410010938100145B
+S21902D1D87FE3FB783881000838DC000E7D4803A63800000E3996
+S21902D1ED2000009001000C912B38A84E8000213D2000038009F5
+S21902D20238B83FC000032C000000418200384BFFF6117C7D1B92
+S21902D217783C60000338632CFC4BFFD4957F63DB783880000E73
+S21902D22C4BFFDF617F43D3787F84E3784BFFDF557FA3EB784BA3
+S21902D241FFF64D801E38A82C000000408200307FFDFB787FDFA6
+S21902D256F378813D00007FA3EB788009001C7C0803A64E80006E
+S21902D26B21801F38A82C0000004182FFE47FBFEB7841920018A9
+S21902D280813F0000380000008169002890090028916900248029
+S21902D2950100AC8181008C7C0803A68341009083610094838145
+S21902D2AA009883A1009C83C100A083E100A47D8081203821002D
+S21902D2BFA84E8000209421FFF87C0802A69001000C3D200003E8
+S21902D2D4380938A87C0400004082001038000001900938A848D1
+S21902D2E90000188123000081690028800B00087C0803A64E80CD
+S21902D2FE00218001000C7C0803A6382100084E8000209421FF36
+S21902D313E07C0802A69361000C9381001093A1001493C100181A
+S21902D32893E1001C900100243D200000392932008389004C3D1E
+S21902D33D6000032C1C00007C7D1B787C9B237883CB38BC4182E6
+S21902D35200547F9EE378815E0000801E000C816A00243D2000FE
+S21902D367032C000000392935C4916A0028912A00244082002C30
+S21902D37C800A00003C800003388438B07FC3F37838A000007CA7
+S21902D3910803A64E800021801E000C60000001901E000C813E5C
+S21902D3A600007FC3F3788009001C7C0803A64E8000213C600061
+S21902D3BB03386338A04BFFFBC97C7F1B7941820054393F000CA8
+S21902D3D0A009000C817F000C8149000481090008B01D000C91B6
+S21902D3E57D0000915D0004911D000880BF00087F63DB7838A5AE
+S21902D3FAFFF2389F001A4BFFCAB13C600003386338987FE4FB08
+S21902D40F784BFFFB3D807F000848000008386000002C1C0000D0
+S21902D42441820018813E000038000000816900289009002891B6
+S21902D439690024800100247C0803A68361000C8381001083A150
+S21902D44E001483C1001883E1001C382100204E8000209421FFB7
+S21902D463E87C0802A693A1000C93C1001093E100149001001CC0
+S21902D4787CA02B797C0903A64081003C7C9F23787FC902A63FC8
+S21902D48DA00003807F000080BF0004809D38AC4BFFCA15801DD7
+S21902D4A238AC813F000437DEFFFF7C004A143BFF0008901D38B2
+S21902D4B7AC4082FFD88001001C7C0803A683A1000C83C10010C6
+S21902D4CC83E10014382100184E8000209421FF607C0802A6939A
+S21902D4E161008C9381009093A1009493C1009893E1009C900149
+S21902D4F600A47C7E1B783C6000037C9B2378386338984BFFFAE9
+S21902D50B817C7C1B787F89FE707D20E2787C004850817E000078
+S21902D5207C00FE70393C000C7D3F0038800B001493E1000893E2
+S21902D53561000C7FC3F3783881000838A000017C0803A64E802B
+S21902D54A00213D200003800938B82C000000418200384BFFF268
+S21902D55FC57C7D1B783C60000338632D0C4BFFD1497FE3FB78B3
+S21902D5743880000E4BFFDC15387F000E389BFFF24BFFDC097F63
+S21902D589A3EB784BFFF301813E0000800900282C0000004182E3
+S21902D59E005C3C600003386335E8389F001E38A000044BFFD3D0
+S21902D5B3752C03000041820040815E00007FC3F378812A002856
+S21902D5C87F64DB78800900043D6000037C0803A683AA0014393D
+S21902D5DD6BD4603D20000393E938AC916A00144E800021813E16
+S21902D5F2000093A900142C1C0000418200183C600003937C00FC
+S21902D60708386338A07F84E3784BFFF93D800100A47C0803A65C
+S21902D61C8361008C8381009083A1009483C1009883E1009C3822
+S21902D6312100A04E8000209421FFF87C0802A69001000C3D205C
+S21902D6460003806938BC81630000800B00207C0803A64E80005E
+S21902D65B218001000C7C0803A6382100084E8000209421FFF8DD
+S21902D6707C0802A69001000C7C641B783C60000338632D1C4B94
+S21902D685FFD0318001000C7C0803A6382100084E8000209421CB
+S21902D69AFFF07C0802A693E1000C900100143D2000043BE91D92
+S21902D6AFD0801F001C2C0000004082002C90691DD0909F0004A1
+S21902D6C44800049D7C631B794082001C801F0008392000017C93
+S21902D6D90000D0913F001C901F001038600000800100147C0809
+S21902D6EE03A683E1000C382100104E8000203D20000439291DD0
+S21902D703D08009001C7C6B1B782C0000004082000C3860000782
+S21902D7184E800020800900147C0B0040418000148009001838F5
+S21902D72D6000007C0B00404D800020386000014E8000203D20E8
+S21902D742000439691DD0800B001C2C0000004182001C812B00DA
+S21902D757143860000091240000800B0018900500004E8000202F
+S21902D76C386000074E8000203D20000439691DD0800B001C7C01
+S21902D7816A1B782C0000004182001C812B000838600000912A7D
+S21902D7960000800B000C900400004E800020386000074E8000F1
+S21902D7AB209421FFD87C0802A69321000C9341001093610014DE
+S21902D7C09381001893A1001C93C1002093E100249001002C3DCB
+S21902D7D520000480091DEC7C7F1B782C0000007C9E23787CBADD
+S21902D7EA2B783B8000004082000C38600007480000F83D2000BB
+S21902D7FF0483A91DD03C8000033CA000033884DCF038A5DE18F8
+S21902D8147CA428507FA3EB784BFFC6957CBFF214380000807CC1
+S21902D8290903A639200000612010003D600E007C0004AC7D39BA
+S21902D83E8BA67D788BA67C198BA67D788BA6392900104200FFD8
+S21902D853E03C0004004C00012C7C108BA64C00012C3D20000489
+S21902D86839291DD0800900107CBE2B783C6000037FFF00383F4B
+S21902D87D2000037D3B4B7838632D587FE4FB784BFFCE29480072
+S21902D892001C801B000838792D705400F87E7C0002147FFF0291
+S21902D8A7144BFFCE0D7C1FF040408000207FE3FB787FA803A6DC
+S21902D8BC4E800021480003657C7C1B794182FFCC93FA00003CCE
+S21902D8D10002004C00012C7C108BA64C00012C3C600003386350
+S21902D8E62D744BFFCDCD7F83E3788001002C7C0803A6832100C6
+S21902D8FB0C83410010836100148381001883A1001C83C1002079
+S21902D91083E10024382100284E8000209421FFD07C0802A692C2
+S21902D925E1000C9301001093210014934100189361001C93817D
+S21902D93A002093A1002493C1002893E1002C900100343D6000DB
+S21902D94F04392B1DD08009001C7CBE2B782C0000007CD83378BA
+S21902D9647C7C1B787C9D23783B4000004082000C386000074838
+S21902D97900011C836B1DD03C8000033CA000033884DE1838A56D
+S21902D98EDF5C7CA428507F63DB784BFFC5197CBDF214380000D6
+S21902D9A3807C0903A639200000612010003D600E007C0004ACF9
+S21902D9B87D398BA67D788BA67C198BA67D788BA63929001042A6
+S21902D9CD00FFE03C0004004C00012C7C108BA64C00012C3C60D4
+S21902D9E2000338632D787FA4EB787F86E3784BFFCCC53D2000C8
+S21902D9F7043EE000033B291DD04800002038772D704BFFCCAD27
+S21902DA0C57E0F87E7C0002147FBD02147FDFF0507F9C02142C72
+S21902DA211E000040810050801900087FC5F3787F8500007F8364
+S21902DA36E3787FA4EB784FFEE3827D200026552907FE7D290055
+S21902DA4BD07C0048787CA948387D2503787F6803A67CBF2B7883
+S21902DA604E800021480001C17C7A1B794182FF98939800003C66
+S21902DA750002004C00012C7C108BA64C00012C3C6000033863AA
+S21902DA8A2D744BFFCC297F43D378800100347C0803A682E1004E
+S21902DA9F0C8301001083210014834100188361001C8381002013
+S21902DAB483A1002483C1002883E1002C382100304E8000202873
+S21902DAC9030007418100883D600003396B2E885460103A7D4B2D
+S21902DADE002E3D20000339292E887D4A4A147D4903A64E800420
+S21902DAF3203C60000338632D984E8000203C60000338632DB8EB
+S21902DB084E8000203C60000338632DD04E8000203C6000033817
+S21902DB1D632DE84E8000203C60000338632E044E8000203C6090
+S21902DB32000338632E1C4E8000203C60000338632E2C4E80009F
+S21902DB47203C60000338632E504E8000203C60000338632E7420
+S21902DB5C4E8000209421FFE07C0802A693A1001493C1001893B8
+S21902DB71E1001C900100243D20000483E91DD03C8000033CA091
+S21902DB8600033884DF5C38A5DFF87CA428507FE3FB784BFFC35B
+S21902DB9B193FC000013BA0000838610008380000807C0903A6EB
+S21902DBB039200000612010003D600E007C0004AC7D398BA67D34
+S21902DBC5788BA67C198BA67D788BA6392900104200FFE07FE8B5
+S21902DBDA03A64E8000217D3DF1D63D600004396B1DD03D29FE80
+S21902DBEF003C00FE00912B0018900B001493CB000893AB000CAD
+S21902DC0438600000800100247C0803A683A1001483C100188383
+S21902DC19E1001C382100204E8000209421FFF07C0802A693E147
+S21902DC2E000C900100143C00007E7C7F1B786000007E7FE9009B
+S21902DC4339418200503C60000338632EA87FE4FB784BFFCA611E
+S21902DC583C000010600000107FE9003938600004408200303C89
+S21902DC6D600020606300207FE318387C6300D07C63FE707C60AE
+S21902DC8218F8546307BC540007387C6303784800000838600027
+S21902DC9700800100147C0803A683E1000C382100104E800020E8
+S21902DCAC3D200002392920007C0348407C802378396000004103
+S21902DCC181000C7C0048404181001C3D20000338890BBC7C0371
+S21902DCD62040418100107C00204040810008396000017D635B86
+S21902DCEB784E8000207C6A1B787CF88AA654E70FFE2C0700001F
+S21902DD0041820040380000807C0903A639200000612010003DF7
+S21902DD15600E007C0004AC7D398BA67D788BA67C198BA67D7890
+S21902DD2A8BA6392900104200FFE03C0004007C0004AC7C188B8E
+S21902DD3FA655480010396000AA9968055539200055992802AABC
+S21902DD54380000809808055599680555992802AA392000327D31
+S21902DD692903A62F87000038000030980A0000396A0001420026
+S21902DD7E00003D20004C7D2903A6880A00005400067261294B5E
+S21902DD93407D2903A65400063E886A0000546906727C090000A1
+S21902DDA841820014706000207D204B78408200084200FFE43811
+S21902DDBD0000FF98080000892A00007D6A5B782C0900FF3D20AD
+S21902DDD200014082001C3529FFFF40810014880A0000394A0010
+S21902DDE7012C0000FF4182FFEC7D2BFE707D604A787C0058506D
+S21902DDFC7C00FE707C6300384D9E00203C0002007C0004AC7C19
+S21902DE11188BA64E8000209421FFF093C1000893E1000C7D5869
+S21902DE268AA6554A0FFE2C0A000041820040380000807C09038B
+S21902DE3BA639200000612010003D000E007C0004AC7D398BA6DD
+S21902DE507D188BA67C198BA67D188BA6392900104200FFE03D94
+S21902DE652004007C0004AC7D388BA62C0500002F8A0000546AC3
+S21902DE7A0010408100A03BC000AA3BE00055398000A038C000B5
+S21902DE8FFF9BCA05559BEA02AA998A05558804000039200031F5
+S21902DEA498030000380000327C0903A63904000138E30001399C
+S21902DEB929FFFF4200FFFC880300007D2903A6540006725400EF
+S21902DECE063E89630000556906727C09000041820014716000A5
+S21902DEE3207D204B78408200084200FFE498CA000089230000A6
+S21902DEF8880400007D0443787C0900007CE33B784182000C39A7
+S21902DF0D6000FF4800000C34A5FFFF4181FF787CA8FE707D0026
+S21902DF222A787C0040507C00FE70392000FF992A00007D6B0048
+S21902DF3738419E00103D2002007C0004AC7D388BA67D635B7883
+S21902DF4C83C1000883E1000C382100104E8000207D588AA6554C
+S21902DF614A0FFE2C0A000041820040380000807C0903A63920D5
+S21902DF760000612010003D600E007C0004AC7D398BA67D788BC0
+S21902DF8BA67C198BA67D788BA6392900104200FFE03C00040015
+S21902DFA07C0004AC7C188BA63D60FE00380000AA980B055539C1
+S21902DFB5200055992B02AA38000090980B0555892B00002C0ABC
+S21902DFCA000099230000880B0001392000FF98030001992B0033
+S21902DFDF00418200103D6002007C0004AC7D788BA638600000CA
+S21902DFF44E8000209421FFF87C0802A69001000C3803FFFE284E
+S21902E00900001D418100A03D600003396B2EB85400103A7D4BEC
+S21902E01E002E3D20000339292EB87D4A4A147D4903A64E8004AA
+S21902E033203860000248000078386000414BFFA48154637F3E9B
+S21902E0482C0300024182004028030002418100102C0300014118
+S21902E05D8200384800004C2C030004418200242C030008408246
+S21902E072003C38600008480000383860000E4800003038600080
+S21902E0870C480000283860000448000020386000054800001800
+S21902E09C3860000A480000103860000B480000083860000F8054
+S21902E0B101000C7C0803A6382100084E8000203D200003816980
+S21902E0C6385C806B00985463C23E4E8000209421FFF87C080250
+S21902E0DBA69001000C7C641B78386000404BFFA3ED8001000C34
+S21902E0F07C0803A6382100084E8000209421FFF87C0802A69030
+S21902E10501000C386000414BFFA3B560640600548004203D2057
+S21902E11A00035484045E900935D0386000414BFFA3AD8001001A
+S21902E12F0C7C0803A6382100084E8000209421FFF87C0802A674
+S21902E1449001000C386000414BFFA3753D200003808935D05425
+S21902E1596305E8380000007C642378900935D0386000414BFFE6
+S21902E16EA3698001000C7C0803A6382100084E8000204E8000B2
+S21902E183204E8000209421FFF87C0802A69001000C3860004025
+S21902E1984BFFA3293D20000339298DC87C634A78200300007CFE
+S21902E1AD6019148001000C7C0803A6382100084E80002094210B
+S21902E1C2FFF87C0802A69001000C386000404BFFA2F138830011
+S21902E1D704386000404BFFA2F98001000C7C0803A63821000850
+S21902E1EC4E8000209421FFF87C0802A69001000C3D20000380D4
+S21902E2010935D42C0000004082001038000001900935D44800CE
+S21902E21608118001000C7C0803A6382100084E8000203D20006D
+S21902E22B03800935D82C0000004C82002038000001900935D845
+S21902E2407D1E9AA67508FFFF3D2000017D2903A638008001B056
+S21902E2550809C07C0902A6600086A07C0903A642000000800831
+S21902E26A0ABC3D600001600000C090080ABC81280AB8616B007F
+S21902E27FA2552906AE91280AB8916809F07CE902A690E80AE0D3
+S21902E29438002800B0083E8039683E8038002808B00B000239DB
+S21902E2A9200091B12809C0394000019148003038000018980B90
+S21902E2BE0004980B0005B14B0006B0EB0028B0EB002CB0EB0071
+S21902E2D32EB14B003039282800B0E900023800B000B0082800E9
+S21902E2E838082810900900043968280838082820B14B0002901E
+S21902E2FD0B000439202000B1282808380000FF98080A863920B4
+S21902E312000599280A8A38004820B0080A8239204823B1280A0A
+S21902E327824E80002039233E80A00900207D4302147D4B53781E
+S21902E33CA00A00007008800041820028A00A00007008200041B5
+S21902E351820010A00900027D43021448000008394A00087C0A3C
+S21902E36658004082FFD47D495378A0090000700080004082FFC3
+S21902E37BF87D2A4B787C090378A00A0000700B10004182001418
+S21902E390A00A00007000EFFFB00A0000B12A0002A12A000239CC
+S21902E3A500000038090001B00A0002816A00045529043E7C8BA8
+S21902E3BA49AEA00A000060008000B00A0000A12A000071208030
+S21902E3CF00418200647D4B53787D0A43783D0000076108FFFF8B
+S21902E3E4394A00017C0A400040820038A1230A8239400000719F
+S21902E3F929FFFDB1230A82A00B00005400047EB00B0000A12383
+S21902E40E0A8261290002B1230A82A00B000060008000B00B0034
+S21902E42300A00B0000700980004082FFB87D6A5B787D49537875
+S21902E438A0090000700080004082FFF87D2A4B78B00A00024E02
+S21902E44D80002038E33E80A10700107C03422E7D434214700607
+S21902E46280004182000C386000004E800020812A000439600081
+S21902E477008809000098040000B0CA0002812A0004996900002F
+S21902E48C7C03422E600080007C03432E7D388AA655290FFE2C19
+S21902E4A109000041820028812A0004A00700062C000000408122
+S21902E4B600187C004BAC7C0004AC3400FFF0392900104181FF3D
+S21902E4CBF0386000014E8000209421FFE87C0802A693E100146E
+S21902E4E09001001C7C7F1B787FE3FB78388100084BFFFF612C79
+S21902E4F50300004182FFF0886100088001001C7C0803A683E137
+S21902E50A0014382100184E8000209421FFE87C0802A693A10086
+S21902E51F0C93C1001093E100149001001C7CBF2B787FE0FB788B
+S21902E5342C0000007C7D1B787C9E23783BFFFFFF4182002488B7
+S21902E5499E00007FA3EB784BFFFDDD7FE0FB782C0000003BDE58
+S21902E55E00013BFFFFFF4082FFE48001001C7C0803A683A100D5
+S21902E5730C83C1001083E10014382100184E8000209421FFE8B9
+S21902E5887C0802A693A1000C93C1001093E100149001001C7CF6
+S21902E59DBF2B787FE0FB782C0000007C7D1B787C9E23783BFF87
+S21902E5B2FFFF418200247FA3EB784BFFFF197FE0FB782C000083
+S21902E5C700987E00003BDE00013BFFFFFF4082FFE48001001C8E
+S21902E5DC7C0803A683A1000C83C1001083E10014382100184E3B
+S21902E5F18000209421FFE87C0802A69381000893A1000C93C1F6
+S21902E606001093E100149001001C3D200003800935DC3D60001C
+S21902E61B001FE0000A3B8B32007C7D1B787C9E23784800001445
+S21902E630813C0048386000647D2803A64E8000217FA3EB787F8C
+S21902E645C4F3784BFFFE097C631B79408200102C1F00003BFF6F
+S21902E65AFFFF4082FFD48001001C7C0803A68381000883A10017
+S21902E66F0C83C1001083E10014382100184E8000209421FF8024
+S21902E6847C8023782C00000590A1001090C1001490E1001891F2
+S21902E69901001C91210020914100249081000C38600000418208
+S21902E6AE002C28000005418100102C00000441820144480002A3
+S21902E6C3B42C000006418202782C00000741820278480002A0BE
+S21902E6D83D600003800B30043D20000339292F307D2902147D6D
+S21902E6ED2903A64E8004203D20FF0061290014800900007C004E
+S21902E70206AC60000400900900007C0006AC480000E03D20FF9A
+S21902E7170061290200A00900007C0006AC60000008B009000062
+S21902E72C7C0006AC480000C03D20FF0061290200A00900007C8E
+S21902E7410006AC60000004B00900007C0006AC480000A03D207A
+S21902E756FF0061290240A00900007C0006AC60000004B00900E8
+S21902E76B007C0006AC480000803D20FF0061290220A0090000EB
+S21902E7807C0006AC60000008B00900007C0006AC480000603D1B
+S21902E79520FF0061290220A00900007C0006AC60000004B009A9
+S21902E7AA00007C0006AC480000403D20FF0061290940800900E5
+S21902E7BF007C0006AC60000080900900007C0006AC4800002001
+S21902E7D43D20FF0061290948800900007C0006AC60000010903B
+S21902E7E90900007C0006AC3D20000338000001900935E048004E
+S21902E7FE01783D200003806935E038000000900935E03D6000A5
+S21902E81303800B30EC3D200003392930187D2902147D2903A62A
+S21902E8284E8004203D20FF0061290014800900007C0006AC54DD
+S21902E83D0005A8900900007C0006AC4800012C3D20FF006129F0
+S21902E8520200A00900007C0006AC7000FFF75400043EB009001C
+S21902E867007C0006AC480001083D20FF0061290200A009000085
+S21902E87C7C0006AC7000FFFB5400043EB00900007C0006AC4823
+S21902E8910000E43D20FF0061290240A00900007C0006AC700018
+S21902E8A6FFFB5400043EB00900007C0006AC480000C03D20FF7B
+S21902E8BB0061290220A00900007C0006AC7000FFF75400043EC2
+S21902E8D0B00900007C0006AC4800009C3D20FF0061290220A0B9
+S21902E8E50900007C0006AC7000FFFB5400043EB00900007C00AB
+S21902E8FA06AC480000783D20FF0061290940800900007C000656
+S21902E90FAC5400066E900900007C0006AC480000583D20FF00B5
+S21902E92461290948800900007C0006AC54000734900900007CA1
+S21902E9390006AC4800003838600036480000303961000838016F
+S21902E94E0088392000039861007199210070900100749161003E
+S21902E963783D200003800B0008806935DC900935DC38210080B0
+S21902E9784E8000209421FFE87C0802A693C1001093E100149051
+S21902E98D01001C7C9E2378392000007C7F1B78913E0000881F3F
+S21902E9A20A86700B00014182006038000001981F0A86A13F28A2
+S21902E9B700391F2800712080004082003C81280004394000018E
+S21902E9CC880900003960B00098010008B1480002B17F28003829
+S21902E9E1610008388000014BFFB3A92C0300004182000C38001C
+S21902E9F60001901E000038000010901F094C392000017D234BC5
+S21902EA0B788001001C7C0803A683C1001083E100143821001870
+S21902EA204E8000209421FFF07C0802A693C1000893E1000C90B0
+S21902EA350100143D2000003BE93200813F00343860FFFF7D28CE
+S21902EA4A03A64E8000217C7E1B787C1E9AA67400FFFF3D2000E2
+S21902EA5F03800935E42C0000004082009438000001900935E489
+S21902EA744BFFF7B5813F0034386000007D2803A64E8000218146
+S21902EA895F00147C1E9AA67400FFFF3D200003900A0000392956
+S21902EA9EE514912A00043D600003396BE5843D200003916A009C
+S21902EAB3083929E32C912A000C3D600003396BE4D43D200003AB
+S21902EAC8916A00103929E680912A00143D600003396BE97C3DAA
+S21902EADD200003916A00183929E5F4912A001C801F00347FC3C0
+S21902EAF2F3787C0803A64E800021800100147C0803A683C1007B
+S21902EB070883E1000C382100104E8000209421FFF07C0802A653
+S21902EB1C93E1000C900100143D200003806938C07C9F23782C95
+S21902EB31030000418200084BFFB379881F00002C0000024082ED
+S21902EB46002C3C800003388438B0387F001C38A000064BFFBD6C
+S21902EB5BCD2C03000040820010801F00103D200003900935E80B
+S21902EB70800100147C0803A683E1000C382100104E800020946C
+S21902EB8521FE887C0802A69321015C93410160936101649381EE
+S21902EB9A016893A1016C93C1017093E101749001017C3D20003C
+S21902EBAF03906938C0386100187C791B783880000038A0012C60
+S21902EBC44BFFB3C53D200003808938B0396938B0A06B00043D4C
+S21902EBD9201234394000003CE0000338C000016129555539605C
+S21902EBEE0006390735E898C100199961001A9121001C9947353F
+S21902EC03E899480003380000FF90810034B06100389801015179
+S21902EC1898C1001899480001994800023CA000037D1D4378383E
+S21902EC2DA5EB1498010148980101499801014A9801014B980100
+S21902EC42014C9801014D9801014E9801014F980101503861002E
+S21902EC570838800044480000D53B8000023B4101483F6000035C
+S21902EC6C48001F0D7C7E1B787F23CB783880012C7F45D378387A
+S21902EC81C0004338E000444800024948000AA1881B35E82C00A6
+S21902EC96000040820028881D00012C0000004082001C881D0023
+S21902ECAB022C000000408200108BFD00032C1F000041820014A0
+S21902ECC038600044480000BD386000004800003848001EA97CB4
+S21902ECD57E1850280307CF4081FFB07F80E3782C0000003B9C6F
+S21902ECEAFFFF4181FF80386000444800008D3D20000393E9380A
+S21902ECFFB83860FFFF8001017C7C0803A68321015C834101605A
+S21902ED14836101648381016883A1016C83C1017083E1017438D6
+S21902ED292101784E8000203D200003812938C42C090000418248
+S21902ED3E0024A00900047C0020004082000C3860FFFF4E80001A
+S21902ED5320812900002C0900004082FFE43D200003800938C41B
+S21902ED68906938C4B083000490A3000890030000386000004EAF
+S21902ED7D8000203D200003812938C4396000002C0900004D8237
+S21902ED9200207D2A4B78A00900047C0018004082001C2C0B0085
+S21902EDA7004182001080090000900B000048000008814900003F
+S21902EDBC7D2B4B78812900002C0900004082FFD03D200003916F
+S21902EDD14938C44E8000209421FFE87C0802A69381000893A1DB
+S21902EDE6000C93C1001093E100149001001C7C7E1B7883FE005E
+S21902EDFB0838000000A13F00066000FFFF7C090000817E0004F0
+S21902EE107C9C23784082000C38000000B01F0006A01F00047D18
+S21902EE25635B78B00B0002A3BF0004480008CD7C651B787FA4C4
+S21902EE3AEB787FE3FB78480008512C030000408200603D200035
+S21902EE4F03816938C42C0B000041820050A12B0004A01F0002E3
+S21902EE647C09000040820034A0BF0004800B00087D635B783836
+S21902EE79A5FFF87F86E378A0FF0000389F00087C0803A64E8008
+S21902EE8E00217FC3F378480007D948000018816B00002C0B00EF
+S21902EEA3004082FFB87FC3F378480007C18001001C7C0803A653
+S21902EEB88381000883A1000C83C1001083E10014382100184E77
+S21902EECD8000209421FFD87C0802A6930100089321000C9341A1
+S21902EEE20010936100149381001893A1001C93C1002093E10098
+S21902EEF7249001002C7C9C2378281C05C07C791B787CB82B7803
+S21902EF0C7CDA33787CFE3B78418100A8386005EA480006ED7C13
+S21902EF217F1B794182009883BF0008381C0008837F0004B01FEB
+S21902EF36000CB3DD0000B35D0002A01F000C392000007F85E306
+S21902EF4B78B01D0004B13D00067F24CB78387D00084BFFAF557C
+S21902EF603D200003800935E839600011901B000C8138000099DC
+S21902EF757B0009913B0010A01D00047F63DB78B01B0002A39F1B
+S21902EF8A000C480007717C651B787F84E3787FA3EB78480006FA
+S21902EF9FF5B07D00067F05C3787FE3FB78388000114800044540
+S21902EFB47FE3FB78480006B58001002C7C0803A6830100088380
+S21902EFC921000C83410010836100148381001883A1001C83C193
+S21902EFDE002083E10024382100284E8000209421FFD87C0802EE
+S21902EFF3A69381001893A1001C93C1002093E100249001002C17
+S21902F0087CBF2B787C7D1B787C9C23787CDE33787FE3FB7838BD
+S21902F01D81000848001A252C03000041800024A0DF0004A0FE92
+S21902F03200047FA3EB787F84E37838A100084BFFFE9138600089
+S21902F047004800001C3C6000033C80000338633100388431240E
+S21902F05C4BFFB6593860FFFF8001002C7C0803A6838100188330
+S21902F071A1001C83C1002083E10024382100284E8000209421B6
+S21902F086FFE87C0802A69381000893A1000C93C1001093E10027
+S21902F09B149001001C3F8000037CBF2B783D200003807C38C89C
+S21902F0B07CDD33787CFE3B7893E938CC4BFFADF53D20000381C6
+S21902F0C56938D02C0B00004182001CB3CB0004801D0000392030
+S21902F0DA0000900B0000913C38C8480000143C600003386331EB
+S21902F0EF347FE4FB784BFFB5C18001001C7C0803A68381000865
+S21902F10483A1000C83C1001083E10014382100184E8000209400
+S21902F11921FFD07C0802A6934100189361001C9381002093A15A
+S21902F12E002493C1002893E1002C90010034A3A600047CBA2B12
+S21902F143787C7E1B787C9C23783CA000037CFF3B7838A5F0849A
+S21902F158386100087FA4EB784BFFFBD12C0300004080000C382B
+S21902F16D60FFFF48000084813F00043C001062817F000060008A
+S21902F1824DD37D2900161D6B03E85529D1BE7F6B4A143D400050
+S21902F197033D2000033D60000393CA38C8938938CC934B38D0F6
+S21902F1AC480019CD7FBAEB787C7E1B783BE0FFFF3FA000033FB6
+S21902F1C1800003480019B57C7E18507C03D84040800018480080
+S21902F1D60559801D38C82C0000004082FFE483FC38CC7F43D339
+S21902F1EB784BFFFB957FE3FB78800100347C0803A68341001823
+S21902F2008361001C8381002083A1002483C1002883E1002C3852
+S21902F2152100304E8000209421FFF07C0802A693E1000C9001BD
+S21902F22A00147C691B78880900002C0000FF4082002C88090001
+S21902F23F012C0000FF40820020880900022C0000FF4082001411
+S21902F25488090003386000012C0000FF418200643FE000037D80
+S21902F269234B78389F35E838A000044BFFB6B12C030000408231
+S21902F27E000C3860000148000040881F35E8389F35E82C000063
+S21902F293004082002C880400012C000000408200208804000248
+S21902F2A82C0000004082001488040003386000012C00000041B3
+S21902F2BD82000838600000800100147C0803A683E1000C382188
+S21902F2D200104E8000209421FFD87C0802A693A1001C93C100C6
+S21902F2E72093E100249001002C7C7E1B7883FE00047C9D2378D0
+S21902F2FC387F00104BFFFF1D2C03000041820020A09F00007FF9
+S21902F311E3FB785484D6BA38A00000480003752C030000418298
+S21902F32600107FC3F37848000341480000A8801F000C813D0029
+S21902F33B00A17D0004900100089121000CB1610010A13F00003B
+S21902F350A01F00025523D6BA7C030050B01E000C881F00092C53
+S21902F36500000641820038418100102C0000014182001448006D
+S21902F37A00582C000011418200384800004C7C1F1A14901E00DC
+S21902F38F087FC3F37838810008480005054800003C7C1F1A144D
+S21902F3A4901E00087FC3F3783881000848000AE5480000247C0A
+S21902F3B91F1A14901E00087FC3F378388100084BFFFA1148002A
+S21902F3CE000C7FC3F378480002998001002C7C0803A683A10089
+S21902F3E31C83C1002083E10024382100284E8000209421FFE003
+S21902F3F87C0802A69361000C9381001093A1001493C100189362
+S21902F40DE1001C900100247C7C1B7883BC000480FC0008A13C02
+S21902F422000C7CFD38507D293A14B13C000CA01D000054E935A5
+S21902F4372E5400053E600040007000F0FF7C004B78B01D0000E9
+S21902F44C39200000993D00013D000003A12838D4A01C000CB1E6
+S21902F4613D0004B01D000239690001B16838D439400000380006
+S21902F4760040989D0009981D0008B15D000AB15D00063D2000B6
+S21902F48B03800935E87CBB2B78901D000C813B00007CE43B785A
+S21902F4A0913D00107FA3EB7838A00000480001E5B07D000A7F31
+S21902F4B583E378389B000438A0080048000371800100247C08C1
+S21902F4CA03A68361000C8381001083A1001483C1001883E10081
+S21902F4DF1C382100204E8000203D000003800835F82C0000006D
+S21902F4F44C82002038000001900835F8380000047C0903A63C6A
+S21902F5098000033D2000043D600004814438D838A90074390BF3
+S21902F51E002438C005EA38E000007D272A147120000239690097
+S21902F53302914800007C00002654001FFE7C0000D07D6B007822
+S21902F5487D2900387D295B78912800107D0A4378B0C8000E3986
+S21902F55D0A001438E705EC4200FFC4914438D84E8000209421D7
+S21902F572FFE87C0802A69381000893A1000C93C1001093E10036
+S21902F587149001001C3D2000043BE900243BC000003F80000341
+S21902F59C7FFDFB7880DF0010A0FF000EA11F000C813F00007F3D
+S21902F5B1C4F3787FA5EB78387C31604BFFB0F93BDE00012C1EEC
+S21902F5C600033BFF00143BBD00144081FFD03D2000033C600040
+S21902F5DB03808938D83863318C4BFFB0D18001001C7C0803A60B
+S21902F5F08381000883A1000C83C1001083E10014382100184E38
+S21902F6058000203CA00003806538D82C0300004D8200203CE03B
+S21902F61A0003814735F03D200003800935F4394A00017CC050C2
+S21902F62F503C800003816435EC8103001080030000392800141E
+S21902F644900538D87C065800912300089103000438000000B0EF
+S21902F65903000C914735F04C81002090C435EC4E8000203D40BC
+S21902F66E0003812A35F03D600003800B38D83929FFFF912A3522
+S21902F683F0906B38D8900300004E8000203484FFFE4180001861
+S21902F698A00300003484FFFE7CA50214386300024080FFF02C4F
+S21902F6AD04FFFF40820010880300005400402E7CA5021454ABEA
+S21902F6C2043E54A9843E380000007CA95A146000FFFF7C050081
+S21902F6D7004081000C3D25FFFF38A900017CA928F85523C63E47
+S21902F6EC5463402E5520063E7C031B784E800020A123000EA0B2
+S21902F70103000CA16300107C004A14A1430012892300097C00C8
+S21902F7165A147C005214A06300027C004A147C601A144E8000D0
+S21902F72B209421FFD87C0802A69381001893A1001C93C10020FA
+S21902F74093E100249001002C3F8000033FA000033FC00003387A
+S21902F7556005EA4BFFFEB17C7F1B79408200183C6000033863AD
+S21902F76A319C4BFFAF494BFFFE0148000000809F00103861001B
+S21902F77F0838A005EA4BFFDB8D5460043E2C000000B07F000C90
+S21902F79441820074A0010014813C36042C00080039290001914E
+S21902F7A93C3604418200182C000806418200347FE3FB784BFFA3
+S21902F7BEFEB14BFFFF94813D35FC801F001039290001913D359F
+S21902F7D3FC901F00047FE3FB783881000E4BFFFAF94BFFFF70D9
+S21902F7E8813E3600801F001039290001913E3600901F00047FC7
+S21902F7FDE3FB7848000F9D4BFFFF507FE3FB784BFFFE6180010E
+S21902F812002C7C0803A68381001883A1001C83C1002083E1005D
+S21902F82724382100284E8000209421FFE87C0802A69001001CBD
+S21902F83C80040000A144000490010008390100083D200003B157
+S21902F851480004396938B0A14B0004B0A10014800938B0A0A3BC
+S21902F866000C808300109001000EB14100127D0343784BFFD867
+S21902F87B3D3D600003812B360839290001912B36088001001CB0
+S21902F8907C0803A6382100184E8000209421FFF07C0802A6936D
+S21902F8A5C1000893E1000C900100147C7F1B78807F00087C9EAA
+S21902F8BA2378A00300002C00080040820050A09F000C38A0008B
+S21902F8CF004BFFFDC17C631B794082003C813F000838A0000004
+S21902F8E498690000817F0008B06B0002807F0008A09F000C4B45
+S21902F8F9FFFD99813F00087FC5F378B06900027FE3FB7838803F
+S21902F90E00014BFFFAE57FE3FB784BFFFD55800100147C080326
+S21902F923A683C1000883E1000C382100104E8000209421FFD883
+S21902F9387C0802A693410010936100149381001893A1001C938C
+S21902F94DC1002093E100249001002C7C9B23787C7E1B78736056
+S21902F96200023B9E002C83BC000483FC00087CBA2B784182001C
+S21902F9774438000018B01C000C813F000C396000065169E006FD
+S21902F98C3C000204913F000C600005B490010008387F0014388C
+S21902F9A181000838A000044BFFA50938000000B01E0016480089
+S21902F9B60020A13E00163960000539290014B13C000C801F0074
+S21902F9CB0C5160E006901F000C801F000C396000005160C10EFE
+S21902F9E0901F000C813E00542C1A0000913F0004801E0050B184
+S21902F9F57F0010901F000840820054A01E0012B01F0000A13E1C
+S21902FA0A00149B7F000DB13F0002A01E00162C000000418200F0
+S21902FA1F0C63600008981F000D380005B4B01F000EB35F00123E
+S21902FA343D200003800935E839600006901D000C813E000899F8
+S21902FA497D0009913D0010A01C000C7FA3EB78B01D0002A3BCC2
+S21902FA5E000C4BFFFC9D7C651B787FA4EB787FE3FB784BFFFC88
+S21902FA7321B07F00107F83E3783880000638BE00084BFFF9714A
+S21902FA88801E00042C00000A408200243C8000013CA0000338D0
+S21902FA9DA5FC887FC6F378387E00186084D4C048000B5D480036
+S21902FAB20034881F000D7009000340820010A01E00162C000002
+S21902FAC7004182001C3CA0000338A5FC607FC6F378387E0018AE
+S21902FADC388003E848000B298001002C7C0803A68341001083BE
+S21902FAF16100148381001883A1001C83C1002083E100243821E3
+S21902FB0600284E8000209421FFE07C0802A69361000C938100F9
+S21902FB1B1093A1001493C1001893E1001C900100247C7C1B783A
+S21902FB3083FC0008815C0004A0DF0000A0FF0002807F000480AE
+S21902FB45BF000839000014B11C000C3BEA0014801F000C39207A
+S21902FB5A0005396000005120E0065160C10E901F000C39200402
+S21902FB6F00B13F000EB17F0010B17F0012B0EA0014B0DF0002BB
+S21902FB84991F000D907F000890BF00043D200003800935E87CB4
+S21902FB999B2378900A000C813B000038000006912A0010980A0D
+S21902FBAE0009A13C000C7D435378B12A0002A3BC000C4BFFFB31
+S21902FBC33D7C651B787FA4EB787FE3FB784BFFFAC1B07F0010D6
+S21902FBD87F83E3787F65DB78388000064BFFF811800100247C4B
+S21902FBED0803A68361000C8381001083A1001483C1001883E14F
+S21902FC02001C382100204E8000203D200003812938DC396000AC
+S21902FC17002C0900004D8200207D2A4B787C0918004082001CC8
+S21902FC2C2C0B00004182001080090000900B00004800000881BD
+S21902FC414900007D2B4B78812900002C0900004082FFD43D2022
+S21902FC560003914938DC4E8000209421FFF87C0802A69001004A
+S21902FC6B0C3880000038A000014BFFFCC18001000C7C0803A61F
+S21902FC80382100084E8000209421FFF87C0802A69001000C386C
+S21902FC95000000900300044BFFFF718001000C7C0803A63821EF
+S21902FCAA00084E8000209421FFF07C0802A693E1000C90010067
+S21902FCBF147C7F1B784800001080030000901F00404BFFF99DDD
+S21902FCD4807F00402C0300004082FFEC800100147C0803A683B4
+S21902FCE9E1000C382100104E8000209421FFE87C0802A693A1BF
+S21902FCFE000C93C1001093E100149001001C7C7D1B7838000081
+S21902FD1300901D0004387D00184800097D7FA3EB784BFFFF8D2D
+S21902FD287FA3EB784BFFFEE18001001C7C0803A683A1000C8394
+S21902FD3DC1001083E10014382100184E8000208124000880E3F2
+S21902FD520050814900048009000CA164000C7D07505154003622
+S21902FD67BA7D6058507D090214418100707C0A38507D605851DF
+S21902FD7C7D08021440810060814300407D275A142C0A0000382B
+S21902FD91000000912300509004000041820030800A00002C0015
+S21902FDA600004182001C7D49537881290000800900002C000072
+S21902FDBB004082FFF47D2A4B78908A00004800001091030044C3
+S21902FDD09083004091630048386000014E800020386000004E1B
+S21902FDE58000209421FFF07C0802A693C1000893E1000C900125
+S21902FDFA0014812400087C7F1B7883C90008801F00547D20F0CA
+S21902FE0F514081006C387F001848000881811F0054A15F0016AF
+S21902FE247D68F0505549043E7F8B48004FFEE3827C00002654C3
+S21902FE390007FE7C0000D07D2900787D6B00387D6B4B794081B1
+S21902FE4E00307D2B50505525043E2C0500007C085A14901F0092
+S21902FE6354B13F001641820014807F0034386300147C835A1403
+S21902FE784BFFA039800100147C0803A683C1000883E1000C3895
+S21902FE8D2100104E8000209421FFE07C0802A69361000C938166
+S21902FEA2001093A1001493C1001893E1001C900100247C7C1B28
+S21902FEB778807C0004A01C000C83FC0008B0030002A3BC000C48
+S21902FECC7C9E23784BFFF82D7C651B787FA4EB787FE3FB784BDC
+S21902FEE1FFF7B12C0300003B600000408203A03D20000383A9A3
+S21902FEF638DC4800000883BD00002C1D00004182037CA13D00E3
+S21902FF0B12A01F00027C0900004082FFE8A13D00142C090000B2
+S21902FF2041820028A01F00007C0900004082FFD07FC3F3783820
+S21902FF359D000838A000044BFFA9E92C0300004082FFB8801D0E
+S21902FF4A0004817E0004A13E00082C000002917D000CB13D0077
+S21902FF5F1041820024881F000D70090004418200187FA3EB78FE
+S21902FF744BFFFD817F83E3784BFFF6F14800031C813D000438BA
+S21902FF8909FFFF28000009418102FC3D600003396B31C05400DB
+S21902FF9E103A7D4B002E3D200003392931C07D4A4A147D490366
+S21902FFB3A64E800420881F000D7009000241820040380000022E
+S21902FFC8901D0004813F0004A17F000039290001913D0050B156
+S21902FFDD7D0014801E000039200000901D0008B13D004C7FA36F
+S21902FFF2EB78B13D001638800012480002247FC4F3787F83E3C1
+S219030007784BFFFB0548000280387D001848000685881F000DFC
+S21903001C700900044182001038000001901D0004480002607073
+S219030031090002408202387009001041820250813D0054807FFC
+S2190300460008392900017C0348004082023C38000004907D0022
+S21903005B54901D00044800022C881F000D83DD00507009001020
+S219030070418200107FA3EB787F84E3784BFFFD6D7FA3EB787F05
+S21903008584E3784BFFFCC5881F000D7C7B1B78700900014182F9
+S21903009A0024807F0004801D00507C03000040820014380300A5
+S2190300AF0139200005901D0050913D0004801D00507C00F000AD
+S2190300C440820010A01D004C2C000000418201BCA3FD00162CB6
+S2190300D91F000040820024387D0018480005B57FA3EB783880F9
+S2190300EE001038A000004BFFF841B3FD004C480001903800007D
+S21903010301B01D004C48000184881F000D70090010418201787F
+S2190301187FA3EB787F84E3784BFFFCC9813D0054801F000839E6
+S21903012D2900017C0048004082015838000000901D00047FA3A1
+S219030142EB784BFFFAC948000144881F000D70090010418200A3
+S219030157607FA3EB787F84E3784BFFFC89813D0054801F0008C0
+S21903016C392900017C00480040820040881F000D7009000141DE
+S21903018182002C813D00503800000A39290001913D0050901D35
+S21903019600047FA3EB783880001038A000004BFFF79148000009
+S2190301AB0C38000008901D0004881F000D70090001418200D079
+S2190301C0387D0018480004D5813D0050380000093929000191F1
+S2190301D53D0050901D00047FA3EB78388000114800003C7FA3DB
+S2190301EAEB787F84E3784BFFFB5D881F000D7C7B1B78700900DE
+S2190301FF014182008C813D00503800000A39290001913D0050C2
+S219030214901D00047FA3EB783880001038A000004BFFF711485D
+S219030229000064881F000D70090010418200587FA3EB787F8474
+S21903023EE3784BFFFBA9813D0054801F0008392900017C00487A
+S2190302530040820038387D00184800043D3800000A901D00044B
+S219030268480000247FA3EB783880000038A000014BFFF6BD48B2
+S21903027D0000107FC4F3787F83E3784BFFF8852C1B0000408279
+S219030292000C7F83E3784BFFF3D5800100247C0803A68361001E
+S2190302A70C8381001083A1001483C1001883E1001C382100208D
+S2190302BC4E8000209421FFF87C0802A69001000C4BFFF46148DB
+S2190302D10004218001000C7C0803A6382100084E80002094212D
+S2190302E6FFE87C0802A69381000893A1000C93C1001093E100B4
+S2190302FB149001001C7C7D1B787C9C23783880000038A006440C
+S2190303104BFF9C793D600003810B38DC381D006C395D005890F2
+S2190303251D0034915D003039200001380005EA93AB38DC913DAB
+S21903033A0004B39D0012B01D003A911D0000915D003C386000C9
+S21903034F008001001C7C0803A68381000883A1000C83C1001037
+S21903036483E10014382100184E8000209421FFF07C0802A69342
+S219030379E1000C900100147C7F1B78480000084BFFFF39801FD6
+S21903038E00042C00000041820010A01F00162C0000004082FF8D
+S2190303A3E8800100147C0803A683E1000C382100104E800020CC
+S2190303B89421FFF07C0802A693E1000C900100147C7F1B784B5A
+S2190303CDFFFFA5817F000469690004200900007D2049146960AA
+S2190303E20002214000007C0A01147D2A037941820020380000C2
+S2190303F707901F00047FE3FB783880001138A000004BFFF52D4D
+S21903040C480000242C0B00054082001C38000006901F00047FDD
+S219030421E3FB783880001138A000004BFFF5097FE3FB784BFF60
+S219030436F87D800100147C0803A683E1000C382100104E8000CB
+S21903044B209421FFE87C0802A69381000893A1000C93C10010EC
+S21903046093E100149001001C7CBE2B797C7F1B787C9D237840EA
+S219030475810010801F00482C0000004082001438600000480010
+S21903048A00B8907F0048480000AC3B80000048000064809F00CC
+S21903049F447FA3EB784BFF9A0D807F0040801F004881230000BC
+S2190304B47FC0F050913F00407F9C02147FBD02144BFFF1A980B5
+S2190304C97F00402C0300004182FFBC81630008A123000C800B63
+S2190304DE000C540036BA7D204850913F0048800B000C54003643
+S2190304F3BA7D6B0214917F00442C1E00004182003C80BF004810
+S2190305087C1E28004080FF90809F00447FA3EB787FC5F3784BE3
+S21903051DFF9995813F0044801F00487D29F2147C1E0050901F64
+S2190305320048913F00447F9CF2147F83E3788001001C7C0803AE
+S219030547A68381000883A1000C83C1001083E100143821001878
+S21903055C4E8000209421FFF07C0802A693C1000893E1000C9058
+S2190305710100147CBE2B797C7F1B78807F00344081006C813FCC
+S21903058600043929FFFC280900014081000C3860FFFF4800001A
+S21903059B58A01F00162C00000040820048213E05B47D294910C9
+S2190305B07D294BB87D2048F87FC94838700005B47D3E03783849
+S2190305C56300147FC5F3784BFF98E57FE3FB78B3DF00163880F7
+S2190305DA001038A000004BFFF3557FC3F37848000008386000F5
+S2190305EF00800100147C0803A683C1000883E1000C3821001008
+S2190306044E8000209421FFE87C0802A69381000893A1000C9334
+S219030619C1001093E100149001001C7C7F1B787CBD2B787CDCFC
+S21903062E3378909F0004480005453D200003812938E0907F000E
+S219030643082C09000093BF000C939F0010418200187C09F80065
+S21903065841820020812900002C0900004082FFF03D2000038032
+S21903066D0938E093E938E0901F00008001001C7C0803A683813E
+S219030682000883A1000C83C1001083E10014382100184E800018
+S219030697203D200003812938E0394000002C0900004D82002067
+S2190306AC7D2B4B787C091800408200202C0A00004182001080BE
+S2190306C1090000900A00004800001C81690000480000147D2A28
+S2190306D64B78812900002C0900004082FFD03D20000391693842
+S2190306EBE04E8000209421FFE87C0802A693A1000C93C10010B8
+S21903070093E100149001001C3D20000383E938E03BC000002C9C
+S2190307151F00003FA000034182006448000459801F0008813F93
+S21903072A00047C6018507C0348404180003C2C1E000041820059
+S21903073F10801F0000901E00004800000C801F0000901D38E088
+S219030754801F000C807F00107C0803A63BC000004E8000218334
+S219030769FD38E04800000C7FFEFB7883FF00002C1F000040828B
+S21903077EFFA48001001C7C0803A683A1000C83C1001083E10009
+S21903079314382100184E8000209421FFE87C0802A693810008F2
+S2190307A893A1000C93C1001093E100149001001C7C7D1B78834C
+S2190307BDFD0004A13F0002A01F000069290800216900007D2BB1
+S2190307D2491468000001216000007C0B01147C0B48394182005C
+S2190307E7D83FC00003387F0018389E35E838A000044BFFA12D65
+S2190307FC2C030000408200BCA01F00062C00000140820064819A
+S2190308113F000E38000002B01F0006913F0018801F0008391F87
+S2190308260008A1280004901F0012389F0012B1240004801E358A
+S21903083BE83D200003901F000E814938B0392938B0A169000491
+S219030850915F0008B16800043800001CB01D000C7FA3EB78388C
+S219030865A008064BFFEFC9480000502C000002408200483FC0F7
+S21903087A0004801E18243B9E18242C00000041820034807C004F
+S21903088F08389F000E38A000044BFFA08D7C631B794082001CBB
+S2190308A4A01F000C817F0008813C0004B009000491690000905C
+S2190308B97E18247FA3EB784BFFEDAD8001001C7C0803A6838131
+S2190308CE000883A1000C83C1001083E10014382100184E8000CA
+S2190308E3209421FFD87C0802A6936100149381001893A1001C9C
+S2190308F893C1002093E100249001002C7C7F1B787C9D237838A0
+S21903090D60002A4BFFECF97C7E1B7940820018480001007FC321
+S219030922F3784BFFED4938600000480000F4817E00043920009D
+S21903093704992B0005394000013900080038000006980B000436
+S21903094CB14B0000B14B0006B10B00023D200003800935E83D8F
+S219030961400003900B000E392A38B0A1090004800A38B0B10B66
+S219030976000C900B0008813F00003D400004912B0018396A18E5
+S21903098B24380000FF93EB00089801000D93AB0004392000012C
+S2190309A0912A182498010008980100099801000A9801000B9821
+S2190309B501000C3BA000073F8000043B60001CB37E000C7FC33D
+S2190309CAF3783881000838A008064BFFEE5D480001A17C7F1B69
+S2190309DF78480000144BFFED49801C18242C0000004182FF30B1
+S2190309F4480001857C7F1850280300F94081FFE47FA0EB782C3F
+S219030A090000003BBDFFFF4181FFB47FC3F3784BFFEC55386095
+S219030A1EFFFF8001002C7C0803A6836100148381001883A100AB
+S219030A331C83C1002083E10024382100284E8000209421FFD8A3
+S219030A487C0802A6930100089321000C9341001093610014938A
+S219030A5D81001893A1001C93C1002093E100249001002C3D206D
+S219030A7200043B2918303B1900967C7B1B787C9C23787F3DCB09
+S219030A87783B4000007FBEEB787F63DB787FC4F37838A0000400
+S219030A9C4BFF9E892C0300007F5FD378418200383BBE000A7CFA
+S219030AB11DC0003B5F000A4081FFD4801B00007F63DB78901C97
+S219030AC60000389C00044BFFFE192C030000408000283860FF2C
+S219030ADBFF4800006C7C1AC82EA13D0008817D0004B13C0008E2
+S219030AF0901C0000917C00044800004C3CC000038126360C8030
+S219030B05FC0000390900011D29000A3D600004A15C0008801C02
+S219030B1A0004396B18307CE9592E7D295A142C080010B1490090
+S219030B2F08900900049106360C4082000C380000009006360C4D
+S219030B44386000008001002C7C0803A6830100088321000C8363
+S219030B59410010836100148381001883A1001C83C1002083E112
+S219030B6E0024382100284E8000209421FFF87C0802A69001006E
+S219030B830C3D2000003929320080090048386003E87C0803A6D7
+S219030B984E8000213D2000038069361038630001906936108067
+S213030BAD01000C7C0803A6382100084E800020A8
+S219030BC03C746F7069633E0048656C702061626F7574206865CE
+S219030BD56C703F0000000068656C70000000005B2D77203C7470
+S219030BEA696D656F75743E5D205B656E7472795D000045786594
+S219030BFF6375746520636F64652061742061206C6F636174695B
+S219030C146F6E0000676F00002D62203C6C6F636174696F6E3E8E
+S219030C29205B2D6C203C6C656E6774683E5D00446973706C61C4
+S219030C3E7920286865782064756D702920612072616E676520C6
+S219030C536F66206D656D6F72790000000064756D700000000040
+S219030C685B4F4E207C204F46465D00004D616E616765206D614C
+S219030C7D6368696E6520636163686573000000636163686500D8
+S219030C9200000A526564426F6F7428746D292064656275672013
+S219030CA7656E7669726F6E6D656E74202D206275696C742025A9
+S219030CBC732C2025730A000031323A33303A3039000000004FC8
+S219030CD16374203230203230303000506C6174666F726D3A202C
+S219030CE6257320282573292025730A0000004D6F746F726F6CA2
+S219030CFB61204D425800000000506F7765725043203836300016
+S219030D1000000000436F707972696768742028432920323030A7
+S219030D25302C20526564204861742C20496E632E0A0A005241A2
+S219030D3A4D3A2025702D25700A003D3D20457865637574696EB5
+S219030D4F6720626F6F742073637269707420696E202564207364
+S219030D6465636F6E6473202D20656E746572205E4320746F2087
+S219030D7961626F72740A00526564426F6F743E200000002A2ADA
+S219030D8E204572726F723A20496C6C6567616C20636F6D6D61DD
+S219030DA36E643A2025730A00006F6E00006F666600496E7661BF
+S219030DB86C6964206361636865206D6F64653A2025730A0063AD
+S219030DCD6163686573203F0A00000025730A20202025732025BD
+S219030DE2730A00000000626173652061646472657373000000D6
+S219030DF7006C656E677468000044756D702077686174205B6C0C
+S219030E0C6F636174696F6E5D3F0A0000776169742074696D65B2
+S219030E216F7574000000007374617274696E67206164647265D0
+S219030E3673730000000041626F757420746F207374617274204D
+S219030E4B657865637574696F6E206174202570202D2061626F6D
+S219030E6072742077697468205E432077697468696E2025642076
+S219030E757365636F6E64730A0000005B2D765D205B2D725D2075
+S219030E8A5B2D62203C6D656D5F616464723E5D203C66696C6535
+S219030E9F5F6E616D653E0000004C6F616420612066696C650037
+S219030EB46C6F616400000000454C4620696D61676573206E6F17
+S219030EC97420737570706F727465640A000000496E76616C6925
+S219030EDE6420532D7265636F7264206174206F666673657420B8
+S219030EF325702C20696E7075743A2025630A00000042616420BE
+S219030F08532D7265636F726420636F756E74206174206F666634
+S219030F1D7365742025700A0000000041646472657373206F66F1
+S219030F3266736574203D2025700A00000000417474656D7074F5
+S219030F4720746F206C6F616420532D7265636F72642064617452
+S219030F5C6120746F20616464726573733A202570205B6E6F7453
+S219030F7120696E2052414D5D0A00002A2A2A205761726E696EF8
+S219030F86672120436865636B73756D206661696C757265202D1E
+S219030F9B20416464723A20256C782C202530326C58203C3E20EA
+S219030FB02530326C580A0000456E74727920706F696E743A2019
+S219030FC525702C20616464726573732072616E67653A2025702C
+S219030FDA2D25700A0000496E76616C696420532D7265636F72AC
+S219030FEF64206174206F6666736574203078256C782C207479DB
+S21903100470653A2025780A0000000000FFFF4AA8FFFF490CFFB7
+S219031019FF490CFFFF490CFFFF4A90FFFF4A90FFFF4A90FFFF8D
+S21903102E4A58FFFF4A58FFFF4A58256308000A000000757361E0
+S21903104367653A206C6F6164203C66696C655F6E616D653E2070
+S2190310585B2D725D205B2D765D205B2D68203C686F73743E5DE4
+S21903106D205B2D6D207B54465450207C205A4D4F44454D7D5D16
+S219031082205B2D62203C626173655F616464726573733E5D0A66
+S21903109700766572626F7365006C6F61642072617720646174E3
+S2190310AC610000006C6F616420616464726573730000000064BC
+S2190310C16F776E6C6F6164206D6F6465202854465450206F72D2
+S2190310D6205A4D4F44454D290000686F7374206E616D65202821
+S2190310EB4950206164647265737329000066696C65206E616D24
+S21903110065000000496E76616C6964204950206164647265735A
+S219031115733A2025730A007A6D6F64656D000074667470000004
+S21903112A000054465450206D6F646520726571756972657320F5
+S21903113F6120776F726B696E67206E6574776F726B0A000000DD
+S219031154496E76616C696420276D6F6465273A2025730A004662
+S219031169696C65206E616D65206D697373696E670A00004361A6
+S21903117E6E2774206C6F616420272573273A2025730A00000089
+S219031193004572726F722072656164696E6720686561646572B2
+S2190311A82076696120544654503A2025730A0000536F72727951
+S2190311BD2C207A6D6F64656D20646F776E6C6F6164206E6F7454
+S2190311D22079657420617661696C61626C650A00000052617799
+S2190311E7206C6F61642072657175697265732061206D656D6F4C
+S2190311FC727920616464726573730A005261772066696C6520D1
+S2190312116C6F616465642025702D25700A0000454C4600556E3C
+S2190312267265636F676E697A656420696D61676520747970657C
+S21903123B3A20256C780A000000000000006574683000000000B8
+S21903125071756963635F65746800000051554943432045746816
+S21903126565726E65743A204E6F206672656520786D6974206211
+S21903127A7566666572730A000000000000007B636D64737D0023
+S21903128F004D616E61676520464C41534820696D6167657300D5
+S2190312A4666973005B2D6C5D000000004D616E61676520636F5F
+S2190312B96E66696775726174696F6E206B65707420696E204641
+S2190312CE4C415348206D656D6F727900000066636F6E66696746
+S2190312E3005B2D665D00000000496E697469616C697A6520462B
+S2190312F84C41534820496D6167652053797374656D205B4649FF
+S21903130D535D00696E69740000000000000000446973706C6102
+S2190313227920636F6E74656E7473206F6620464C4153482049BB
+S2190313376D6167652053797374656D205B4649535D00000000A0
+S21903134C6C69737400000000446973706C617920667265652010
+S2190313615B617661696C61626C655D206C6F636174696F6E732A
+S2190313762077697468696E20464C41534820496D6167652053A3
+S21903138B797374656D205B4649535D00006672656500000000B7
+S2190313A02D66203C666C6173685F616464723E202D6C203C6C7A
+S2190313B5656E6774683E00457261736520464C41534820636F57
+S2190313CA6E74656E74730000000065726173650000006E616D1E
+S2190313DF6500000000446973706C617920616E20696D616765A4
+S2190313F42066726F6D20464C41534820496D6167652053797318
+S21903140974656D205B4649535D000064656C65746500004C6F98
+S21903141E616420696D6167652066726F6D20464C4153482049FE
+S2190314336D6167652053797374656D205B4649535D20696E7438
+S2190314486F2052414D0000006C6F6164000000002D62203C6D20
+S21903145D656D5F626173653E202D6C203C696D6167655F6C6520
+S2190314726E6774683E205B2D73203C646174615F6C656E6774E4
+S219031487683E5D205B2D66203C666C6173685F616464723E5D38
+S21903149C205B2D65203C656E7472795F706F696E743E5D205BF9
+S2190314B12D72203C72616D5F616464723E5D203C6E616D653E13
+S2190314C6000043726561746520616E20696D6167650063726569
+S2190314DB61746500002A2A2A20696E76616C69642027666973AC
+S2190314F02720636F6D6D616E643A2025730A000066697320005B
+S21903150500000066756C6C20696E697469616C697A6174696F7C
+S21903151A6E2C2065726173657320616C6C206F6620666C617363
+S21903152F680000000041626F757420746F20696E697469616C2F
+S219031544697A65205B666F726D61745D20464C41534820696D5D
+S2190315596167652073797374656D002A2A2041626F727465644E
+S21903156E0A002A2A2A20496E697469616C697A6520464C415360
+S2190315834820496D6167652053797374656D0A00002020206988
+S2190315986E697469616C697A6174696F6E206661696C65642012
+S2190315AD25703A202578282573290A000000002020202057616A
+S2190315C2726E696E673A2064657669636520636F6E74656E7409
+S2190315D773206E6F74206572617365642C20736F6D6520626C91
+S2190315EC6F636B73206D6179206E6F7420626520757361626C3C
+S219031601650A00526564426F6F7400526564426F6F745B6261E1
+S219031616636B75705D00526564426F6F7420636F6E6669670062
+S21903162B00464953206469726563746F72790000004572726F33
+S219031640722077726974696E6720696D616765206465736372A3
+S2190316556970746F72732061742025703A202578282573290A43
+S21903166A00004E616D65202020202020202020202020202046DC
+S21903167F4C41534820616464722020204D656D20616464722011
+S2190316942020204C656E67746820202020456E74727920706FE6
+S2190316A9696E740A000000252D313673202030782530386C586A
+S2190316BE20202030782530386C58202030782530366C5820203F
+S2190316D330782530386C580A00202030782530386C58202E2E42
+S2190316E82030782530386C580A0000006D656D6F727920626146
+S2190316FD736520616464726573730072616D2062617365206176
+S21903171264647265737300000000656E74727920706F696E74B9
+S219031727206164647265737300464C415348206D656D6F727978
+S21903173C20626173652061646472657373000000696D616765CC
+S219031751206C656E677468205B696E20464C4153485D00696DC6
+S2190317666167652073697A65205B61637475616C2064617461AF
+S21903177B5D0000000066696C65206E616D65000000696E7661E5
+S2190317906C696420617267756D656E74730000007265717569E7
+S2190317A572656420706172616D65746572206D697373696E67F1
+S2190317BA0000496E76616C696420464C41534820696D6167659A
+S2190317CF2073697A652F6C656E67746820636F6D62696E617404
+S2190317E4696F6E00496E76616C696420464C4153482061646404
+S2190317F9726573733A20257020282573290A0020202076616C71
+S21903180E69642072616E67652069732025702D25700A00000046
+S219031823002A2A205741524E494E473A2052414D206164647229
+S2190318386573733A202570206D617920626520696E76616C6968
+S21903184D640A004E616D6520697320746F6F206C6F6E672C2005
+S2190318626D757374206265206C657373207468616E202564204E
+S21903187763686172730A00000043616E2774206C6F63617465F4
+S21903188C20256C64206279746573206672656520696E20464C78
+S2190318A14153480A000000496D61676520666F756E642C206277
+S2190318B6757420464C415348206164647265737320696E636FCF
+S2190318CB72726563740A000000496D61676520666F756E642C8B
+S2190318E020627574204C454E47544820697320696E636F7272F5
+S2190318F56563740A000000416E20696D616765206E616D656499
+S21903190A202725732720657869737473000043616E27742070BD
+S21903191F726F6772616D207468697320726567696F6E202D203A
+S219031934636F6E7461696E7320636F646520696E2075736521F7
+S2190319490A000043616E277420657261736520726567696F6EF6
+S21903195E2061742025703A202578282573290A00000043616EC6
+S21903197327742070726F6772616D20726567696F6E20617420EB
+S21903198825703A202578282573290A004572726F722065726161
+S21903199D73696E672061742025703A202578282573290A0000E8
+S2190319B200004572726F722070726F6772616D6D696E672061CA
+S2190319C7742025703A202578282573290A000000006C656E674A
+S2190319DC746800006D697373696E6720617267756D656E740095
+S2190319F1000000696D616765206E616D65000044656C657465C2
+S219031A0620696D61676520272573270000004E6F20696D61671F
+S219031A1B65202725732720666F756E640A000000004E6F7420AC
+S219031A3061206C6F616461626C6520696D6167650A0000004671
+S219031A454C4153483A2064726976657220696E69742066616952
+S219031A5A6C6564212C207374617475733A2025780A00464C4155
+S219031A6F53483A202570202D2025702C20256420626C6F636BCE
+S219031A8473206F662025702062797465732065612E0A0000744F
+S219031A996F6F2066657720617267756D656E7473000000756E17
+S219031AAE7265636F676E697A656420636F6D6D616E64000000F2
+S219031AC30052756E2073637269707420617420626F6F74000053
+S219031AD8626F6F745F73637269707400426F6F742073637269E4
+S219031AED707400626F6F745F7363726970745F64617461000057
+S219031B020000426F6F74207363726970742074696D656F757456
+S219031B1700626F6F745F7363726970745F74696D656F757400A3
+S219031B2C25733A200000000025732000747275650000000066CC
+S219031B41616C73650000002564200030782530325800003A0078
+S219031B560000200000003F3F00000A0000002E2E2025730A00AC
+S219031B6B00456E746572207363726970742C207465726D696ECF
+S219031B80617465207769746820656D707479206C696E650A0011
+S219031B950000003E3E200000000000FFFF17A8FFFF17CCFFFFFB
+S219031BAA1848FFFF1854FFFF17E0FFFF17FCFFFF195CFFFF19C4
+S219031BBF70FFFF1AE4FFFF1A34FFFF198CFFFF19D0FFFF16288B
+S219031BD4FFFF1628FFFF1638FFFF1640FFFF1628FFFF16306C2C
+S219031BE969737420636F6E66696775726174696F6E206F6E6C8E
+S219031BFE79002A2A20696E76616C696420656E7472790A00009A
+S219031C130055706461746520526564426F6F74206E6F6E2D7674
+S219031C286F6C6174696C6520636F6E66696775726174696F6E1D
+S219031C3D0000004572726F722077726974696E6720636F6E6696
+S219031C52696720646174612061742025703A2025782825732961
+S219031C670A0000000000000000FFFF13E0FFFF1440FFFF13F80A
+S219031C7CFFFF13FCFFFF1410FFFF14305265717565737420666B
+S219031C916F7220636F6E6669672076616C75652027257327205C
+S219031CA62D2077726F6E6720747970650A0043616E2774206688
+S219031CBB696E6420636F6E6669672076616C75652027257327F8
+S219031CD00A00000000000000FFFF11D0FFFF11D0FFFF1234FFEC
+S219031CE5FF11F0FFFF11D0FFFF11DC464C41534820636F6E66E4
+S219031CFA696775726174696F6E20636865636B73756D20657291
+S219031D0F726F72206F7220696E76616C6964206B65790A0000E9
+S219031D2400000000FFFF42B4FFFF42B4FFFF42B4FFFF42B4FFD3
+S219031D39FF42B4FFFF42B4FFFF42B4FFFF42B4FFFF42B4FFFFCA
+S219031D4E42B4FFFF42B4FFFF42B4FFFF42B4FFFF42B4FFFF4272
+S219031D63B4FFFF42B4FFFF42D4FFFF42F4FFFF4314FFFF4334A9
+S219031D78FFFF4354FFFF43B8FFFF43B8FFFF43B8FFFF43B8FFD6
+S219031D8DFF4374FFFF4394FFFF4394FFFF4394FFFF4394FFFF31
+S219031DA24394FFFF4394FFFF4394FFFF4394FFFF4394FFFF43B8
+S219031DB794FFFF4394FFFF4394FFFF4394FFFF4394FFFF439452
+S219031DCCFFFF4394FFFF4394FFFF4394FFFF4394FFFF4394FFD2
+S219031DE1FF4394FFFF4394FFFF4394FFFF4394FFFF4394FFFFBD
+S219031DF64394FFFF4394FFFF4394FFFF4394FFFF4394FFFF4364
+S219031E0B94FFFF4394FFFF4374FFFF4374FFFF4374FFFF43747D
+S219031E20FFFF4374FFFF4374FFFF4374FFFF4374FFFF4374FF1D
+S219031E35FF4374FFFF4374FFFF4374FFFF4374FFFF4374FFFF08
+S219031E4A4374FFFF4374FFFF42ECFFFF42ECFFFF4310FFFF4325
+S219031E5F34FFFF4334FFFF4374FFFF4374FFFF4374FFFF4374E9
+S219031E74FFFF4358FFFF4374FFFF4374FFFF4374FFFF4374FFE5
+S219031E89FF4374FFFF4374FFFF4374FFFF4374FFFF4374FFFFB4
+S219031E9E4374FFFF4374FFFF4374FFFF4374FFFF4374FFFF435B
+S219031EB374FFFF4374FFFF4374FFFF4374FFFF4374FFFF437415
+S219031EC8FFFF4374FFFF4374FFFF4374FFFF4374FFFF4374FF75
+S219031EDDFF4374FFFF4374FFFF4374FFFF4374FFFF4374FFFF60
+S219031EF24374FFFF4374FFFF42A8FFFF42A8FFFF42A8FFFF426F
+S219031F07A8FFFF42A8FFFF42A8FFFF42A8FFFF42A8FFFF42A88D
+S219031F1CFFFF42A8FFFF42A8FFFF42A8FFFF42A8FFFF42A8FF21
+S219031F31FF42A8FFFF42A8FFFF42C8FFFF42E8FFFF4308FFFF4B
+S219031F464328FFFF4348FFFF43ACFFFF43ACFFFF43ACFFFF4382
+S219031F5BACFFFF4368FFFF4388FFFF4388FFFF4388FFFF4388F0
+S219031F70FFFF4388FFFF4388FFFF4388FFFF4388FFFF4388FF68
+S219031F85FF4388FFFF4388FFFF4388FFFF4388FFFF4388FFFF53
+S219031F9A4388FFFF4388FFFF4388FFFF4388FFFF4388FFFF43FA
+S219031FAF88FFFF4388FFFF4388FFFF4388FFFF4388FFFF4388A0
+S219031FC4FFFF4388FFFF4388FFFF4388FFFF4388FFFF4388FF14
+S219031FD9FF4388FFFF43883031323334353637383961626364C1
+S219031FEE65660000000000000000503031004F4B00004530311A
+S21903200300453033004530320042303100FFFF5740FFFF5F409C
+S219032018FFFF57ACFFFF5E00FFFF5C80FFFF5F40FFFF5F40FF3B
+S21903202DFF5F40FFFF5938FFFF5F54FFFF5F40FFFF5F40FFFF80
+S2190320425F40FFFF5F40FFFF5A34FFFF5F40FFFF5F40FFFF5928
+S21903205738FFFF5790FFFF5F40FFFF5C80FFFF5F54FFFF5F408A
+S21903206CFFFF5F40FFFF5F40FFFF5A30FFFF5F40FFFF5F40FF5C
+S219032081FF5F40FFFF5F40FFFF5F40FFFF5F40FFFF5F40FFFF32
+S2190320965F40FFFF5F40FFFF5ECCFFFF5C80FFFF5F40FFFF5FF5
+S2190320AB40FFFF5F40FFFF579CFFFF5F40FFFF5F40FFFF5F4073
+S2190320C0FFFF5DE0FFFF5F40FFFF594CFFFF5F40FFFF5F40FF4F
+S2190320D5FF5F40FFFF5784FFFF5DF8FFFF5C80000000003031E9
+S2190320EA32333435363738394142434445460000000000000098
+S2190320FF00FFFF7264FFFF7264FFFF7264FFFF7264FFFF7264A0
+S219032114FFFF7264FFFF7264FFFF7264FFFF7264FFFF7264FF8B
+S219032129FF7264FFFF7264FFFF7264FFFF7264FFFF7264FFFF76
+S21903213E7264FFFF71A4FFFF71A4FFFF71D8FFFF720CFFFF7255
+S2190321530CFFFF7264FFFF7264FFFF7264FFFF7264FFFF724063
+S219032168FFFF7264FFFF7264FFFF7264FFFF7264FFFF7264FF37
+S21903217DFF7264FFFF7264FFFF7264FFFF7264FFFF7264FFFF22
+S2190321927264FFFF7264FFFF7264FFFF7264FFFF7264FFFF729A
+S2190321A764FFFF7264FFFF7264FFFF7264FFFF7264FFFF726493
+S2190321BCFFFF7264FFFF7264FFFF7264FFFF7264FFFF7264FFE3
+S2190321D1FF7264FFFF7264FFFF7264FFFF7264FFFF7264FFFFCE
+S2190321E67264FFFF7218FFFF7218FFFF7218FFFF7218FFFF7276
+S2190321FB18FFFF7218FFFF7218FFFF7218FFFF7218FFFF721807
+S219032210FFFF7218FFFF7218FFFF7218FFFF7218FFFF7218FF0A
+S219032225FF7218FFFF7240FFFF7264FFFF7288FFFF72ACFFFF7D
+S21903223A72D0FFFF733CFFFF733CFFFF733CFFFF733CFFFF7221
+S21903224FF4FFFF7314FFFF7314FFFF7314FFFF7314FFFF7314E5
+S219032264FFFF7314FFFF7314FFFF7314FFFF7314FFFF7314FFC5
+S219032279FF7314FFFF7314FFFF7314FFFF7314FFFF7314FFFFB0
+S21903228E7314FFFF7314FFFF7314FFFF7314FFFF7314FFFF7327
+S2190322A314FFFF7314FFFF7314FFFF7314FFFF7314FFFF731471
+S2190322B8FFFF7314FFFF7314FFFF7314FFFF7314FFFF7314FF71
+S2190322CDFF7314FFFF7294FFFF7294FFFF7294FFFF7294FFFF60
+S2190322E27294FFFF7294FFFF7294FFFF7294FFFF7294FFFF7259
+S2190322F794FFFF7294FFFF7294FFFF7294FFFF7294FFFF729422
+S21903230CFFFF7294FFFF72BCFFFF72DCFFFF72FCFFFF731CFF40
+S219032321FF733CFFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF9F
+S219032336735CFFFF737CFFFF737CFFFF737CFFFF737CFFFF7396
+S21903234B7CFFFF737CFFFF737CFFFF737CFFFF737CFFFF737C58
+S219032360FFFF737CFFFF737CFFFF737CFFFF737CFFFF737CFFC0
+S219032375FF737CFFFF737CFFFF737CFFFF737CFFFF737CFFFFAB
+S21903238A737CFFFF737CFFFF737CFFFF737CFFFF737CFFFF7322
+S21903239F7CFFFF737CFFFF737CFFFF737CFFFF737CFFFF737C04
+S2190323B4FFFF737CFFFF72FCFFFF72FCFFFF72FCFFFF72FCFF70
+S2190323C9FF72FCFFFF72FCFFFF72FCFFFF72FCFFFF72FCFFFFDC
+S2190323DE72FCFFFF72FCFFFF72FCFFFF72FCFFFF72FCFFFF7254
+S2190323F3FCFFFF72FCFFFF7324FFFF7344FFFF7364FFFF738451
+S219032408FFFF73A4FFFF73ECFFFF73ECFFFF73ECFFFF73ECFF2F
+S21903241DFF73ECFFFF73C4FFFF73C4FFFF73C4FFFF73C4FFFF72
+S21903243273C4FFFF73C4FFFF73C4FFFF73C4FFFF73C4FFFF7311
+S219032447C4FFFF73C4FFFF73C4FFFF73C4FFFF73C4FFFF73C4AB
+S21903245CFFFF73C4FFFF73C4FFFF73C4FFFF73C4FFFF73C4FF5B
+S219032471FF73C4FFFF73C4FFFF73C4FFFF73C4FFFF73C4FFFF46
+S21903248673C4FFFF73C4FFFF73C4FFFF73C4FFFF73C4FFFF73BD
+S21903249BC4FFFF73C4FFFF7348FFFF738CFFFF7348FFFF738CBF
+S2190324B0FFFF7348FFFF738CFFFF7348FFFF738CFFFF7348FFEB
+S2190324C5FF738CFFFF7348FFFF738CFFFF7348FFFF738CFFFF92
+S2190324DA7348FFFF738CFFFF738CFFFF738CFFFF738CFFFF73C5
+S2190324EF8CFFFF738CFFFF738CFFFF738CFFFF738CFFFF738C53
+S219032504FFFF738CFFFF738CFFFF738CFFFF738CFFFF738CFFCA
+S219032519FF738CFFFF738CFFFF738CFFFF738CFFFF738CFFFFB5
+S21903252E738CFFFF738CFFFF738CFFFF738CFFFF738CFFFF732C
+S2190325438CFFFF738CFFFF738CFFFF738CFFFF738CFFFF738CFE
+S219032558FFFF738CFFFF738CFFFF738CFFFF738CFFFF738CFF76
+S21903256DFF738CFFFF738CFFFF738CFFFF738CFFFF738CFFFF61
+S219032582738CFFFF738CFFFF73A4FFFF73A4FFFF73A4FFFF7390
+S219032597A4FFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF73A41A
+S2190325ACFFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF73A4FFAA
+S2190325C1FF73A4FFFF73A4FFFF72E4FFFF72E4FFFF7318FFFFA3
+S2190325D6734CFFFF734CFFFF73A4FFFF73A4FFFF73A4FFFF73BC
+S2190325EBA4FFFF7380FFFF73A4FFFF73A4FFFF73A4FFFF73A4EA
+S219032600FFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF73A4FF55
+S219032615FF73A4FFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF40
+S21903262A73A4FFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF73B7
+S21903263FA4FFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF73A471
+S219032654FFFF73A4FFFF73A4FFFF73A4FFFF73A4FFFF73A4FF01
+S219032669FF73A4FFFF73A43031323334353637383900003031BB
+S21903267E323334353637383961626364656600000000303132AB
+S2190326933334353637383941424344454600000000000000001B
+S2190326A8FFFF7BC8FFFF7D78FFFF7D78FFFF7D78FFFF7D78FF09
+S2190326BDFF7D78FFFF7D78FFFF7D78FFFF7D78FFFF7D78FFFF42
+S2190326D27D78FFFF7D0CFFFF7BC8FFFF7D78FFFF7D78FFFF7DCD
+S2190326E778FFFF7D78FFFF7D78FFFF7D78FFFF7D78FFFF7D789F
+S2190326FCFFFF7D78FFFF7D78FFFF7D78FFFF7BA8FFFF7D78FFD5
+S219032711FF7D78FFFF7CA0FFFF7D78FFFF7D78FFFF7D78FFFFC6
+S2190327267D78FFFF7BC8000000005E430A003078253038583AEE
+S21903273B20000000002530325800000000202000002000000022
+S219032750207C0000256300007C0A0000202D2061726520796F15
+S2190327657520737572652028792F6E293F2000556E62616C61CA
+S21903277A6E63656420737472696E67210A00416D626967756F02
+S21903278F757320636F6D6D616E6420272573272C2063686F6951
+S2190327A4636573206172653A20257300202573000A000000557C
+S2190327B9736167653A0A002020257325732025730A00002A2A99
+S2190327CE204572726F723A20257320616C7265616479207370CD
+S2190327E3656369666965640A002A2A204572726F723A20696E57
+S2190327F876616C6964206E756D626572202725732720666F729E
+S21903280D2025730A0000002A2A204572726F723A20696E766166
+S2190328226C696420666C616720272563270A000000002A2A2032
+S2190328374572726F723A206E6F2064656661756C742F6E6F6EC4
+S21903284C2D666C616720617267756D656E747320737570706F5B
+S219032861727465640A00004E45544153434949000000004F43BF
+S219032876544554000000556E6B6E6F776E206572726F7200001E
+S21903288B0066696C65206E6F7420666F756E6400006163636557
+S2190328A073732076696F6C6174696F6E000000006469736B2075
+S2190328B566756C6C206F7220616C6C6F636174696F6E2065780F
+S2190328CA63656564656400000000696C6C6567616C20544654AF
+S2190328DF50206F7065726174696F6E0000756E6B6E6F776E206B
+S2190328F47472616E736665722049440066696C6520616C726551
+S21903290961647920657869737473006E6F2073756368207573FB
+S21903291E6572000000006F7065726174696F6E2074696D6564C1
+S219032933206F757400736F6D6520736F7274206F66206E657417
+S219032948776F726B206572726F720000696E76616C69642070EE
+S21903295D6172616D6574657200000070726F746F636F6C207604
+S219032972696F6C6174696F6E000066696C65206973206C6172EE
+S219032987676572207468616E206275666665720000FFFF955CA1
+S21903299CFFFF9568FFFF9574FFFF9580FFFF958CFFFF9598FFC0
+S2190329B1FF95A4FFFF95B0FFFF95BCFFFF95C8FFFF95D4FFFF7F
+S2190329C695E047444220636F6E6E656374696F6E20706F72747D
+S2190329DB006764625F706F7274000000004E6574776F726B2084
+S2190329F0646562756720617420626F6F742074696D6500006EBD
+S219032A0565745F646562756700000055736520424F4F54502084
+S219032A1A666F72206E6574776F726B20636F6E66696775726150
+S219032A2F74696F6E00626F6F74700000004C6F63616C20495008
+S219032A44206164647265737300000000626F6F74705F6D795FA7
+S219032A5969700044656661756C74207365727665722049502032
+S219032A6E61646472657373000000626F6F74705F7365727665BD
+S219032A83725F69700025732E25640A00006E65745F696F5F77DF
+S219032A9872697465000000006E65745F696F5F726561640000F4
+S219032AAD000000FFFF9A0CFFFF9A0CFFFF9A0CFFFF9A0CFFFF7E
+S219032AC29A0CFFFF9A0CFFFF9A0CFFFF9A0CFFFF9A0CFFFF9A29
+S219032AD70CFFFF9A0CFFFF9A0CFFFF9A0CFFFF9A0CFFFF9A0CA2
+S219032AECFFFF9A0CFFFF9A38FFFF9A58FFFF9A78FFFF9A98FF2A
+S219032B01FF9AB8FFFF9CDCFFFF9CDCFFFF9CDCFFFF9CDCFFFF90
+S219032B169AD8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9A58
+S219032B2BF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8C5
+S219032B40FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFA9
+S219032B55FF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF94
+S219032B6A9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AE4
+S219032B7FF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF8FFFF9AF871
+S219032B94FFFF9AF8FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFF5
+S219032BA9FF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFF48
+S219032BBE9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A98
+S219032BD390FFFF9A90FFFF9ABCFFFF9AE0FFFF9B04FFFF9B2803
+S219032BE8FFFF9B4CFFFF9BF4FFFF9BF4FFFF9BF4FFFF9BF4FFB8
+S219032BFDFF9B70FFFF9B90FFFF9B90FFFF9B90FFFF9B90FFFF0F
+S219032C129B90FFFF9B90FFFF9B90FFFF9B90FFFF9B90FFFF9B3D
+S219032C2790FFFF9B90FFFF9B90FFFF9B90FFFF9B90FFFF9B9033
+S219032C3CFFFF9B90FFFF9B90FFFF9B90FFFF9B90FFFF9B90FFAF
+S219032C51FF9B90FFFF9B90FFFF9B90FFFF9B90FFFF9B90FFFF9A
+S219032C669B90FFFF9B90FFFF9B90FFFF9B90FFFF9B90FFFF9BE9
+S219032C7B90FFFF9B904E6F206E6574776F726B20696E7465725A
+S219032C90666163657320666F756E640A0000000043616E277432
+S219032CA52067657420424F4F545020696E666F202D206E65748E
+S219032CBA776F726B2064697361626C6564210A00000049503AE4
+S219032CCF20257300002C2044656661756C742073657276657268
+S219032CE43A2025730A0000000000000025642E25642E25642EB2
+S219032CF925640045746865726E65742073656E643A0A0045742F
+S219032D0E6865726E657420726563763A0A006574685F64727622
+S219032D235F6473722073686F756C64206E6F7420626520636100
+S219032D386C6C65643A20766563746F722025642C206461746161
+S219032D4D2025780A000000000000002E2E2E20457261736520E8
+S219032D6266726F6D2025702D25703A2000002E0000000A000097
+S219032D77002E2E2E2050726F6772616D2066726F6D2025702D07
+S219032D8C25702061742025703A2000004E6F206572726F72206A
+S219032DA12D206F7065726174696F6E20636F6D706C657465007E
+S219032DB60000496E76616C696420464C4153482061646472658B
+S219032DCB73730000004572726F7220747279696E6720746F201B
+S219032DE065726173650000004572726F7220747279696E6720DF
+S219032DF5746F206C6F636B2F756E6C6F636B004572726F722030
+S219032E0A747279696E6720746F2070726F6772616D0047656ED9
+S219032E1F65726963206572726F720000004465766963652F72B8
+S219032E346567696F6E2069732077726974652D70726F7465636E
+S219032E4974656400000000464C415348207375622D7379737457
+S219032E5E656D206E6F7420696E697469616C697A65640000005E
+S219032E7300556E6B6E6F776E206572726F720000000000000008
+S219032E88FFFFAC6CFFFFAC78FFFFAC84FFFFAC90FFFFAC9CFF48
+S219032E9DFFACA8FFFFACB4FFFFACC0457272203D2025780A00B0
+S219032EB2000000000000FFFFB1ECFFFFB1ECFFFFB1E4FFFFB18B
+S219032EC77CFFFFB1E4FFFFB184FFFFB1BCFFFFB1C4FFFFB1D44B
+S219032EDCFFFFB1D4FFFFB1CCFFFFB1DCFFFFB1BCFFFFB1F4FF43
+S219032EF1FFB1D4FFFFB1DCFFFFB1DCFFFFB1E4FFFFB1ECFFFFFE
+S219032F06B1F4FFFFB1F4FFFFB1F4FFFFB1F4FFFFB1F4FFFFB1CE
+S219032F1BF4FFFFB1F4FFFFB1DCFFFFB1DCFFFFB1DCFFFFB1DCD6
+S219032F30FFFFB7C4FFFFB7C4FFFFB7C4FFFFB7C4FFFFB7C4FF28
+S219032F45FFB7C4FFFFB7C4FFFFB7C4FFFFB7C4FFFFB7C4FFFF13
+S219032F5AB7C4FFFFB7C4FFFFB7C4FFFFB7C4FFFFB7C4FFFFB746
+S219032F6FC4FFFFB7E4FFFFB804FFFFB824FFFFB844FFFFB86440
+S219032F84FFFFB8C0FFFFB8C0FFFFB8C0FFFFB8C0FFFFB884FF1F
+S219032F99FFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFF5A
+S219032FAEB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB88C
+S219032FC3A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A48B
+S219032FD8FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FF1B
+S219032FEDFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFF06
+S219033002B8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB8A4FFFFB837
+S219033017A4FFFFB814FFFFB814FFFFB814FFFFB814FFFFB81406
+S21903302CFFFFB814FFFFB814FFFFB814FFFFB814FFFFB814FF96
+S219033041FFB814FFFFB814FFFFB814FFFFB814FFFFB814FFFF81
+S219033056B814FFFFB834FFFFB858FFFFB87CFFFFB8A0FFFFB85B
+S21903306BC4FFFFB95CFFFFB95CFFFFB95CFFFFB95CFFFFB8E89A
+S219033080FFFFB908FFFFB908FFFFB908FFFFB908FFFFB908FF79
+S219033095FFB908FFFFB908FFFFB908FFFFB908FFFFB908FFFF64
+S2190330AAB908FFFFB908FFFFB908FFFFB908FFFFB908FFFFB995
+S2190330BF08FFFFB908FFFFB908FFFFB908FFFFB908FFFFB90831
+S2190330D4FFFFB908FFFFB908FFFFB908FFFFB908FFFFB908FF25
+S2190330E9FFB908FFFFB908FFFFB908FFFFB908FFFFB908FFFF10
+S2190330FEB90825733A2043616E27742066696E642061646472D9
+S219033113657373206F66207365727665720A0000005F5F756407
+S219033128705F73656E64746F000000007564705F726563766670
+S21903313D726F6D202D2064726F70706564207061636B65742014
+S2190331526F662025642062797465730A00004275665B25645D33
+S2190331672F25703A206275663A2025702C206C656E3A20256493
+S21903317C2F25642C206E6578743A2025700A00004672656520D8
+S2190331916C697374203D2025700A005F5F656E65745F706F6C35
+S2190331A66C3A206E6F206D6F726520627566666572730A00007F
+S2190331BB0000000000FFFFCDF8FFFFCE50FFFFD0CCFFFFCEA40E
+S2190331D0FFFFCEA4FFFFCF4CFFFFCF8CFFFFD028FFFFD06CFFD1
+S2070331E5FFD0AC64
+S2190331E800000000000332040003789000031248000000000029
+S2190331FD0000000000000000024E3000024E4800024E2000022B
+S2190332124E0800024C9800024B4C0002524400024A0C00024A8E
+S21903322704000335C40000000008003E2879B800007C2F2D5CB7
+S21903323C7C2D000000025DEC00029E0800029E0800029E080089
+S219033251029E0800029E0800029E0800029E0800029E08000216
+S2190332669E0800029E0800029E0800029E0800029E0800029E65
+S21903327B0800029E0800029E0800029E0800029E0800029E08E6
+S21903329000029E0800029E0800029E0800029E0800029E0800D9
+S2190332A5029E0800029E0800029E0800029E0800029E080002C2
+S2190332BA9E0800029E0800029E0800029E0800029E0800029E11
+S2190332CF0800029E0800029E0800029E0800029E0800029E0892
+S2190332E400029E0800029E0800029E0800029E0800029E080085
+S2190332F9029E0800029E0800029E0800029E0800029E0800026E
+S21903330E9E0800029E0800029E0800029E0800029E0800029EBC
+S2190333230800029E0800029E0800000000000000000000000035
+S21903333800000000000000000000000000000000000000000078
+S21903334D00000000000000000000000000000000000000000063
+S2190333620000000000000000000000000000000000000000004E
+S21903337700000000000000000000000000000000000000000039
+S21903338C00000000000000000000000000000000000000000024
+S2190333A10000000000000000000000000000000000000000000F
+S2190333B6000000000000000000000000000000000000000000FA
+S2190333CB000000000000000000000000000000000000000000E5
+S2190333E0000000000000000000000000000000000000000000D0
+S2190333F5000000000000000000000000000000000000000000BB
+S21903340A000000000000000000000000000000000000000000A5
+S21903341F00000000000000000000000000000000000000000090
+S2190334340000000000000000000000000000000000000000007B
+S21903344900000000000000000000000000000000000000000066
+S21903345E00000000000000000000000000000000000000000051
+S2190334730000000000000000000000000000000000000000003C
+S21903348800000000000000000000000000000000000000000027
+S21903349D00000000000000000000000000000000000000000012
+S2190334B2000000000000000000000000000000000000000000FD
+S2190334C7000000000000000000000000000000000000000000E8
+S2190334DC000000000000000000000000000000000000000000D3
+S2190334F100000000000000000000000000000000000000FE00C0
+S2190335060000FE0000000040000000000000FF000000FF00006C
+S21903351B000010000001000000FA100000FA100000000000046A
+S219033530010000000000000000000000008000000000000000FD
+S21903354500000000000000000000000000000000000000000069
+S21903355A000000027FD800028034000000000000000000000045
+S21903356F00FFFFFFFF00000000000000000000000000041B988C
+S2190335840000000000000000000000000000000000000000FF2B
+S219033599FFFFFEFFFFFFFE0000000000001E1400001E140000BA
+S2190335AE01F4000000000000000000000000000000000000000B
+S2190335C3000002D0300002D4D80002D2C40000000000000000A3
+S2190335D800000000000003E800000000000000000000000000EB
+S2190335ED000000000000000000000000000000000000000000C1
+S219033602000000000000000000000000000000000000000000AB
+S21903361700000314D8000314C80003145800023D94000314145B
+S21903362C000313E4000313DC000239B8000313D4000313BC00E6
+S2190336410313A000023BBC000313980003135400031318000275
+S219033656447800031310000312EC000312E400024648000313D5
+S21903366B4C0003131C0003131800024588000314500003141C2D
+S219033680000313DC0002387000030C8C00030C7400030C6800FC
+S21903369502283000030C6000030C3800030C1C00022A2000038E
+S2190336AA12A40003129000031288000236DC000312DC000312F1
+S2190336BFB0000312A800022F3800030C1800030BFC00030BE4F5
+S2190336D400022B1800030BDC00030BC800030BC0000229AC002F
+S2190336E9030EB400030EA800030E800002529C00031AD80003CD
+S2190336FE1AC40000000000000001000000010000000000031AB2
+S219033713F000031AE400031AD8000000010000000400000000AE
+S21903372800031B1800031B0400031AD800000001000000020034
+S21903373D00000000032A3400032A1000000000000000010000D0
+S21903375200010000000000032A5000032A3C00032A3400000012
+S21903376700000000050000000000032A7800032A5C00032A34B1
+S21903377C000000000000000500000000000329DC000329C8002F
+S21903379100000000000001000000020000000000032A040003E4
+S2190337A629E80000000000000001000000010000000000022CC5
+S2190337BBB0000000000002CB98000000000003125000024E60C7
+S2190337D0000331EC000000004E800021000000000000000000CD
+S2070337E5000000D9
+S804020100F8
new file mode 100644
index 0000000000000000000000000000000000000000..b09cd39d08160b6bf2a98b04079f7c0830a99dff
GIT binary patch
literal 84456
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
new file mode 100644
index 0000000000000000000000000000000000000000..98b37c3b6b2fc98a7c85be94de209878f07a7c42
GIT binary patch
literal 314264
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
I&)z)$0}%eR6951J
new file mode 100644
--- /dev/null
+++ b/packages/hal/powerpc/mbx/current/images/redboot_ROM.srec
@@ -0,0 +1,4026 @@
+S02B00002F776F726B2F6D62782F726564626F6F742F524F4D2F696E7374616C6C2F62696E2F726564626F6FF9
+S31AFE0000007C7143A67C9243A67CB343A67C80002638A0000054B4
+S31AFE000015A5D1BE3C600000606330007C63282E7CA802A67C682A
+S31AFE00002A03A6386000004E80002000000000000000000000008E
+S31AFE00003F000000000000000000000000000000000000000000A8
+S31AFE00005400000000000000000000000000000000000000000093
+S31AFE0000690000000000000000000000000000000000000000007E
+S31AFE00007E00000000000000000000000000000000000000000069
+S31AFE00009300000000000000000000000000000000000000000054
+S31AFE0000A80000000000000000000000000000000000000000003F
+S31AFE0000BD0000000000000000000000000000000000000000002A
+S31AFE0000D200000000000000000000000000000000000000000015
+S31AFE0000E700000000000000000000000000000000000000000000
+S31AFE0000FC000000003C60FE00606320007C6803A64E80002000F3
+S31AFE000111000000000000000000000000000000000000000000D5
+S31AFE000126000000000000000000000000000000000000000000C0
+S31AFE00013B000000000000000000000000000000000000000000AB
+S31AFE00015000000000000000000000000000000000000000000096
+S31AFE00016500000000000000000000000000000000000000000081
+S31AFE00017A0000000000000000000000000000000000000000006C
+S31AFE00018F00000000000000000000000000000000000000000057
+S31AFE0001A400000000000000000000000000000000000000000042
+S31AFE0001B90000000000000000000000000000000000000000002D
+S31AFE0001CE00000000000000000000000000000000000000000018
+S31AFE0001E300000000000000000000000000000000000000000003
+S31AFE0001F800000000000000007C7143A67C9243A67CB343A67C8D
+S31AFE00020D80002638A0020054A5D1BE3C600000606330007C6362
+S31AFE000222282E7CA802A67C6803A6386002004E8000200000008C
+S31AFE000237000000000000000000000000000000000000000000AE
+S31AFE00024C00000000000000000000000000000000000000000099
+S31AFE00026100000000000000000000000000000000000000000084
+S31AFE0002760000000000000000000000000000000000000000006F
+S31AFE00028B0000000000000000000000000000000000000000005A
+S31AFE0002A000000000000000000000000000000000000000000045
+S31AFE0002B500000000000000000000000000000000000000000030
+S31AFE0002CA0000000000000000000000000000000000000000001B
+S31AFE0002DF00000000000000000000000000000000000000000006
+S31AFE0002F40000000000000000000000007C7143A67C9243A67CA8
+S31AFE000309B343A67C80002638A0030054A5D1BE3C60000060635B
+S31AFE00031E30007C63282E7CA802A67C6803A6386003004E80009F
+S31AFE00033320000000000000000000000000000000000000000091
+S31AFE0003480000000000000000000000000000000000000000009C
+S31AFE00035D00000000000000000000000000000000000000000087
+S31AFE00037200000000000000000000000000000000000000000072
+S31AFE0003870000000000000000000000000000000000000000005D
+S31AFE00039C00000000000000000000000000000000000000000048
+S31AFE0003B100000000000000000000000000000000000000000033
+S31AFE0003C60000000000000000000000000000000000000000001E
+S31AFE0003DB00000000000000000000000000000000000000000009
+S31AFE0003F0000000000000000000000000000000007C7143A67CA2
+S31AFE0004059243A67CB343A67C80002638A0040054A5D1BE3C6029
+S31AFE00041A0000606330007C63282E7CA802A67C6803A6386004AC
+S31AFE00042F004E80002000000000000000000000000000000000C6
+S31AFE0004440000000000000000000000000000000000000000009F
+S31AFE0004590000000000000000000000000000000000000000008A
+S31AFE00046E00000000000000000000000000000000000000000075
+S31AFE00048300000000000000000000000000000000000000000060
+S31AFE0004980000000000000000000000000000000000000000004B
+S31AFE0004AD00000000000000000000000000000000000000000036
+S31AFE0004C200000000000000000000000000000000000000000021
+S31AFE0004D70000000000000000000000000000000000000000000C
+S31AFE0004EC00000000000000000000000000000000000000007C7B
+S31AFE0005017143A67C9243A67CB343A67C80002638A0050054A580
+S31AFE000516D1BE3C600000606330007C63282E7CA802A67C6803C6
+S31AFE00052BA6386005004E80002000000000000000000000000086
+S31AFE000540000000000000000000000000000000000000000000A2
+S31AFE0005550000000000000000000000000000000000000000008D
+S31AFE00056A00000000000000000000000000000000000000000078
+S31AFE00057F00000000000000000000000000000000000000000063
+S31AFE0005940000000000000000000000000000000000000000004E
+S31AFE0005A900000000000000000000000000000000000000000039
+S31AFE0005BE00000000000000000000000000000000000000000024
+S31AFE0005D30000000000000000000000000000000000000000000F
+S31AFE0005E8000000000000000000000000000000000000000000FA
+S31AFE0005FD0000007C7143A67C9243A67CB343A67C80002638A006
+S31AFE000612060054A5D1BE3C600000606330007C63282E7CA80257
+S31AFE000627A67C6803A6386006004E8000200000000000000000FB
+S31AFE00063C000000000000000000000000000000000000000000A5
+S31AFE00065100000000000000000000000000000000000000000090
+S31AFE0006660000000000000000000000000000000000000000007B
+S31AFE00067B00000000000000000000000000000000000000000066
+S31AFE00069000000000000000000000000000000000000000000051
+S31AFE0006A50000000000000000000000000000000000000000003C
+S31AFE0006BA00000000000000000000000000000000000000000027
+S31AFE0006CF00000000000000000000000000000000000000000012
+S31AFE0006E4000000000000000000000000000000000000000000FD
+S31AFE0006F9000000000000007C7143A67C9243A67CB343A67C8007
+S31AFE00070E002638A0070054A5D1BE3C600000606330007C6328AF
+S31AFE0007232E7CA802A67C6803A6386007004E80002000000000A9
+S31AFE000738000000000000000000000000000000000000000000A8
+S31AFE00074D00000000000000000000000000000000000000000093
+S31AFE0007620000000000000000000000000000000000000000007E
+S31AFE00077700000000000000000000000000000000000000000069
+S31AFE00078C00000000000000000000000000000000000000000054
+S31AFE0007A10000000000000000000000000000000000000000003F
+S31AFE0007B60000000000000000000000000000000000000000002A
+S31AFE0007CB00000000000000000000000000000000000000000015
+S31AFE0007E000000000000000000000000000000000000000000000
+S31AFE0007F500000000000000000000007C7143A67C9243A67CB3EF
+S31AFE00080A43A67C80002638A0080054A5D1BE3C600000606330D3
+S31AFE00081F007C63282E7CA802A67C6803A6386008004E800020A4
+S31AFE000834000000000000000000000000000000000000000000AB
+S31AFE00084900000000000000000000000000000000000000000096
+S31AFE00085E00000000000000000000000000000000000000000081
+S31AFE0008730000000000000000000000000000000000000000006C
+S31AFE00088800000000000000000000000000000000000000000057
+S31AFE00089D00000000000000000000000000000000000000000042
+S31AFE0008B20000000000000000000000000000000000000000002D
+S31AFE0008C700000000000000000000000000000000000000000018
+S31AFE0008DC00000000000000000000000000000000000000000003
+S31AFE0008F10000000000000000000000000000007C7143A67C920A
+S31AFE00090643A67CB343A67C80002638A0090054A5D1BE3C6000B0
+S31AFE00091B00606330007C63282E7CA802A67C6803A638600900A1
+S31AFE0009304E8000200000000000000000000000000000000000C0
+S31AFE00094500000000000000000000000000000000000000000099
+S31AFE00095A00000000000000000000000000000000000000000084
+S31AFE00096F0000000000000000000000000000000000000000006F
+S31AFE0009840000000000000000000000000000000000000000005A
+S31AFE00099900000000000000000000000000000000000000000045
+S31AFE0009AE00000000000000000000000000000000000000000030
+S31AFE0009C30000000000000000000000000000000000000000001B
+S31AFE0009D800000000000000000000000000000000000000000006
+S31AFE0009ED000000000000000000000000000000000000007C7104
+S31AFE000A0243A67C9243A67CB343A67C80002638A00A0054A5D115
+S31AFE000A17BE3C600000606330007C63282E7CA802A67C6803A6EB
+S31AFE000A2C38600A004E8000200000000000000000000000000021
+S31AFE000A410000000000000000000000000000000000000000009C
+S31AFE000A5600000000000000000000000000000000000000000087
+S31AFE000A6B00000000000000000000000000000000000000000072
+S31AFE000A800000000000000000000000000000000000000000005D
+S31AFE000A9500000000000000000000000000000000000000000048
+S31AFE000AAA00000000000000000000000000000000000000000033
+S31AFE000ABF0000000000000000000000000000000000000000001E
+S31AFE000AD400000000000000000000000000000000000000000009
+S31AFE000AE9000000000000000000000000000000000000000000F4
+S31AFE000AFE00007C7143A67C9243A67CB343A67C80002638A00BF5
+S31AFE000B130054A5D1BE3C600000606330007C63282E7CA802A6B1
+S31AFE000B287C6803A638600B004E80002000000000000000000096
+S31AFE000B3D0000000000000000000000000000000000000000009F
+S31AFE000B520000000000000000000000000000000000000000008A
+S31AFE000B6700000000000000000000000000000000000000000075
+S31AFE000B7C00000000000000000000000000000000000000000060
+S31AFE000B910000000000000000000000000000000000000000004B
+S31AFE000BA600000000000000000000000000000000000000000036
+S31AFE000BBB00000000000000000000000000000000000000000021
+S31AFE000BD00000000000000000000000000000000000000000000C
+S31AFE000BE5000000000000000000000000000000000000000000F7
+S31AFE000BFA0000000000007C7143A67C9243A67CB343A67C800001
+S31AFE000C0F2638A00C0054A5D1BE3C600000606330007C63282E76
+S31AFE000C247CA802A67C6803A638600C004E8000200000000000CC
+S31AFE000C39000000000000000000000000000000000000000000A2
+S31AFE000C4E0000000000000000000000000000000000000000008D
+S31AFE000C6300000000000000000000000000000000000000000078
+S31AFE000C7800000000000000000000000000000000000000000063
+S31AFE000C8D0000000000000000000000000000000000000000004E
+S31AFE000CA200000000000000000000000000000000000000000039
+S31AFE000CB700000000000000000000000000000000000000000024
+S31AFE000CCC0000000000000000000000000000000000000000000F
+S31AFE000CE1000000000000000000000000000000000000000000FA
+S31AFE000CF6000000000000000000007C7143A67C9243A67CB343A6
+S31AFE000D0BA67C80002638A00D0054A5D1BE3C600000606330000B
+S31AFE000D207C63282E7CA802A67C6803A638600D004E8000200099
+S31AFE000D35000000000000000000000000000000000000000000A5
+S31AFE000D4A00000000000000000000000000000000000000000090
+S31AFE000D5F0000000000000000000000000000000000000000007B
+S31AFE000D7400000000000000000000000000000000000000000066
+S31AFE000D8900000000000000000000000000000000000000000051
+S31AFE000D9E0000000000000000000000000000000000000000003C
+S31AFE000DB300000000000000000000000000000000000000000027
+S31AFE000DC800000000000000000000000000000000000000000012
+S31AFE000DDD000000000000000000000000000000000000000000FD
+S31AFE000DF200000000000000000000000000007C7143A67C9243C1
+S31AFE000E07A67CB343A67C80002638A00E0054A5D1BE3C600000E8
+S31AFE000E1C606330007C63282E7CA802A67C6803A638600E004E48
+S31AFE000E3180002000000000000000000000000000000000000008
+S31AFE000E4600000000000000000000000000000000000000000093
+S31AFE000E5B0000000000000000000000000000000000000000007E
+S31AFE000E7000000000000000000000000000000000000000000069
+S31AFE000E8500000000000000000000000000000000000000000054
+S31AFE000E9A0000000000000000000000000000000000000000003F
+S31AFE000EAF0000000000000000000000000000000000000000002A
+S31AFE000EC400000000000000000000000000000000000000000015
+S31AFE000ED900000000000000000000000000000000000000000000
+S31AFE000EEE0000000000000000000000000000000000007C7143BB
+S31AFE000F03A67C9243A67CB343A67C80002638A00F0054A5D1BE8F
+S31AFE000F183C600000606330007C63282E7CA802A67C6803A6386B
+S31AFE000F2D600F004E80002000000000000000000000000000004E
+S31AFE000F4200000000000000000000000000000000000000000096
+S31AFE000F5700000000000000000000000000000000000000000081
+S31AFE000F6C0000000000000000000000000000000000000000006C
+S31AFE000F8100000000000000000000000000000000000000000057
+S31AFE000F9600000000000000000000000000000000000000000042
+S31AFE000FAB0000000000000000000000000000000000000000002D
+S31AFE000FC000000000000000000000000000000000000000000018
+S31AFE000FD500000000000000000000000000000000000000000003
+S31AFE000FEA000000000000000000000000000000000000000000EE
+S31AFE000FFF007C7143A67C9243A67CB343A67C80002638A01000EA
+S31AFE00101454A5D1BE3C600000606330007C63282E7CA802A67C2F
+S31AFE0010296803A6386010004E8000200000000000000000000007
+S31AFE00103E00000000000000000000000000000000000000000099
+S31AFE00105300000000000000000000000000000000000000000084
+S31AFE0010680000000000000000000000000000000000000000006F
+S31AFE00107D0000000000000000000000000000000000000000005A
+S31AFE00109200000000000000000000000000000000000000000045
+S31AFE0010A700000000000000000000000000000000000000000030
+S31AFE0010BC0000000000000000000000000000000000000000001B
+S31AFE0010D100000000000000000000000000000000000000000006
+S31AFE0010E6000000000000000000000000000000000000000000F1
+S31AFE0010FB00000000007C7143A67C9243A67CB343A67C800026D5
+S31AFE00111038A0110054A5D1BE3C600000606330007C63282E7C15
+S31AFE001125A802A67C6803A6386011004E8000200000000000003D
+S31AFE00113A0000000000000000000000000000000000000000009C
+S31AFE00114F00000000000000000000000000000000000000000087
+S31AFE00116400000000000000000000000000000000000000000072
+S31AFE0011790000000000000000000000000000000000000000005D
+S31AFE00118E00000000000000000000000000000000000000000048
+S31AFE0011A300000000000000000000000000000000000000000033
+S31AFE0011B80000000000000000000000000000000000000000001E
+S31AFE0011CD00000000000000000000000000000000000000000009
+S31AFE0011E2000000000000000000000000000000000000000000F4
+S31AFE0011F70000000000000000007C7143A67C9243A67CB343A6FA
+S31AFE00120C7C80002638A0120054A5D1BE3C600000606330007C2A
+S31AFE00122163282E7CA802A67C6803A6386012004E80002000000A
+S31AFE0012360000000000000000000000000000000000000000009F
+S31AFE00124B0000000000000000000000000000000000000000008A
+S31AFE00126000000000000000000000000000000000000000000075
+S31AFE00127500000000000000000000000000000000000000000060
+S31AFE00128A0000000000000000000000000000000000000000004B
+S31AFE00129F00000000000000000000000000000000000000000036
+S31AFE0012B400000000000000000000000000000000000000000021
+S31AFE0012C90000000000000000000000000000000000000000000C
+S31AFE0012DE000000000000000000000000000000000000000000F7
+S31AFE0012F3000000000000000000000000007C7143A67C9243A615
+S31AFE0013087CB343A67C80002638A0130054A5D1BE3C6000006023
+S31AFE00131D6330007C63282E7CA802A67C6803A6386013004E801D
+S31AFE00133200200000000000000000000000000000000000000082
+S31AFE0013470000000000000000000000000000000000000000008D
+S31AFE00135C00000000000000000000000000000000000000000078
+S31AFE00137100000000000000000000000000000000000000000063
+S31AFE0013860000000000000000000000000000000000000000004E
+S31AFE00139B00000000000000000000000000000000000000000039
+S31AFE0013B000000000000000000000000000000000000000000024
+S31AFE0013C50000000000000000000000000000000000000000000F
+S31AFE0013DA000000000000000000000000000000000000000000FA
+S31AFE0013EF00000000000000000000000000000000007C7143A60F
+S31AFE0014047C9243A67CB343A67C80002638A0140054A5D1BE3CEE
+S31AFE001419600000606330007C63282E7CA802A67C6803A6386041
+S31AFE00142E14004E800020000000000000000000000000000000A3
+S31AFE00144300000000000000000000000000000000000000000090
+S31AFE0014580000000000000000000000000000000000000000007B
+S31AFE00146D00000000000000000000000000000000000000000066
+S31AFE00148200000000000000000000000000000000000000000051
+S31AFE0014970000000000000000000000000000000000000000003C
+S31AFE0014AC00000000000000000000000000000000000000000027
+S31AFE0014C100000000000000000000000000000000000000000012
+S31AFE0014D6000000000000000000000000000000000000000000FD
+S31AFE0014EB000000000000000000000000000000000000000000E8
+S31AFE0015007C7143A67C9243A67CB343A67C80002638A01500548A
+S31AFE001515A5D1BE3C600000606330007C63282E7CA802A67C6815
+S31AFE00152A03A6386015004E800020000000000000000000000064
+S31AFE00153F00000000000000000000000000000000000000000093
+S31AFE0015540000000000000000000000000000000000000000007E
+S31AFE00156900000000000000000000000000000000000000000069
+S31AFE00157E00000000000000000000000000000000000000000054
+S31AFE0015930000000000000000000000000000000000000000003F
+S31AFE0015A80000000000000000000000000000000000000000002A
+S31AFE0015BD00000000000000000000000000000000000000000015
+S31AFE0015D200000000000000000000000000000000000000000000
+S31AFE0015E7000000000000000000000000000000000000000000EB
+S31AFE0015FC000000007C7143A67C9243A67CB343A67C8000263897
+S31AFE001611A0160054A5D1BE3C600000606330007C63282E7CA89A
+S31AFE00162602A67C6803A6386016004E80002000000000000000DA
+S31AFE00163B00000000000000000000000000000000000000000096
+S31AFE00165000000000000000000000000000000000000000000081
+S31AFE0016650000000000000000000000000000000000000000006C
+S31AFE00167A00000000000000000000000000000000000000000057
+S31AFE00168F00000000000000000000000000000000000000000042
+S31AFE0016A40000000000000000000000000000000000000000002D
+S31AFE0016B900000000000000000000000000000000000000000018
+S31AFE0016CE00000000000000000000000000000000000000000003
+S31AFE0016E3000000000000000000000000000000000000000000EE
+S31AFE0016F800000000000000007C7143A67C9243A67CB343A67C78
+S31AFE00170D80002638A0170054A5D1BE3C600000606330007C6338
+S31AFE001722282E7CA802A67C6803A6386017004E80002000000062
+S31AFE00173700000000000000000000000000000000000000000099
+S31AFE00174C00000000000000000000000000000000000000000084
+S31AFE0017610000000000000000000000000000000000000000006F
+S31AFE0017760000000000000000000000000000000000000000005A
+S31AFE00178B00000000000000000000000000000000000000000045
+S31AFE0017A000000000000000000000000000000000000000000030
+S31AFE0017B50000000000000000000000000000000000000000001B
+S31AFE0017CA00000000000000000000000000000000000000000006
+S31AFE0017DF000000000000000000000000000000000000000000F1
+S31AFE0017F40000000000000000000000007C7143A67C9243A67C93
+S31AFE001809B343A67C80002638A0180054A5D1BE3C600000606331
+S31AFE00181E30007C63282E7CA802A67C6803A6386018004E800075
+S31AFE0018332000000000000000000000000000000000000000007C
+S31AFE00184800000000000000000000000000000000000000000087
+S31AFE00185D00000000000000000000000000000000000000000072
+S31AFE0018720000000000000000000000000000000000000000005D
+S31AFE00188700000000000000000000000000000000000000000048
+S31AFE00189C00000000000000000000000000000000000000000033
+S31AFE0018B10000000000000000000000000000000000000000001E
+S31AFE0018C600000000000000000000000000000000000000000009
+S31AFE0018DB000000000000000000000000000000000000000000F4
+S31AFE0018F0000000000000000000000000000000007C7143A67C8D
+S31AFE0019059243A67CB343A67C80002638A0190054A5D1BE3C60FF
+S31AFE00191A0000606330007C63282E7CA802A67C6803A638601982
+S31AFE00192F004E80002000000000000000000000000000000000B1
+S31AFE0019440000000000000000000000000000000000000000008A
+S31AFE00195900000000000000000000000000000000000000000075
+S31AFE00196E00000000000000000000000000000000000000000060
+S31AFE0019830000000000000000000000000000000000000000004B
+S31AFE00199800000000000000000000000000000000000000000036
+S31AFE0019AD00000000000000000000000000000000000000000021
+S31AFE0019C20000000000000000000000000000000000000000000C
+S31AFE0019D7000000000000000000000000000000000000000000F7
+S31AFE0019EC00000000000000000000000000000000000000007C66
+S31AFE001A017143A67C9243A67CB343A67C80002638A01A0054A556
+S31AFE001A16D1BE3C600000606330007C63282E7CA802A67C6803B1
+S31AFE001A2BA638601A004E8000200000000000000000000000005C
+S31AFE001A400000000000000000000000000000000000000000008D
+S31AFE001A5500000000000000000000000000000000000000000078
+S31AFE001A6A00000000000000000000000000000000000000000063
+S31AFE001A7F0000000000000000000000000000000000000000004E
+S31AFE001A9400000000000000000000000000000000000000000039
+S31AFE001AA900000000000000000000000000000000000000000024
+S31AFE001ABE0000000000000000000000000000000000000000000F
+S31AFE001AD3000000000000000000000000000000000000000000FA
+S31AFE001AE8000000000000000000000000000000000000000000E5
+S31AFE001AFD0000007C7143A67C9243A67CB343A67C80002638A0F1
+S31AFE001B121B0054A5D1BE3C600000606330007C63282E7CA8022D
+S31AFE001B27A67C6803A638601B004E8000200000000000000000D1
+S31AFE001B3C00000000000000000000000000000000000000000090
+S31AFE001B510000000000000000000000000000000000000000007B
+S31AFE001B6600000000000000000000000000000000000000000066
+S31AFE001B7B00000000000000000000000000000000000000000051
+S31AFE001B900000000000000000000000000000000000000000003C
+S31AFE001BA500000000000000000000000000000000000000000027
+S31AFE001BBA00000000000000000000000000000000000000000012
+S31AFE001BCF000000000000000000000000000000000000000000FD
+S31AFE001BE4000000000000000000000000000000000000000000E8
+S31AFE001BF9000000000000007C7143A67C9243A67CB343A67C80F2
+S31AFE001C0E002638A01C0054A5D1BE3C600000606330007C632885
+S31AFE001C232E7CA802A67C6803A638601C004E800020000000007F
+S31AFE001C3800000000000000000000000000000000000000000093
+S31AFE001C4D0000000000000000000000000000000000000000007E
+S31AFE001C6200000000000000000000000000000000000000000069
+S31AFE001C7700000000000000000000000000000000000000000054
+S31AFE001C8C0000000000000000000000000000000000000000003F
+S31AFE001CA10000000000000000000000000000000000000000002A
+S31AFE001CB600000000000000000000000000000000000000000015
+S31AFE001CCB00000000000000000000000000000000000000000000
+S31AFE001CE0000000000000000000000000000000000000000000EB
+S31AFE001CF500000000000000000000007C7143A67C9243A67CB3DA
+S31AFE001D0A43A67C80002638A01D0054A5D1BE3C600000606330A9
+S31AFE001D1F007C63282E7CA802A67C6803A638601D004E8000207A
+S31AFE001D3400000000000000000000000000000000000000000096
+S31AFE001D4900000000000000000000000000000000000000000081
+S31AFE001D5E0000000000000000000000000000000000000000006C
+S31AFE001D7300000000000000000000000000000000000000000057
+S31AFE001D8800000000000000000000000000000000000000000042
+S31AFE001D9D0000000000000000000000000000000000000000002D
+S31AFE001DB200000000000000000000000000000000000000000018
+S31AFE001DC700000000000000000000000000000000000000000003
+S31AFE001DDC000000000000000000000000000000000000000000EE
+S31AFE001DF10000000000000000000000000000007C7143A67C92F5
+S31AFE001E0643A67CB343A67C80002638A01E0054A5D1BE3C600086
+S31AFE001E1B00606330007C63282E7CA802A67C6803A638601E0077
+S31AFE001E304E8000200000000000000000000000000000000000AB
+S31AFE001E4500000000000000000000000000000000000000000084
+S31AFE001E5A0000000000000000000000000000000000000000006F
+S31AFE001E6F0000000000000000000000000000000000000000005A
+S31AFE001E8400000000000000000000000000000000000000000045
+S31AFE001E9900000000000000000000000000000000000000000030
+S31AFE001EAE0000000000000000000000000000000000000000001B
+S31AFE001EC300000000000000000000000000000000000000000006
+S31AFE001ED8000000000000000000000000000000000000000000F1
+S31AFE001EED000000000000000000000000000000000000007C71EF
+S31AFE001F0243A67C9243A67CB343A67C80002638A01F0054A5D1EB
+S31AFE001F17BE3C600000606330007C63282E7CA802A67C6803A6D6
+S31AFE001F2C38601F004E80002000000000000000000000000000F7
+S31AFE001F4100000000000000000000000000000000000000000087
+S31AFE001F5600000000000000000000000000000000000000000072
+S31AFE001F6B0000000000000000000000000000000000000000005D
+S31AFE001F8000000000000000000000000000000000000000000048
+S31AFE001F9500000000000000000000000000000000000000000033
+S31AFE001FAA0000000000000000000000000000000000000000001E
+S31AFE001FBF00000000000000000000000000000000000000000009
+S31AFE001FD4000000000000000000000000000000000000000000F4
+S31AFE001FE9000000000000000000000000000000000000000000DF
+S307FE001FFE0000DD
+S31AFE0020003C600000606300077C7E23A6386000007C7523A63C10
+S31AFE002015600400606300007C0004AC7C788BA63C6004006063D7
+S31AFE00202A00004C00012C7C708BA64C00012C7C70C2A664632053
+S31AFE00203F007C70C3A67C78C2A6646320007C78C3A63C600000F7
+S31AFE002054606330027C0004AC7C6001247C0004AC3C4000006049
+S31AFE00206942B8F87C631A787C7C43A67C8422787C9D43A6480036
+S31AFE00207E46F93C20000060214A307C3043A63C60FE00606300C1
+S31AFE002093003C800000608400003CA0FE0060A51F347C0328407B
+S31AFE0020A8418200203863FFFC3884FFFC38A5FFFC8403000494F8
+S31AFE0020BD0400047C0328404180FFF43C60FE00606321E43C8049
+S31AFE0020D20000608430003884FFFC38A000209464000438A5FF5A
+S31AFE0020E7FF2C0500004082FFF43C60FE00606322EC3C800000D4
+S31AFE0020FC6084300090640014906400243C60FE01606343E03CDA
+S31AFE002111800000608433003CA0000060A539087C042840418251
+S31AFE002126001C800300009004000038630004388400047C042866
+S31AFE00213B404180FFEC3C60000060633A303C80000160841F3CDA
+S31AFE002150380000007C0320404182001490030000386300047CDA
+S31AFE0021650320404180FFF43C600000606339083C80000060840A
+S31AFE00217A3A2C7C0320404182001490030000386300047C03205F
+S31AFE00218F404180FFF43821FFF438000000900100009001000895
+S31AFE0021A49421FFC848004155480045A948003C553C60000060BD
+S31AFE0021B96330327C0004AC7C6001247C0004AC48003CA948007A
+S31AFE0021CE3B7948003CE9480061D948008B814800040548000068
+S31AFE0021E3003821FF64906100989081008090A100883C600000B8
+S31AFE0021F8606330327C0004AC7C6001247C0004AC7C7142A690EB
+S31AFE00220D61000C7C9242A6908100107CB342A690A10014900147
+S31AFE0022220000904100087C230B783863009C9061000490C1002B
+S31AFE0022371890E1001C9101002091210024914100289161002C49
+S31AFE00224C9181003091A1003491C1003891E1003C920100409234
+S31AFE002261210044924100489261004C9281005092A1005492C168
+S31AFE002276005892E1005C930100609321006493410068936100EC
+S31AFE00228B6C9381007093A1007493C1007893E1007C91C100385C
+S31AFE0022A091E1003C7C6102A67C8902A67CBA02A67CDB02A690D8
+S31AFE0022B56100849081008C90A1009490C100907C230B7838216D
+S31AFE0022CAFFC83800000090010000900100089421FFC83CA0FE7C
+S31AFE0022DF0060A5247C7CA803A648003ABC3821FF6490610098F1
+S31AFE0022F49081008090A100883C600000606330327C0004AC7C1E
+S31AFE0023096001247C0004AC7C7142A69061000C7C9242A6908131
+S31AFE00231E00107CB342A690A1001490010000904100087C230B26
+S31AFE002333783863009C9061000490C1001890E1001C9101002045
+S31AFE00234891210024914100289161002C9181003091A100349155
+S31AFE00235DC1003891E1003C9201004092210044924100489261E8
+S31AFE002372004C9281005092A1005492C1005892E1005C9301000E
+S31AFE0023876093210064934100689361006C9381007093A10074FD
+S31AFE00239C93C1007893E1007C91C1003891E1003C7C6102A67C33
+S31AFE0023B18902A67CBA02A67CDB02A6906100849081008C90A1C2
+S31AFE0023C6009490C100907C2E0B783C60000060634A303C8000C7
+S31AFE0023DB0060843A307CA408514180000C7CA118514181000805
+S31AFE0023F07C611B7895C1FFFC3821FFC83800000090010000909A
+S31AFE0024050100089421FFC881EE009855EFB7FF418200183DE040
+S31AFE00241AFF0061EF001C89EF000055EFF0BE39EF000191EE002C
+S31AFE00242F9855EF103A3C600000606339B891C30000806E009844
+S31AFE0024443CC0000060C633587CC6782E3C800000608434447C56
+S31AFE00245984782E7CC903A64E800421802100703821FFC83800F6
+S31AFE00246E000090010000900100089421FFC83821007080610005
+S31AFE002483848081008880A1008C7C6103A67C8803A67CA903A685
+S31AFE00249881C1003881E1003C80C1001880E1001C81010020811A
+S31AFE0024AD210024814100288161002C8181003081A1003481C10F
+S31AFE0024C2003881E1003C82010040822100448241004882610093
+S31AFE0024D74C8281005082A1005482C1005882E1005C8301006098
+S31AFE0024EC83210064834100688361006C8381007083A1007483C4
+S31AFE002501C1007883E1007C7C0000A638600000506004207C009E
+S31AFE00251604AC7C0001247C0004AC800100008041000880610004
+S31AFE00252B808081009480A100907C6FF1207C9A03A67CBB03A636
+S31AFE0025408061000C8081001080A10014802100047C0004AC4C32
+S31AFE00255500012C4C0000647C230B783C80000060844A30388498
+S31AFE00256AFFE87C8123789061000C7C6000A6906100107C680273
+S31AFE00257FA6906100143800000090010000900100087C0000A614
+S31AFE00259460638000506004207C0004AC7C0001247C0004AC948A
+S31AFE0025A921FFC848007C3D38210038806100147C6803A680A1FC
+S31AFE0025BE000C806100107C0000A6506004207C0004AC7C000168
+S31AFE0025D3247C0004AC7CA12B784E8000209421FED87C0802A63A
+S31AFE0025E89321010C93410110936101149381011893A1011C931A
+S31AFE0025FDC1012093E101249001012C3FA000003BBD3200813DC5
+S31AFE00261200343860FFFF7D2803A63B8000003BE000013F400041
+S31AFE002627004E800021813D00347C7E1B78386000007D2803A646
+S31AFE00263C3F6000003F2000004E800021801D00483C60000360B4
+S31AFE002651630D407C0803A63D2000003D6000009389390893EBBE
+S31AFE00266639284E8000213C0000403C60FE013C80FE013CA0FE5F
+S31AFE00267B01901B390C38631E2438841E5438A51E60939A392465
+S31AFE002690480091B53C60FE013C80FE013CA0FE013CC0FE01383F
+S31AFE0026A5C61EA038631E6C38841E8438A51E94480091913C6080
+S31AFE0026BAFE0138631EA448009185809A392480BB390C3C60FEBC
+S31AFE0026CF0138631EC8480091713D2000003D600000380938E8CB
+S31AFE0026E43BAB38D87C1D00003D2000009389391C418200207C21
+S31AFE0026F91C0378813D00003BBD00087D2803A64E8000217C1D9D
+S31AFE00270EE0004082FFEC3F800000837C39302C1B0000418200F4
+S31AFE0027234C3FA00000809D39103C60FE0138631ED448009111FA
+S31AFE00273880BD39103D2000003BA000001CA503E893A939303841
+S31AFE00274D61000838800100480097612C03FFFE4082000C93BCC8
+S31AFE002762393048000008937C39307FFDFB787F3CCB787FDBF3F3
+S31AFE002777782C1D0000418200143C60FE0138631F10480090BDB7
+S31AFE00278C3BA00000386100083880010038A000FA480097192C09
+S31AFE0027A10300004080001C3D200000800939342C0000004182FE
+S31AFE0027B6FFC44800B4C14BFFFFBC40820020393C320080090073
+S31AFE0027CB347F63DB787C0803A64E800021480075614BFFFF9C6D
+S31AFE0027E0386100084800911D2C0300004081004C3FA000003FEF
+S31AFE0027F540000138610008389D392038BA1A1C48009C157C63BB
+S31AFE00280A1B794182001C8003000C807D3920389A1A1C7C0803CE
+S31AFE00281FA64E800021480000143C60FE0138631F1C388100087D
+S31AFE002834480090113BA000014BFFFF3C9421FFF07C0802A693DE
+S31AFE002849E1000C900100142C0300027C9F237840820144807FF7
+S31AFE00285E00043C80FE0138841F3C480091292C03000040820098
+S31AFE002873447D6000A67D605B7839200000512004207C00012446
+S31AFE0028883C0002004C00012C7C108BA64C00012C3D4002007C4F
+S31AFE00289D0004AC7D588BA67C0000A6516004207C00012448008C
+S31AFE0028B200F8807F00043C80FE0138841F40480090D12C030064
+S31AFE0028C700408200C07D6000A67D605B78392000005120042055
+S31AFE0028DC7C00012439200000380000807C0903A6612010003D35
+S31AFE0028F1400E007C0004AC7D398BA67D588BA67C198BA67D58CC
+S31AFE0029068BA6392900104200FFE03C0004004C00012C7C108B24
+S31AFE00291BA64C00012C3D4004007C0004AC7D588BA63920000078
+S31AFE002930380000807C0903A6612010003D400E007C0004AC7DE3
+S31AFE002945398BA67D588BA67C198BA67D588BA639290010420089
+S31AFE00295AFFE03C000C004C00012C7C108BA64C00012C3D400C05
+S31AFE00296F007C0004AC7D588BA67C0000A6516004207C00012485
+S31AFE002984480000243C60FE01809F000438631F4448008EB14843
+S31AFE0029990000103C60FE0138631F5C48008EA1800100147C08D4
+S31AFE0029AE03A683E1000C382100104E8000209421FFE87C08027E
+S31AFE0029C3A693A1000C93C1001093E100149001001C3D600000DF
+S31AFE0029D83D200000392938183BEB37A87C1F48004182002C7D83
+S31AFE0029ED3D4B783FC0FE01809F000480BF000080DF0008387E54
+S31AFE002A021F6848008E413BFF00107C1FE8004082FFE48001002A
+S31AFE002A171C7C0803A683A1000C83C1001083E1001438210018F0
+S31AFE002A2C4E8000209421FFA87C0802A69381004893A1004C93AC
+S31AFE002A41C1005093E100549001005C7C7D1B787C9C23783D201A
+S31AFE002A56FE0139291F78386100083880006238A0000138C000E3
+S31AFE002A6B0038E100383901003C48009CCD3D20FE0139291F8875
+S31AFE002A80386100203880006C38A0000138C0000038E1004039FD
+S31AFE002A9501004448009CA93D40FE017FA3EB787F84E378394A74
+S31AFE002AAA1EA038A0000138C1000838E0000239000000392000CF
+S31AFE002ABF0048009C9D2C030000418200408001003C2C00000062
+S31AFE002AD4408200143C60FE0138631F9048008D65480000248008
+S31AFE002AE90100442C0000004082000C380000209001004080618B
+S31AFE002AFE003880810040480098198001005C7C0803A68381003F
+S31AFE002B134883A1004C83C1005083E10054382100584E80002006
+S31AFE002B289421FFB87C0802A69381003893A1003C93C100409319
+S31AFE002B3DE100449001004C3D2000008009392C7C7D1B787C9C8E
+S31AFE002B5223783D20FE019001002839291FA83861000838800038
+S31AFE002B677738A0000138C0000038E100203901002448009BC9CA
+S31AFE002B7C3D40FE017FA3EB787F84E378394A1FB838A000013876
+S31AFE002B91C1000838E00001390100283920000048009BBD2C03BF
+S31AFE002BA60000418200F8800100242C000000418200343C60FEF9
+S31AFE002BBB018081002880A1002038631FCC48008C7D80A100207E
+S31AFE002BD0386100301CA503E838800008480092D92C03FFFE4197
+S31AFE002BE58200BC814100287D6000A67D605B78392000005120B2
+S31AFE002BFA04207C00012439200000380000807C0903A66120102D
+S31AFE002C0F003D600E007C0004AC7D398BA67D788BA67C198BA602
+S31AFE002C247D788BA6392900104200FFE03C0004004C00012C7CA9
+S31AFE002C39108BA64C00012C3D6004007C0004AC7D788BA639207C
+S31AFE002C4E0000380000807C0903A6612010003D600E007C0004CB
+S31AFE002C63AC7D398BA67D788BA67C198BA67D788BA63929001041
+S31AFE002C784200FFE03C000C004C00012C7C108BA64C00012C3DEE
+S31AFE002C8D600C007C0004AC7D788BA67D4803A64E800021800192
+S31AFE002CA2004C7C0803A68381003883A1003C83C1004083E1001C
+S31AFE002CB744382100484E8000209421FFE07C0802A693A1001429
+S31AFE002CCC93C1001893E1001C90010024380000003D2000003F6A
+S31AFE002CE1C000003BA9393090093930901E391C48000A992C03AE
+S31AFE002CF60000418200EC3D200000808939443D600000800B39D2
+S31AFE002D0B403D2000003BE97A247C8422147C8400507FE3FB78F5
+S31AFE002D2038A004004800831D7FE3FB78388003FC480004F98085
+S31AFE002D351F03FC7C030000408200303D20000081697A243C00D5
+S31AFE002D4A0BAD6000FACE7C0B000040820018813F03F83C00DE5A
+S31AFE002D5FAD6000DEAD7C090000418200283C60FE0138632E806F
+S31AFE002D7448008AD13C60000038637A243880000038A0040048F2
+S31AFE002D89008391480000583C60FE0138632C683881000838A01A
+S31AFE002D9E000148000061800100082C000000418200303C60FE30
+S31AFE002DB30138632C807FA4EB7838A00004480000413C60FE0139
+S31AFE002DC83C80000038632CA83884391038A0000248000029383F
+S31AFE002DDD000001901E391C800100247C0803A683A1001483C18B
+S31AFE002DF2001883E1001C382100204E8000209421FFD87C0802B7
+S31AFE002E07A69321000C93410010936100149381001893A1001CE4
+S31AFE002E1C93C1002093E100249001002C3D2000003D6000003B9F
+S31AFE002E314938D87C7B1B787C9D23787CB92B783BCB381848007B
+S31AFE002E4609452C0300003B800004418200CC7C1ED0004182007B
+S31AFE002E5BB43D20000039297A24807E00007FFC4A147F64DB7840
+S31AFE002E7048008AB92C0300004082007C807E00107C03C80040BC
+S31AFE002E8582005C3803FFFF280000054181008C3D60FE01396B62
+S31AFE002E9A2E685400103A7D4B002E3D20FE0139292E687D4A4A90
+S31AFE002EAF147D4903A64E800420801F0000901D00004800005CA5
+S31AFE002EC4A01F0004813F0000B01D0004913D00004800004893B0
+S31AFE002ED9FD0000480000403C60FE0138632E187F64DB78480061
+S31AFE002EEE89594800002C807E00103BDE0018480002DD7C1ED0A5
+S31AFE002F03007F9C1A144082FF543C60FE0138632E447F64DB7879
+S31AFE002F184800892D8001002C7C0803A68321000C8341001083C1
+S31AFE002F2D6100148381001883A1001C83C1002083E10024382175
+S31AFE002F4200284E8000209421FBB87C0802A69301042893210454
+S31AFE002F572C93410430936104349381043893A1043C93C10440A5
+S31AFE002F6C93E104449001044C3D2000003D6000003B0938183BE6
+S31AFE002F812B38D87C7C1B787C9B2378480007FD2C0300003B40C9
+S31AFE002F9600007F1FC3783BC00004418202083C80000038847A8B
+S31AFE002FAB243861000838A004004800808D3BA104083D60000092
+S31AFE002FC03D20FE01934B393039292D787FA3EB783880006C386D
+S31AFE002FD5A0000038C0000238E10420390000004800975D3D401A
+S31AFE002FEAFE017F83E3787F64DB787FA6EB78394A24A838A0008D
+S31AFE002FFF0138E000013900000039200000480097512C030000AE
+S31AFE003014418201947C1FC800418200A480A104207FE3FB787FE8
+S31AFE003029C4F3784800026538030001280000054181FFE03D6009
+S31AFE00303EFE01396B2E005400103A7D4B002E3D20FE0139292E28
+S31AFE003053007D4A4A147D4903A64E8004203C60000038637A2409
+S31AFE0030683881000838A0040048007FD1480001343B40000180A1
+S31AFE00307D7F00103BFF0018480001557FDE1A144BFFFF8C7FE9F3
+S31AFE003092C2783129FFFF7D294910381FFFE87C0048787FE9486A
+S31AFE0030A7387D3F03784BFFFF6C3C60FE0138632D904800878D9D
+S31AFE0030BC4BFFFF5C2C1A0000418200E43C000BAD3D6000006078
+S31AFE0030D100FACE3D20DEAD3B8B7A246129DEAD900B7A24913CB7
+S31AFE0030E603F87F83E378388003FC480001393D2000003FE000C4
+S31AFE0030FB00801F394481693940907C03FC7C0002143C60FE0105
+S31AFE0031107FC0585038632DA4480092292C030000418200888056
+S31AFE0031259F39443BA104247FC3F3787FA5EB784800B8097C7F39
+S31AFE00313A1B794182002C83A104247FE3FB784800BB117C661BC7
+S31AFE00314F783C60FE01386327247FA4EB787FE5FB78480086E55E
+S31AFE003164480000447FC3F3787F84E3787FA6EB7838A00400480F
+S31AFE00317900B9357C7F1B794182002883A104247FE3FB7848006C
+S31AFE00318EBACD7C661B783C60FE0138632DD07FA4EB787FE5FB14
+S31AFE0031A378480086A18001044C7C0803A6830104288321042CAA
+S31AFE0031B883410430836104348381043883A1043C83C10440833B
+S31AFE0031CDE10444382104484E8000203803FFFF280000054D81F9
+S31AFE0031E200203D60FE01396B2D605400103A7D4B002E3D20FEF8
+S31AFE0031F70139292D607D4A4A147D4903A64E80042038600004AD
+S31AFE00320C4E800020386000084E800020386000004E800020386F
+S31AFE0032216002004E800020388400035484F0BE7C8023782C003C
+S31AFE003236000038C0000038E000003884FFFF40810044816300CC
+S31AFE00324B007C8A23787D68383038E7000168E900102C0A0000C5
+S31AFE0032607D2AFE707D404A787C0050507D6B43787C00FE707C9C
+S31AFE003275C65A78386300047CE700383884FFFF4181FFC47CC3F0
+S31AFE00328A33784E8000209421FF707C0802A6930100709321008A
+S31AFE00329F74934100789361007C9381008093A1008493C10088BE
+S31AFE0032B493E1008C900100947C7B1B78807B00087C9F23782C6D
+S31AFE0032C90300007CB82B78418200383881006038A000014BFFDB
+S31AFE0032DEFB25801B000C2C00000041820014800100602C000000
+S31AFE0032F3004182019848000010800100602C00000040820188B6
+S31AFE0033083D20000039297A243C60FE01809B00047FBF4A1438C1
+S31AFE00331D632CBC48008525813B00103809FFFF28000005418160
+S31AFE00333201483D60FE01396B2D305400103A7D4B002E3D20FEAD
+S31AFE0033470139292D307D4A4A147D4903A64E800420801D00008A
+S31AFE00335C2C000000418200103D20FE0138892CC8480000303D93
+S31AFE00337120FE0138892CD0480000243C60FE01809D00003863A8
+S31AFE0033862CD8480084BD480000EC7FA3EB784800ACED7C641B0C
+S31AFE00339B783C60FE0138632CC4480084A1480000D07FBEEB7856
+S31AFE0033B03BE000003F80FE013FA0FE017C9EF8AE387C2CDC4889
+S31AFE0033C5008481281F00044181000C387D2CE4480084713BFF95
+S31AFE0033DA0001281F00054081FFDC3C60FE017FDDF37838632CC8
+S31AFE0033EFE848008455480000843C60FE0138632CEC48000088D2
+S31AFE0034043C60FE0138632CF048008439881D00007FBEEB782CE7
+S31AFE0034190000007FBFEB78418200583F20FE013B4000003B804A
+S31AFE00342E000A881E00002C00000A418200187FEBFB788C0B0050
+S31AFE003443012C00000A4082FFF87D7F5B787FC4F3789B5F000009
+S31AFE00345838792CF4480083E93BDF00019B9F0000881E00007F5C
+S31AFE00346DDFF3782C0000004082FFBC2C180000418200183C6098
+S31AFE003482FE0138632CF0480083BD386000024800022C801B0048
+S31AFE003497102C00000441820054386100083880005038A0000044
+S31AFE0034AC48008A092C0300003860FFFF418002043861000848B7
+S31AFE0034C10084412C0300004182FFC4880100082C00002E4082CB
+S31AFE0034D6000C38600000480001E02C00005E4082000C38600020
+S31AFE0034EB03480001D0813B00103809FFFF28000005418101BCF5
+S31AFE0035003D60FE01396B2D485400103A7D4B002E3D20FE0139D4
+S31AFE003515292D487D4A4A147D4903A64E80042083FD0000386160
+S31AFE00352A00087FA4EB78480096F54800003083FD000038610096
+S31AFE00353F087FA4EB7838A0000038C00000480095694800001473
+S31AFE00355483FD0000386100087FA4EB784800A9B92C030000419D
+S31AFE00356982013C801D00007FE002787C09FE707D2302787C6328
+S31AFE00357E48507C63FE707C6018F8546307FE540007BC7C6303AE
+S31AFE0035937848000128801D0000A17D00049001005839210058DC
+S31AFE0035A8B1690004380100087D3A4B78900100683BC000003FFE
+S31AFE0035BD60FE013BE100643B810068806100687FE4FB787F85CF
+S31AFE0035D2E37838DB2CE4480094DD2C030000418200B4881F005C
+S31AFE0035E7037C1DF1AE3BDE0001281E00054081FFD4480000C08F
+S31AFE0035FC3C60FE017FBEEB7838632CFC4800823D48000044889D
+S31AFE0036110100083BE100082C000000418200287FC4F3787FEB44
+S31AFE003626FB78880B0000980400008D2B0001388400012C09003E
+S31AFE00363B004082FFEC7C9E23783800000A981E00003BDE000102
+S31AFE003650380000003C60FE01981E000038632D28480081E53802
+S31AFE0036656100083880005038A00000480088452C030000386027
+S31AFE00367AFFFF41800040386100084800827D2C0300004082FF60
+S31AFE00368F8448000028A01A000481210058B01D0004913D0000D7
+S31AFE0036A438600004480000143C60FE0138632CEC480081913835
+S31AFE0036B9600001800100947C0803A68301007083210074834185
+S31AFE0036CE00788361007C8381008083A1008483C1008883E100AF
+S31AFE0036E38C382100904E8000209421FFF07C0802A693C100083F
+S31AFE0036F893E1000C900100147C7E1B782C1E00017C9F237841C5
+S31AFE00370D8100143C60FE0138632C28480012B548000054480091
+S31AFE00372200692C030000418200483C6000003C80000080BF0054
+S31AFE0037370438633738388437A848008E3D7C631B794182001C6B
+S31AFE00374C8003000C7FC3F3787FE4FB787C0803A64E80002148EE
+S31AFE0037610000103C60FE0138632C3C48001261800100147C08CD
+S31AFE00377603A683C1000883E1000C382100104E8000209421FFCA
+S31AFE00378BE07C0802A6934100089361000C9381001093A10014D1
+S31AFE0037A093C1001893E1001C900100243D200000800933002C1A
+S31AFE0037B50000004082009C3FE00000807F390C38000001900968
+S31AFE0037CA33003C63FFFF3C8000014800B0557C641B79418200D5
+S31AFE0037DF183C60FE0138632BD44800805D386000004800006817
+S31AFE0037F43F6000003F40000038600000389B393C38BA3940480B
+S31AFE00380900B0C93FA000003F800000387D3944389C39484800C0
+S31AFE00381EB0E9809B393C80BA394080DC39483C60FE0180FD3987
+S31AFE0038334438632BFC4800800D813D3944801F390C3D2900011B
+S31AFE0038487C0900503D600000900B394C38600001800100247C1B
+S31AFE00385D0803A6834100088361000C8381001083A1001483C155
+S31AFE003872001883E1001C382100204E8000209421FFE07C080224
+S31AFE003887A693A1001493C1001893E1001C900100243D40FE010D
+S31AFE00389C394A2B8438A0000238C0000038E0000039010008397C
+S31AFE0038B120000148008EA92C030000408200143C60FE01386323
+S31AFE0038C6291C48001105480000E03D6000003D20000080A939C2
+S31AFE0038DB44808B39403FA00000807D394C7C8520504800775526
+S31AFE0038F083BD394C3BC000003BE000004800000C3BFF00013B1A
+S31AFE003905BD01003D200000800939445400C23E7C1F0040408099
+S31AFE00391A0028881D00002C0000FF4182FFDC806100087FA4EB07
+S31AFE00392F7848007FF92C0300004082FFC83BC000012C1E000049
+S31AFE003944408200183C60FE018081000838632BA448007EF14883
+S31AFE0039590000543D20000080093924807D00147C03004041802D
+S31AFE00396E001C80BD00183D2000008169390C7C032A147C0058B2
+S31AFE00398340418000143C60FE0138632BBC48007EB5480000181E
+S31AFE003998809D0010480076A5801D001C3D2000009009392C80F2
+S31AFE0039AD0100247C0803A683A1001483C1001883E1001C382142
+S31AFE0039C200204E8000209421FFD87C0802A6934100109361004E
+S31AFE0039D7149381001893A1001C93C1002093E100249001002C7E
+S31AFE0039EC3D40FE01394A2B8438A0000238C0000038E0000039F1
+S31AFE003A010100083920000148008D552C030000408200143C607E
+S31AFE003A16FE013863291C48000FB1480001843D6000003D2000E9
+S31AFE003A2B0080A93944800B39403FA000007F650050807D394C43
+S31AFE003A407F64DB78480075FD83DD394C3BA000003BDE02003B67
+S31AFE003A55E000024800000C3BFF00013BDE01003F400000801AB4
+S31AFE003A6A39445400C23E7C1F004040800040881E00002C0000C5
+S31AFE003A7FFF4182FFDC806100087FC4F37848007E9D2C03000068
+S31AFE003A944082FFC83C60FE018081000838632B904800889D2CFD
+S31AFE003AA9030000418200F83BA000012C1D0000408200183C60AB
+S31AFE003ABEFE018081000838632BA448007D7D480000D83B81005F
+S31AFE003AD30C807E0010809E00187F85E3784800AE5D7C7F1B7949
+S31AFE003AE84182002883A1000C7FE3FB784800B1657C661B783CC6
+S31AFE003AFD60FE0138632B247FA4EB787FE5FB7848007D397FC3CA
+S31AFE003B12F378388000FF38A00100480075FD809A39447F63DB91
+S31AFE003B27787F85E3784800AE117C7F1B794182002C83A1000CF9
+S31AFE003B3C7FE3FB784800B1197C661B783C60FE0138632B247F10
+S31AFE003B51A4EB787FE5FB7848007CED480000483D2000008089D6
+S31AFE003B66394C80BA39447F63DB787F86E3784800AF397C7F1B2F
+S31AFE003B7B794182002883A1000C7FE3FB784800B0D17C661B788A
+S31AFE003B903C60FE0138632B447FA4EB787FE5FB7848007CA58031
+S31AFE003BA501002C7C0803A683410010836100148381001883A1A1
+S31AFE003BBA001C83C1002083E10024382100284E8000209421FFC7
+S31AFE003BCFA07C0802A69381005093A1005493C1005893E1005CA9
+S31AFE003BE490010064380000007C7D1B787C9C23783D20FE019070
+S31AFE003BF9010044392928C09001003C386100083880006638A0C0
+S31AFE003C0E000138C0000038E100383901003C48008B253D20FE8A
+S31AFE003C230139292B68386100203880006C38A0000138C00000E4
+S31AFE003C3838E100403901004448008B013D40FE017FA3EB787F48
+S31AFE003C4D84E378394A24A838A0000238C1000838E00002390002
+S31AFE003C6200003920000048008AF52C030000408200143C60FE8A
+S31AFE003C77013863291C48000D51480001048001003C2C00000077
+S31AFE003C8C41820010800100442C000000408200143C60FE0138B2
+S31AFE003CA1632B7048000D29480000DC806100384800ABDD7C7C89
+S31AFE003CB61B794082002080610038800100407C6302143863FF16
+S31AFE003CCBFF4800ABC17C7C1B794182004483A100387F83E378E1
+S31AFE003CE04800AF797C651B783C60FE01386329787FA4EB784842
+S31AFE003CF5007B513D2000003D6000003C60FE018089393C80ABAC
+S31AFE003D0A39403863299848007B35480000708081003880010061
+S31AFE003D1F407C8323787C8402143884FFFF4800B1112C030000A8
+S31AFE003D34418200143C60FE0138632AA848007B054800004080C7
+S31AFE003D496100388081004038A100484800ABE97C7C1B7941823B
+S31AFE003D5E002883A100487F83E3784800AEF17C661B783C60FE65
+S31AFE003D730138632B247FA4EB787F85E37848007AC580010064FB
+S31AFE003D887C0803A68381005083A1005483C1005883E1005C3895
+S31AFE003D9D2100604E8000209421FF187C0802A6934100D093610E
+S31AFE003DB200D4938100D893A100DC93C100E093E100E49001000B
+S31AFE003DC7EC380000007C7D1B787C9C23783D20FE01900100C4CF
+S31AFE003DDC392928849001009C900100A4900100AC900100B4904C
+S31AFE003DF10100BC386100083880006238A0000138C0000038E157
+S31AFE003E0600983901009C480089353D20FE013929289838610018
+S31AFE003E1B203880007238A0000138C0000038E100A0390100A4DC
+S31AFE003E30480089113D20FE01392928AC386100383880006538DF
+S31AFE003E45A0000138C0000038E100A8390100AC480088ED38E14E
+S31AFE003E5A00B03D20FE017CFE3B78392928C0386100503880002B
+S31AFE003E6F6638A0000138C00000390100B4480088C53D20FE0124
+S31AFE003E84392928DC386100683880006C38A0000138C000003891
+S31AFE003E99E100B8390100BC480088A13D20FE01392928F438619D
+S31AFE003EAE00803880007338A0000138C0000038E100C03901006C
+S31AFE003EC3C44800887D3D40FE017FA3EB787F84E378394A2910BA
+S31AFE003ED838A0000238C1000838E00006390100C8392000014834
+S31AFE003EED0088712C030000408200143C60FE013863291C4800FB
+S31AFE003F020ACD480004988001009C2C0000004182001C80010042
+S31AFE003F17BC2C00000041820010800100C82C000000408200148B
+S31AFE003F2C3C60FE013863293048000A9948000464800100C4818C
+S31AFE003F414100B82C00000040820008914100C03D200000800900
+S31AFE003F563944816100C07D2A02143929FFFF7D2903963F400058
+S31AFE003F6B007D2901D67C095840912100B8408000143C60FE01CA
+S31AFE003F803863294C480078C148000414800100B42C0000004195
+S31AFE003F95820070806100B04800A8F17C7C1B7940820020806160
+S31AFE003FAA00B0800100C07C6302143863FFFF4800A8D57C7C1BA7
+S31AFE003FBF794182004483A100B07F83E3784800AC8D7C651B7843
+S31AFE003FD43C60FE01386329787FA4EB78480078653D2000003DB8
+S31AFE003FE96000003C60FE018089393C80AB3940386329984800FE
+S31AFE003FFE78494800039C3FE0000080810098801F39247C0400CE
+S31AFE004013404180001C800100C03D2000008169390C7C04021414
+S31AFE0040287C005840418000283C60FE01386329B44800780D3D65
+S31AFE00403D2000003C60FE01809F392480A9390C38632998480021
+S31AFE00405277F5806100C8480078A92803000F408100183C60FE2A
+S31AFE00406701386329E038800010480077D548000328800100B497
+S31AFE00407C2C0000004082002C808100B87FC3F378480003392CFB
+S31AFE004091030000408200183C60FE01808100B838632A104800C8
+S31AFE0040A677A1480002F43F8000003D20000080BC394480093914
+S31AFE0040BB403FA000007F650050807D394C7F64DB7848006F75B5
+S31AFE0040D0801C394483FD394C5409C23F3BA000003B8000004184
+S31AFE0040E58200883FC0FE01881F00002C0000FF418200608061E4
+S31AFE0040FA00C87FE4FB78480078292C0300004082004C80010068
+S31AFE00410FB42C00000041820014813F0010800100B07C0900005A
+S31AFE00412440820214813F0018800100B87C0900004082021480BC
+S31AFE0041398100C8387E2A8C480082012C030000418202543B80EA
+S31AFE00414E00014800001C801A39443BBD00015400C23E7C1D00F6
+S31AFE004163403BFF01004180FF842C1C0000814100C0806100B029
+S31AFE0041784082004C3D200000800939443D6000005400C23E7C50
+S31AFE00418D1C004083EB394C3BA000004800001C3D2000008009A5
+S31AFE0041A239443BBD00015400C23E7C1D00403BFF010040800066
+S31AFE0041B710881F00002C0000FF4082FFDC7C8352143884FFFF51
+S31AFE0041CC4800AC712C030000418200143C60FE0138632AA8481F
+S31AFE0041E1007665480001B838A100CC806100B0808100B87CBEC0
+S31AFE0041F62B784800A7457C7C1B793BA000014182002C83A1005E
+S31AFE00420BCC7F83E3784800AA497C661B783C60FE017FA4EB78A0
+S31AFE00422038632ADC7F85E3784800761D3BA000002C1D00004145
+S31AFE004235820044806100B08081009880A100C07FC6F3784800A7
+S31AFE00424AA8657C7C1B794182002883A100CC7F83E3784800A999
+S31AFE00425FFD7C661B783C60FE0138632B007FA4EB787F85E3788E
+S31AFE004274480075D17FE3FB783880000038A0010048006E958072
+S31AFE0042898100C87FE3FB78480076CD800100A4812100B02C00D0
+S31AFE00429E0000913F001040820020800100B42C00000041820021
+S31AFE0042B30C812100B0480000108121009848000008812100A070
+S31AFE0042C8800100AC913F00142C000000408200103D20000080F1
+S31AFE0042DD09392C48000008800100A8901F001C800100B83D2080
+S31AFE0042F2000080893944901F00187F63DB787FC5F3784800A694
+S31AFE004307397C7C1B794182004C83A100CC7F83E3784800A9414A
+S31AFE00431C7C661B783C60FE0138632B247FA4EB787F85E3784861
+S31AFE004331007515480000683C60FE0138632A3848007505480097
+S31AFE00434600583C60FE0138632A64480074F5480000483D2000A4
+S31AFE00435B008089394C80BA39447F63DB787FC6F3784800A741EF
+S31AFE0043707C7C1B794182002883A100CC7F83E3784800A8D97C2B
+S31AFE004385661B783C60FE0138632B447FA4EB787F85E378480054
+S31AFE00439A74AD800100EC7C0803A6834100D0836100D4838100FF
+S31AFE0043AFD883A100DC83C100E083E100E4382100E84E80002082
+S31AFE0043C43D20000080E939443D600000814B393C3D2000007CE6
+S31AFE0043D9073A14810939407D4A02147D4953787C094040408040
+S31AFE0043EE007054E0F0BE7C0603785407103A800A00002C00FF0D
+S31AFE004403FF4182004C7C095000418200147C0950507C001670BF
+S31AFE0044187C002040408000587D4953787C0940404080002054CD
+S31AFE00442DCB103A7D295A147C09404040800010800900002C00C3
+S31AFE004442FFFF4082FFEC7D2A4B78480000087D4A3A147C0A4021
+S31AFE004457404180FFA47C095000418200207C0950507C001670C9
+S31AFE00446C7C0020404180001091230000386000014E8000203817
+S31AFE0044816000004E8000209421FFE07C0802A69361000C938100
+S31AFE004496001093A1001493C1001893E1001C900100243D2000A7
+S31AFE0044AB00800939443D600000814B393C3D20000083C93940F2
+S31AFE0044C07C0002147FEA02147C1FF0407FE4FB783F6000004052
+S31AFE0044D58000883F80FE013FA00000801F00002C00FFFF41829D
+S31AFE0044EA005C7C04F80041820010387C286C7FE5FB7848007338
+S31AFE0044FF497C1FF0407FE4FB7840800034801F00002C00FFFFFD
+S31AFE00451441820028801D39445400F0BE5409103A7C844A147C06
+S31AFE00452904F04040800010800400002C00FFFF4082FFEC7C9FFF
+S31AFE00453E237848000014801B39445400F0BE5400103A7FFF0235
+S31AFE004553147C1FF0404180FF887C04F800418200143C60FE013E
+S31AFE0045683863286C7FE5FB78480072D5800100247C0803A68350
+S31AFE00457D61000C8381001083A1001483C1001883E1001C382137
+S31AFE00459200204E8000209421FFE87C0802A69381000893A100EA
+S31AFE0045A70C93C1001093E100149001001C3FA000003D2000001A
+S31AFE0045BC81693940801D39443C60FE017FE05850386327FC48C1
+S31AFE0045D1007275801D39443BC000005409C23F3F8000004182F5
+S31AFE0045E600547FFDFB787FDFF3787F9EE3783F80FE01881D00D5
+S31AFE0045FB002C0000FF4182002080BD001080DD001480FD001846
+S31AFE004610811D001C387C28407FA4EB7848007229801E39443BFC
+S31AFE004625FF00015400C23E7C1F00403BBD01004180FFC480014F
+S31AFE00463A001C7C0803A68381000883A1000C83C1001083E1002A
+S31AFE00464F14382100184E8000209421FFB87C0802A69321002C67
+S31AFE00466493410030936100349381003893A1003C93C10040932E
+S31AFE004679E100449001004C7C7D1B787C9C23783BE000003D206F
+S31AFE00468EFE013929269893E10020386100083880006638A000C9
+S31AFE0046A30038C0000238E1002039000000480080913D40FE01BD
+S31AFE0046B87FA3EB787F84E378394A24A838A0000238C1000838A4
+S31AFE0046CDE000013900000039200000480080852C030000418222
+S31AFE0046E202C03C60FE01386326C448007C552C030000408200D3
+S31AFE0046F7143C60FE01386326F4480071454800029C3C60FE01C7
+S31AFE00470C3863270048007135800100202C0000004182006C3DAB
+S31AFE004721200000808939483D600000800B39443D200000388417
+S31AFE004736FFFC8069393C7C8401D63BA100247C0002147C6302C7
+S31AFE00474B147FA5EB784800A1ED7C7C1B797FBEEB784182003CB9
+S31AFE00476083A100247F83E3784800A4F17C661B783C60FE013876
+S31AFE0047756327247FA4EB787F85E378480070C5480000143C6023
+S31AFE00478AFE013863274C480070B53BC100243F400000839A39A7
+S31AFE00479F443C0000027F9C00003F20000083B9394C4FFEEB828A
+S31AFE0047B47C000026540007FE7C0000D07C0900F87F9C00385580
+S31AFE0047C929039C7F9C4B787FA3EB783880000038A001004800D3
+S31AFE0047DE693D3D20FE013F60000039692794801B393C814927C3
+S31AFE0047F394810B0004939D0018915D0000911D0004901D0014E0
+S31AFE004808901D00103BBD01007FA3EB783880000038A001004883
+S31AFE00481D0068FD3D60FE01801B393C810B279C392B279C80E992
+S31AFE004832000C81690004814900087C00E214939D0018911D0039
+S31AFE00484700917D0004915D000890FD000C901D0014901D001039
+S31AFE00485C3BBD01007FA3EB783880000038A00100480068AD3D9A
+S31AFE00487120FE01800927AC396927AC812B0008814B0004A10B0E
+S31AFE004886000C913D0008901D0000915D0004B11D000C880B002B
+S31AFE00489B0E3F800000981D000E817A3944801C39407D2B5A14D1
+S31AFE0048B07C090050901D0014917D0018901D00103BBD01007FFE
+S31AFE0048C5A3EB783880000038A0010048006849801C3940809A1B
+S31AFE0048DA39443D60FE01814B27BC7F640050392B27BCA10900D9
+S31AFE0048EF0C8009000481690008915D0000901D0004917D000870
+S31AFE004904B11D000C909D0018937D0010937D00147F63DB787F83
+S31AFE004919C5F3784800A0213BFF00013BFF00017C7C1B793BFF10
+S31AFE00492E00013BFF00014182002C83A100247F83E3784800A3B5
+S31AFE004943197C661B783C60FE01386327247FA4EB787F85E37867
+S31AFE00495848006EED480000448099394C7F63DB7857E5402E7F1B
+S31AFE00496DC6F3784800A13D7C7C1B794182002883A100247F8319
+S31AFE004982E3784800A2D57C661B783C60FE01386327CC7FA4EB56
+S31AFE004997787F85E37848006EA98001004C7C0803A68321002C07
+S31AFE0049AC83410030836100348381003883A1003C83C100408343
+S31AFE0049C1E10044382100484E8000209421FFF87C0802A69001C0
+S31AFE0049D6000C7C641B783C60FE013863267048006E613C6000CA
+S31AFE0049EB003C8000003CA0FE0138633738388437A838A52690E4
+S31AFE004A0048007CBD8001000C7C0803A6382100084E800020947F
+S31AFE004A1521FF207C0802A67D800026934100C8936100CC938189
+S31AFE004A2A00D093A100D493C100D893E100DC900100E491810098
+S31AFE004A3FC43BA000007C7B1B787C9A23783D20FE013BC92210F2
+S31AFE004A5493A1009893A100B0386100083880000038A0000C4814
+S31AFE004A690066B13D20000181491AB03B8100183800000C39607A
+S31AFE004A7E00013D20FE01B0010010B161000E91410008B3A100B3
+S31AFE004A930C392922687F83E3783880007638A0000038C00002B5
+S31AFE004AA838E100903900000048007C913D20FE01392922703836
+S31AFE004ABD6100303880007238A0000038C0000238E1009439006D
+S31AFE004AD2000048007C6D3D20FE013929228038610048388000A1
+S31AFE004AE76238A0000138C0000038E100983901009C48007C49EF
+S31AFE004AFC3D20FE0139292290386100603880006D38A000013802
+S31AFE004B11C0000138E100A0390100A448007C253D20FE0139298C
+S31AFE004B2622B0386100783880006838A0000138C0000138E10088
+S31AFE004B3BA8390100AC48007C013D40FE017F63DB787F44D3784F
+S31AFE004B507F86E378394A22C838A0000138E00005390100B03966
+S31AFE004B6520000148007BF52C0300003BE0000041820288800146
+S31AFE004B7A00AC2C0000004182002C806100A83881000848009336
+S31AFE004B8F8D2C030000408200183C60FE01808100A8386322D4A2
+S31AFE004BA448006CA148000254800100A42C0000004182007480FD
+S31AFE004BB96100A03C80FE01388422EC48006DCD2C0300004082EA
+S31AFE004BCE000C3BE0000148000054806100A03C80FE01388422F0
+S31AFE004BE3F448006DAD2C030000408200283D20000080093934F7
+S31AFE004BF83BE000002C000000408200283C60FE01386322FC48D7
+S31AFE004C0D006C39480001EC3C60FE01808100A03863232448004E
+S31AFE004C226C25480001D82E1F0000409200DC806100B02C03000C
+S31AFE004C37004082001C3C60FE013863233848006C017FC3F37893
+S31AFE004C4C48006BF9480001AC38C100B47CDE3378388100083803
+S31AFE004C61A000014800803D7C7C1B7940800028806100B483A167
+S31AFE004C7600B0480083D57C651B783C60FE013863234C7FA4EBAE
+S31AFE004C8B7848006BB94800016C3C60FE01808100903863CE489A
+S31AFE004CA0480001A93D2000013B491BC83BA000003B6100B848CD
+S31AFE004CB500000C7F9DD9AE3BBD0001281D0003418100184800D4
+S31AFE004CCA01A97C7C1B794080FFE8801A0110900100B42C1C00BC
+S31AFE004CDF0040800028806100B4480083657C641B783C60FE0101
+S31AFE004CF43863236448006B4D7FC3F37848008135480000F82C6E
+S31AFE004D091F0001408200143C60FE013863238848006B2D480092
+S31AFE004D1E00E04800010D800100942C000000418200548001006D
+S31AFE004D339C2C000000408200143C60FE01386323B448006B0108
+S31AFE004D48480000A883A100984800000C987D00003BBD000148FC
+S31AFE004D5D0001157C631B794080FFF03C60FE0180810098386336
+S31AFE004D7223D87FA5EB7848006ACD480000743C80FE01388423D1
+S31AFE004D87F0386100B938A0000348006C612C0300003BA100B81E
+S31AFE004D9C408200143C60FE0038634E70480006DD4800004488F6
+S31AFE004DB10100B82C00005340820028893D00013929FFD028099E
+S31AFE004DC60009418100183C60FE008081009838634E704800011C
+S31AFE004DDBC9480000143C60FE01808100B8386323F448006A5989
+S31AFE004DF04092000C386100B44800803D800100E4818100C47CD3
+S31AFE004E050803A6834100C8836100CC838100D083A100D483C197
+S31AFE004E1A00D883E100DC7D808120382100E04E8000203D200045
+S31AFE004E2F0139291BC88009010C39690004900901089169010447
+S31AFE004E444E8000203D600001392B1BC839400000380001009040
+S31AFE004E596B1BC8914901189009010C90890114914901084E807A
+S31AFE004E6E00209421FFF07C0802A693C1000893E1000C900100CE
+S31AFE004E83143D2000013BE91BC883DF01082C1E00004080000C1C
+S31AFE004E983860FFFF480000EC408200C4801F01142C0000004190
+S31AFE004EAD820038817F01183D200000392933047C8958AE396B74
+S31AFE004EC200013C60FE01917F01183863220848006975801F0187
+S31AFE004ED718280000064081000893DF01183D2000013BE91BC8C3
+S31AFE004EEC801F010C2C0000FF41810020801F01142C00000041D3
+S31AFE004F0182FF983C60FE013863220C480069394BFFFF883D2002
+S31AFE004F16000181291BC8381F00047C0303783880010038BF01EE
+S31AFE004F2B107D2803A6901F01044E8000212C030000907F010C21
+S31AFE004F40907F010841810020801F01142C0000004182FF483C38
+S31AFE004F5560FE013863220C480068E94BFFFF383D400001394A00
+S31AFE004F6A1BC8812A0108816A01043929FFFF912A0108886B0090
+S31AFE004F7F00396B0001916A0104800100147C0803A683C1000866
+S31AFE004F9483E1000C382100104E8000209421FF707C0802A6925B
+S31AFE004FA981006092A1006492C1006892E1006C93010070932125
+S31AFE004FBE0074934100789361007C9381008093A1008493C1000A
+S31AFE004FD38893E1008C900100947C7D1B787C9523783B60000045
+S31AFE004FE83A8000013B2000003AC000003AE0FFFF480002602CB2
+S31AFE004FFD050053418200183C60FE01386320A87F64DB784800EC
+S31AFE0050126835480002547FA803A63B7B00024E80002138A100FA
+S31AFE0050275838000000547C063E7CBA2B78900100587FA3EB7885
+S31AFE00503C38800001480002697C7F1B79408000183C60FE0138B5
+S31AFE0050516320D47F64DB78480067ED4800020C381CFFD028007C
+S31AFE00506600093B7B0001418101AC3D60FE01396B21E05400105D
+S31AFE00507B3A7D4B002E3D20FE01392921E07D4A4A147D4903A699
+S31AFE0050904E8004207FA3EB78389CFFD17F45D378480002092C5E
+S31AFE0050A51400007C7E1B78381BFFD17FD8F3787F60E2144182D4
+S31AFE0050BA002C2C1500004182001C7F3EA8503C60FE0138632086
+S31AFE0050CFF87F24CB7848006771480000083B2000003A80000065
+S31AFE0050E43D200000816939247FDECA147D39F0507C1748107C77
+S31AFE0050F90001107C0003B87D2900787C1E58407EE000387C17DD
+S31AFE00510E4B78418000143D2000008009390C7C1E00404081002A
+S31AFE005123183C60FE01386321107FC4F378480067154800013405
+S31AFE005138381F002E7FFC00507FE9FB782C0900007F7BFA143BBB
+S31AFE00514DFFFFFF408100307F5CD3787FA3EB78388000017F85F3
+S31AFE005162E378480001457FE0FB782C000000987E00003BDE001E
+S31AFE005177013BFFFFFF4181FFDC7FA3EB783880000138A0000033
+S31AFE00518C4800011D88A1005B7C6318F85466063E7C0628003B4E
+S31AFE0051A17B000190A10058418200183C60FE013863214C7F04EF
+S31AFE0051B6C3784800668D480000AC7D39F0507C09B0107C0001BE
+S31AFE0051CB107C0003B87D2900787EC000387C164B7848000054FF
+S31AFE0051E07FA3EB78209C003B7F45D378480000BD7C7E1B783D5C
+S31AFE0051F52000003C60FE0193C9392C386321887FC4F3787EE5D0
+S31AFE00520ABB787EC6B37848006635480000543C60FE0138632113
+S31AFE00521FB07F64DB787F85E3784800661D4800003C7F7FDB7891
+S31AFE0052347FBEEB78480000083BFF00017FC803A64E8000212C2B
+S31AFE00524903000A4082FFF07FDDF3787FFBFB787FA803A64E803C
+S31AFE00525E00217C651B794181FD98800100947C0803A682810005
+S31AFE0052736082A1006482C1006882E1006C8301007083210074B5
+S31AFE005288834100788361007C8381008083A1008483C1008883F6
+S31AFE00529DE1008C382100904E8000209421FFE07C0802A6936100
+S31AFE0052B2000C9381001093A1001493C1001893E1001C900100DE
+S31AFE0052C7247C9E23787FC0F3782C0000007C7B1B787CBC2B78BA
+S31AFE0052DC3BA000003BDEFFFF408101787F6803A64E8000217F8F
+S31AFE0052F16803A6547F063E4E800021393FFFD0381FFFBF2129E7
+S31AFE0053060009392000007D29491420000005380000007C00014F
+S31AFE00531B147D270379546B063E3920000040820010381FFF9F22
+S31AFE0053302800000541810008392000012C0900004182010439DD
+S31AFE0053452BFFD0380BFFBF7D2A4B787C0803785529063E5400D5
+S31AFE00535A063E21290009392000007D29491420000005380000EA
+S31AFE00536F007C0001147D2703793920000040820010380BFF9F68
+S31AFE0053842800000541810008392000012C090000418200B039DE
+S31AFE0053993FFFD05520063E2800000957BD402E4181000C7D2313
+S31AFE0053AE4B7848000030381FFF9F280000054181000C387FFF05
+S31AFE0053C3A94800001C381FFFBF393FFFC9200000057C000110BD
+S31AFE0053D87C0003B87C0348385540063E280000094181000C7D31
+S31AFE0053ED49537848000030380BFF9F280000054181000C392BDB
+S31AFE005402FFA94800001C5500063E392BFFC9200000057C00011E
+S31AFE005417107C0003B87C094838546020362C1C00007C034B789C
+S31AFE00542C7FBD1B784182001C801C00007C001A14901C0000487F
+S31AFE00544100000C3860FFFF480000187FC0F3782C0000003BDE61
+S31AFE005456FFFF4181FE907FA3EB78800100247C0803A6836100B4
+S31AFE00546B0C8381001083A1001483C1001883E1001C382100207B
+S31AFE0054804E8000209421FFF87C0802A69001000C3C60FE0138DD
+S31AFE00549563208C480063AD8001000C7C0803A6382100084E80AE
+S31AFE0054AA00203860001C4E8000209421FFE87C0802A693A1002B
+S31AFE0054BF0C93C1001093E100149001001C7C7D1B78813D0004E1
+S31AFE0054D483C900044800002C73E00012418200107FA3EB787FBF
+S31AFE0054E9E4FB784800004973E000084182000C7FA3EB784800CB
+S31AFE0054FE01A9B3FE0010A01E00107000001A541F043E2C1F00D2
+S31AFE005513004082FFC88001001C7C0803A683A1000C83C10010A8
+S31AFE00552883E10014382100184E8000209421FFE87C0802A69338
+S31AFE00553D81000893A1000C93C1001093E100149001001C7C7DFA
+S31AFE0055521B7883DD000483FE0018A01F0000700090002C0010B5
+S31AFE00556700408200683B9E0028813D0000801E00108169002486
+S31AFE00557C7C00F850816B00085400F87AA13F00007C9C002E7FF3
+S31AFE005591A3EB7838A000007D6803A67129EFFFB13F00004E804F
+S31AFE0055A60021A01F0000700920004182000C83FE0010480000CB
+S31AFE0055BB083BFF0008A01F0000700090002C0010004182FFA42C
+S31AFE0055D093FE00188001001C7C0803A68381000883A1000C8390
+S31AFE0055E5C1001083E10014382100184E8000209421FFE87C08E5
+S31AFE0055FA02A693A1000C93C1001093E100149001001C81230073
+S31AFE00560F048169000C83EB00047C188AA654000FFE2C000000C5
+S31AFE00562441820028812B0004A00B00022C000000408100187CA4
+S31AFE005639004BAC7C0004AC3400FFF0392900104181FFF02C05BE
+S31AFE00564E0000408100387C9E23787CBD2B78807E00002C03008C
+S31AFE005663004182001880BE00047FE4FB78480059D1801E000427
+S31AFE0056787FFF021437BDFFFF3BDE00084082FFD88001001C7CC0
+S31AFE00568D0803A683A1000C83C1001083E10014382100184E8018
+S31AFE0056A200209421FFE87C0802A693A1000C93C1001093E100EF
+S31AFE0056B7149001001C7C7D1B7883DD000483FE001C48000048FC
+S31AFE0056CC813D000093FE000C816900247FA3EB78800B0004A0A8
+S31AFE0056E19F00027C0803A64E800021A01F000060008000B01F85
+S31AFE0056F60000A13F0000712020004182000C83FE00144800005E
+S31AFE00570B083BFF0008A01F0000700090002C0010004182FFB0CE
+S31AFE00572093FE001C8001001C7C0803A683A1000C83C1001083F2
+S31AFE005735E10014382100184E8000209421FFD87C0802A69301BB
+S31AFE00574A00089321000C93410010936100149381001893A10032
+S31AFE00575F1C93C1002093E100249001002C83C300047C98237853
+S31AFE00577483BE00087CBB2B78A01D00007CD93378700980007CC7
+S31AFE005789FA3B78418200447FBFEB783F80FE01A01F00007009BC
+S31AFE00579E20004182000C83FE0010480000083BFF00087C1FE85D
+S31AFE0057B3004082000C387C202448006089A01F0000700980002E
+S31AFE0057C84082FFD07FFDFB78A01D00007009200041820010809F
+S31AFE0057DD1E00107C0903784800000C381D0008813E0010901E57
+S31AFE0057F200087C09E8502C1B00005400F87A393E0028B33D003D
+S31AFE005807027F49012E83FD0004408100307F1EC3787F7CDB78F4
+S31AFE00581C809E000080BE00047FE3FB7848005819801E000437AC
+S31AFE0058319CFFFF3BDE00087FFF02144082FFE07C188AA6540056
+S31AFE0058460FFE2C00000041820028813D0004A01D00022C000078
+S31AFE00585B00408100187C004BAC7C0004AC3400FFF03929001027
+S31AFE0058704181FFF0A01D00006000DC00B01D00008001002C7C7F
+S31AFE0058850803A6830100088321000C834100108361001483814D
+S31AFE00589A001883A1001C83C1002083E10024382100284E800062
+S31AFE0058AF208123000481690008A06B000054638BFE686300010F
+S31AFE0058C44E800020688401003004FFFF7C6021104E8000208142
+S31AFE0058D923000481690004800B000060000030900B00004E801D
+S31AFE0058EE00208123000481690004800B000054000732900B0038
+S31AFE005903004E8000209421FFD87C0802A69321000C9341001041
+S31AFE005918936100149381001893A1001C93C1002093E100249056
+S31AFE00592D01002C83230008839900047FDE9AA677DEFFFF3C80BA
+S31AFE0059420000388433503860000838A0000648000D297F788A90
+S31AFE005957A6577B0FFE39200000380000807C0903A661201000E2
+S31AFE00596C3CC00E007C0004AC7D398BA67CD88BA67C198BA67C3E
+S31AFE005981D88BA6392900104200FFE03D2004007C0004AC7D382F
+S31AFE0059968BA63FA000003CC0FE003CE0FE013D20000038C65D1B
+S31AFE0059AB1C38E7E7FC391D393839297A083860001C38800000AE
+S31AFE0059C07F25CB7848004845807D39383BFE3C00480048613806
+S31AFE0059D560001C48004C6D3860001C48004B15801E0A003B5E9F
+S31AFE0059EA0A005400073293FC0000901E0A00935C00047FE3FB76
+S31AFE0059FF783880000038A000A44800571138C000047CC903A649
+S31AFE005A142F9B0000391E2C00395E2C203D2000003D6000003817
+S31AFE005A29E0000038009000915C001C39294A50396B6210911CF4
+S31AFE005A3E0010911C0008911C0018915C0014915C000CB0EA0031
+S31AFE005A5302912A0004B00A0000392905F0394A00084200FFECB0
+S31AFE005A68A40AFFF87D09437860002000B00A0000394000047D0B
+S31AFE005A7D4903A6399F007238000000B009000291690004B0092A
+S31AFE005A920000396B05F0392900084200FFEC7D284B78A408FFB8
+S31AFE005AA7F83B60000160002000B0080000A13E09523BA00010F5
+S31AFE005ABC61290003B13E0952A01E0950390005F05400043AB073
+S31AFE005AD11E0950A13E09543B80FFFF7129FFFDB13E0954A01EB0
+S31AFE005AE609623D40DEBB7000FFCFB01E0962A13E0960614A209C
+S31AFE005AFBE37129FFCFB13E0960A01E096439600000600000309B
+S31AFE005B10B01E0964A13E09523860888861290A00B13E0952A0E1
+S31AFE005B251E09503880000F7000F5FFB01E0950813E0AEC38C0F1
+S31AFE005B3A05EE5529002E913E0AEC801E0AEC38E00040600000A2
+S31AFE005B4F3D901E0AEC813E0AEC38002C20552906B0913E0AEC2A
+S31AFE005B64937E0030B01F000039202C00B13F00029BBF00049BA8
+S31AFE005B79BF0005B11F0006939F0030915F0034917F0038917F9B
+S31AFE005B8E003C917F0040B07F0044B17F0044B09F0046B17F00C6
+S31AFE005BA348B0DF004AB0FF004CB11F004EB11F00503800000651
+S31AFE005BB8B17F00587C0903A6B17F005A3CA00000B17F005CB17B
+S31AFE005BCD7F005E38A533567D8963788C05FFFF98090000392909
+S31AFE005BE200014200FFF438000000B01F0078B01F0094B01F00C3
+S31AFE005BF796B01F0098B01F009AB01F009EB01F00A0B01F00A2E2
+S31AFE005C0C39200001B13E09C0A01E09C070060001418200187F15
+S31AFE005C21C9F378A00909C0700A00014082FFF87D3E4B783800DA
+S31AFE005C36FFFFB01A00103920001AB13A0014396000003C001026
+S31AFE005C4B88917A00046000000C901A00003920D555B13A000E17
+S31AFE005C603800280AB01A0008392000903D60FA10992B0000A0FB
+S31AFE005C751E096260000001B01E0962A13E09605529043CB13EFE
+S31AFE005C8A0960419E00103D6002007C0004AC7D788BA6813900FE
+S31AFE005C9F003C800000816900247F23CB78800B00003884335073
+S31AFE005CB47C0803A64E800021386000018001002C7C0803A683C5
+S31AFE005CC921000C83410010836100148381001883A1001C83C129
+S31AFE005CDE002083E10024382100284E8000209421FFF87C080264
+S31AFE005CF3A69001000C4BFFF7BD3860001C480049453860001C19
+S31AFE005D08480047ED8001000C7C0803A6382100084E8000209469
+S31AFE005D1D21FFF87C0802A69001000C3860001C4800466538604D
+S31AFE005D3200038001000C7C0803A6382100084E8000209421FF98
+S31AFE005D47F07C0802A693C1000893E1000C900100143D60000009
+S31AFE005D5C3D200000392937383BEB37347C1F4840418000207DEE
+S31AFE005D713E4B78813F00003BFFFFFC7D2803A64E8000217C1F4B
+S31AFE005D86F0404080FFEC800100147C0803A683C1000883E100B7
+S31AFE005D9B0C382100104E8000209421FFF87C0802A69001000C17
+S31AFE005DB03D200000800936B42C0000004182000C9003009448A0
+S31AFE005DC50000243D200000906939A0480018197C1602A6280097
+S31AFE005DDA7A124081000C38007A127C1603A68001000C7C080344
+S31AFE005DEFA6382100084E8000204E800020386000004E80002032
+S31AFE005E049421FFF07C0802A693E1000C90010014480005F13D15
+S31AFE005E192000003889361C800400083BE000002C0000004182A7
+S31AFE005E2E00307FE3FB787C9F2378809F000080BF000480DF00DF
+S31AFE005E430888FF000C3BFF0010480004C1801F00082C00000081
+S31AFE005E584082FFE0800100147C0803A683E1000C382100104EA7
+S31AFE005E6D8000203C000A007C0004AC7C108BA67C0004AC7C188D
+S31AFE005E828BA63C000C004C00012C7C108BA64C00012C7C00045F
+S31AFE005E97AC7C188BA63C0002004C00012C7C108BA64C00012C94
+S31AFE005EAC7C0004AC7C188BA64E8000209421FFF87C0802A69096
+S31AFE005EC101000C480000ED38007A127C1603A68001000C7C0876
+S31AFE005ED603A6382100084E8000203D20002F6129AF087C6349C6
+S31AFE005EEBD63C00431B6000DE837C0300967C63FE707C00967089
+S31AFE005F007D6300507D3602A67D605B782C000000396BFFFF4C33
+S31AFE005F15810020394BFFFF7C1602A67C0900004182FFF87C0952
+S31AFE005F2A03787D605B782C0000007D4B53784181FFE04E800005
+S31AFE005F3F209421FFF87C0802A69001000C3D20FF006129093095
+S31AFE005F5438000001B00900007C0006ACA00900007C0006AC54E9
+S31AFE005F6900AAFF38600000418200302060003A3D6000005460E0
+S31AFE005F7E103A396B33587D6B002E3D200000392934447C89003F
+S31AFE005F932E7D6803A64E800021546307FA8001000C7C0803A6D8
+S31AFE005FA8382100084E8000203D20000039493358390000407C32
+S31AFE005FBD0A402E3D20FE0039295DFC7C00480041820018800A14
+S31AFE005FD200403D20FE013929AF987C004800408200343D20FE5C
+S31AFE005FE70039295F403D600000380000007D2A412E6000DEADCA
+S31AFE005FFC396B34447C0B412E3D20000039293530380000007CA2
+S31AFE00601109412E3D60FE01800B2EF43D20FE0139292EB87D296B
+S31AFE00602602147D2903A64E8004203D20FF006129001480090087
+S31AFE00603B007C0006AC64000001900900007C0006AC480000E8C2
+S31AFE0060503D20FF0061290200A00900007C0006AC60000008B060
+S31AFE0060650900007C0006AC480000C83D20FF0061290200A0094A
+S31AFE00607A00007C0006AC60000004B00900007C0006AC4800004C
+S31AFE00608FA83D20FF0061290240A00900007C0006AC60000004ED
+S31AFE0060A4B00900007C0006AC480000883D20FF0061290220A084
+S31AFE0060B90900007C0006AC60000008B00900007C0006AC480000
+S31AFE0060CE00683D20FF0061290220A00900007C0006AC60000012
+S31AFE0060E304B00900007C0006AC480000483D20FF0061290940FA
+S31AFE0060F8800900007C0006AC60000080900900007C0006AC48E9
+S31AFE00610D0000283D20FF0061290948816900007C0006AC3C00C6
+S31AFE006122800054005D7E7D6B0378916900007C0006AC3D60FE8F
+S31AFE00613701800B30043D20FE0139292FA07D2902147D2903A6F7
+S31AFE00614C4E8004203D20FF0061290200A00900007C0006AC5435
+S31AFE00616100063E60000100B00900007C0006AC480000683D208C
+S31AFE006176FF0061290240A00900007C0006AC5400063E60000175
+S31AFE00618B00B00900007C0006AC480000443D20FF006129022080
+S31AFE0061A0A00900007C0006AC5400063E60000100B00900007CE1
+S31AFE0061B50006AC480000203D20FF0061290940800900007C0083
+S31AFE0061CA06AC6000E000900900007C0006AC3D60FE01800B30AC
+S31AFE0061DFEC3D20FE01392930887D2902147D2903A64E80042048
+S31AFE0061F43D20FF0061290014800900007C0006AC6000004090B1
+S31AFE0062090900007C0006AC4E8000203D20FF0061290200A009C6
+S31AFE00621E00007C0006AC60000008B00900007C0006AC4E80001C
+S31AFE006233203D20FF0061290200A00900007C0006AC600000040F
+S31AFE006248B00900007C0006AC4E8000203D20FF0061290240A0A0
+S31AFE00625D0900007C0006AC60000004B00900007C0006AC4E80D8
+S31AFE00627200203D20FF0061290220A00900007C0006AC600000B4
+S31AFE00628708B00900007C0006AC4E8000203D20FF006129022019
+S31AFE00629CA00900007C0006AC60000004B00900007C0006AC4E79
+S31AFE0062B18000203D20FF0061290940800900007C0006AC6000EE
+S31AFE0062C60080900900007C0006AC4E8000203D20FF006129099B
+S31AFE0062DB48816900007C0006AC3C00800054000FFE7D6B0378CA
+S31AFE0062F0916900007C0006AC4E8000207C1E22A6600000077C3A
+S31AFE0063051E23A64E8000209421FFF093E1000C54E0FFFE70FFE6
+S31AFE00631A00012F0000002F8300207CC0FE707D600026556B1FDC
+S31AFE00632FFE54A500267D400026554ADFFE7C0600507D4A00D070
+S31AFE0063447CE0002654E7EFFE7D6B00D060A808FF54000FFE7DF1
+S31AFE0063590858787D4950F860A508FD7CFF00387CAB5838714A16
+S31AFE00636E000D2F9F00007D654378548400267129001D7D4A4BD7
+S31AFE00638378608402003960000039000020419E005C546B402E49
+S31AFE0063987D55C3A67D70C3A67C93C3A67CB6C3A660A001007DCA
+S31AFE0063AD5DC3A67D78C3A67C9BC3A67C1EC3A6386300013CC692
+S31AFE0063C2FF807F8340007CC0FE707C0600507D2000265529EF55
+S31AFE0063D7FE54000FFE7D2700393C8400803CA500804082FFAC63
+S31AFE0063EC656020007C10C3A67C18C3A683E1000C382100104E9A
+S31AFE006401800020380000007C19C3A6380000207C0903A63920CD
+S31AFE0064160000380000007C15C3A67D30C3A67C13C3A67C16C3D8
+S31AFE00642BA67C1DC3A67D38C3A67C1BC3A67C1EC3A6392901002C
+S31AFE0064404200FFD83C00200060001F007C10C3A67C18C3A64E0F
+S31AFE0064558000209421FDE87CDE9AA674C6FFFF3D600000812BD9
+S31AFE00646A366C2C0900004082020039400030380000017D4903D3
+S31AFE00647FA6900B366CB12609C43800000039263C807D284B78C2
+S31AFE0064949806086038E62E0838A1000838862E003861000939ED
+S31AFE0064A981021198090000392900014200FFF839202E00B128A9
+S31AFE0064BE0002396000103940020938002E089968000599680021
+S31AFE0064D304B0080000B14800063920A800B1262E0838000101AD
+S31AFE0064E8B007000290A700047C8B2378B14B0002380000A59892
+S31AFE0064FD01000890AB0004B1262E00380000009806086439209E
+S31AFE006512005099260868380000019806086039200111B1260967
+S31AFE006527C0A00609C070090001418200187CC93378A00909C075
+S31AFE00653C700A00014082FFF87D264B7838000211B00609C0A141
+S31AFE0065512609C071200001418200187CC93378A00909C0700AF9
+S31AFE00656600014082FFF87D264B78392000007D2903A63800001C
+S31AFE00657B819806086C7D4902A6614AC3517D4903A6A00B00002D
+S31AFE00659070098000418200084200FFF4394001007D4903A63DD3
+S31AFE0065A520000039297E2439600000380000FF7C0959AE396BB9
+S31AFE0065BA00014200FFF87D8763787C6B1B787C0B3800418200B3
+S31AFE0065CF9C3CA00000880B00002C00004D40820080880B000159
+S31AFE0065E42C00004F40820074880B00022C000054408200688C22
+S31AFE0065F90B000839400000892B00015400402E7C084B787C0AB9
+S31AFE00660E4000396B00024080005438857E247C651B78880B0013
+S31AFE00662300396B00017D693A787D23FE707C0451AE7C604A78F6
+S31AFE0066387C0018507C00FE70394A00017CA900787C0A40007D17
+S31AFE00664D6000387C0B4B784180FFCC48000010396B00017C0B42
+S31AFE00666238004082FF703800000098060860382102184E800037
+S31AFE006677209421FFE87C0802A693A1000C93C1001093E10014F6
+S31AFE00668C9001001C7C7D1B787C9F23787CBE2B784BFFFDBD3DE8
+S31AFE0066A120000039697E24394B01007C0B50404080008457A89D
+S31AFE0066B6063E880B00007C00400040820054886B0001396B008A
+S31AFE0066CB027F83F0004FFEE3827C000026540007FE7C0000D0C9
+S31AFE0066E07FC900787C6000387C034B794081004C7C6903A67D72
+S31AFE0066F5695B787FE4FB7888090000392900019804000038842E
+S31AFE00670A00014200FFF048000028886B0001380300027D2B00FB
+S31AFE00671FEE5529063E2C0900FF4182000C7C0B50404180FF884F
+S31AFE006734386000008001001C7C0803A683A1000C83C1001083E3
+S31AFE006749E10014382100184E8000209421FFF87C0802A690017A
+S31AFE00675E000C480046758001000C7C0803A6382100084E80002A
+S31AFE006773203C80FF00608400007C9E9BA63CA0FA1060A5000107
+S31AFE0067883C60000060630000986500007C788AA63C600A007C56
+S31AFE00679D0004AC7C788BA63C600C007C0004AC7C788BA63C6079
+S31AFE0067B204007C0004AC7C788BA63C6001007C0004AC7C788B31
+S31AFE0067C7A63C6007007C0004AC7C788BA67C708AA63C600A005D
+S31AFE0067DC7C708BA64C00012C3C600C007C708BA64C00012C3C94
+S31AFE0067F16004007C708BA64C00012C7C0004AC3C6000606063AA
+S31AFE0068062400906400003C60FFFF6063FF88906400043C6000E9
+S31AFE00681B00606300C2B06402003C6055CC6063AA339064032055
+S31AFE00683090640324906403289064032C386000C3B06402203829
+S31AFE006845600083B06402403CA0FE0060A569E43CC0FE0060C6B5
+S31AFE00685A6AE47CE530507CE7167038C00000806500009064013B
+S31AFE00686F7C90C4016838A5000438C600017C0638004180FFE895
+S31AFE00688438600200B064017A3C60188060631000906401703C2A
+S31AFE00689960FE00606304013CA0FF8060A509609064010090A4CE
+S31AFE0068AE01043C600000606300813CA0FFC060A5040090640153
+S31AFE0068C30890A4010C3C600000606300803CA0000060A50400AF
+S31AFE0068D89064011090A401143C600000606300803CA00000603E
+S31AFE0068EDA504009064011890A4011C3C60FA00606304013CA051
+S31AFE006902FFE060A509309064012090A401243C60800060630012
+S31AFE006917013CA0A00060A501089064012890A4012C3C60FA21A7
+S31AFE00692C606300013CA0FFFF60A501089064013090A401343CDC
+S31AFE00694160FC00606300013CA0FF8060A509409064013890A413
+S31AFE006956013C3C6002006063000090640280806402845463658E
+S31AFE00696B3E2C030000418200103C605F506063D0004800000CA1
+S31AFE0069803C6000006063D000906402843C4000003C60FF0060DE
+S31AFE006995630014904300003C400000604200007C4210F87C56E9
+S31AFE0069AA03A6384000013C60FF0060630200B04300003CA0FA89
+S31AFE0069BF1060A500013C60000060630008986500007C6802A6B9
+S31AFE0069D47063FFFF6463FE007C6803A64E800020CFAFC0040F48
+S31AFE0069E9AFC4040CAF8C0410AF0C04F0AF0C00F3BF4805FFFF5C
+S31AFE0069FEC005FFFFC005CFAFC0040FAFC4040CAF8C0400AF0C2A
+S31AFE006A130407AF0C080CAF0C0401AF0C040FAF0C080CAF0C0474
+S31AFE006A2801AF0C040FAF0C080CAF0C0410AF0C04F0AFC000F3D7
+S31AFE006A3DBF4805FFFFC005CFFF00040FFF04040CFF0C0013FF60
+S31AFE006A524804FFFFC004FFFFC005FFFFC005FFFFC005CFFF0006
+S31AFE006A67040FFF04040CFF0C0003FF0C0C0CFF0C0003FF0C0C9A
+S31AFE006A7C0CFF0C0003FF0C0C0CFF0C0013FF4804FFFFC004FF9A
+S31AFE006A91FFC005FFFFC005FFFFC005FFFFC005FFFFC005FCFF21
+S31AFE006AA6C004C0FFC00401FFC0040FFFC0041FFFC004FFFFC05A
+S31AFE006ABB04FFFFC005FFFFC005FFFFC005FFFFC005FFFFC005EF
+S31AFE006AD0FFFFC005FFFFC007FFFFC007FFFFC007FFFFC0077066
+S31AFE006AE563000E3C80FA1060840001986400004E8000203C80D6
+S31AFE006AFAFA106084000138A0000A98A400003CA0000A7CA90368
+S31AFE006B0FA64200000038A0000C98A400003CA0000A7CA903A6B1
+S31AFE006B24420000003863FFFF2C0300004080FFD038A000069849
+S31AFE006B39A400003CA000147CA903A6420000004E8000203D2054
+S31AFE006B4EFE01392931705463073E7C6918AE4E8000209421FFE3
+S31AFE006B63F87C0802A69001000C3D200000806936882C03000025
+S31AFE006B784181000C480029494800000C3800FFFF90093688801B
+S31AFE006B8D01000C7C0803A6382100084E8000203803FF9F280065
+S31AFE006BA200054181000C3863FFA94E8000203923FFD055200630
+S31AFE006BB73E280000094181000C7D234B784E8000203803FFBF3E
+S31AFE006BCC280000054081000C3860FFFF4E8000203863FFC94E81
+S31AFE006BE18000209421FFE07C0802A690010024380000009801B5
+S31AFE006BF60018906100104BFFFF655463063E38810008480000BB
+S31AFE006C0B1D2C0300014082FFEC800100247C0803A6382100202B
+S31AFE006C204E8000209421FFF07C0802A693C1000893E1000C9031
+S31AFE006C350100147C9F2378897F00102C0B0000408200282C0313
+S31AFE006C4A002440820098392000013800FFFF901F0004993F0098
+S31AFE006C5F10917F0000917F000C4800007C2C0B000140820054CE
+S31AFE006C742C03002340820020815F0008817F000C380000007C2B
+S31AFE006C890A59AE39200002993F001048000050817F000C2C0BC3
+S31AFE006C9E0800418200E8801F0000813F00087C001A14901F006A
+S31AFE006CB3007C6959AE380B0001901F000C480000242C0B000238
+S31AFE006CC8408200245463063E4BFFFECD546320363800000390E5
+S31AFE006CDD7F0004981F001038600000480000AC2C0B00034082CC
+S31AFE006CF200985463063E4BFFFEA5801F0004893F00037C001B04
+S31AFE006D07787C090000901F0004418200103860002D480027714B
+S31AFE006D1C4800006C3860002B48002765813F0008880900022C8C
+S31AFE006D3100003A4082004C8869000083DF000C48002749813F2A
+S31AFE006D460008886900014800273D396000037C0BF04041810079
+S31AFE006D5B287FCAF3787FE4FB78812400087C0958AE7D2B4A142F
+S31AFE006D70396B00017C0B50409809FFFD4081FFE8386000014828
+S31AFE006D8500001038000000981F00103860FFFF800100147C0837
+S31AFE006D9A03A683C1000883E1000C382100104E8000209421FF70
+S31AFE006DAFE07C0802A69361000C9381001093A1001493C10018E7
+S31AFE006DC493E1001C900100243D20FE013B6931707C7C1B78380D
+S31AFE006DD9600024480026AD8BFC00003BC000002C1F00003BA05A
+S31AFE006DEE0000418200247FE3FB78480026917C1DFA143BDE0011
+S31AFE006E03017FFCF0AE541D063E2C1F00004082FFE438600023FC
+S31AFE006E184800267157A0E13E7C7B00AE4800266557A0073E7C3C
+S31AFE006E2D7B00AE480026594BFFFD2D5463067E2C03002B408291
+S31AFE006E42FF98800100247C0803A68361000C8381001083A100A6
+S31AFE006E571483C1001883E1001C382100204E8000209421FFD83F
+S31AFE006E6C7C0802A6936100149381001893A1001C93C100209356
+S31AFE006E81E100249001002C3D200000816939503D4000002C0BB2
+S31AFE006E96000038000000900A368C3F6000003F8000004081012F
+S31AFE006EAB383FC000003FA000003D2000008009395C2C00000011
+S31AFE006EC04182006C801C39503D60000028000003408100188044
+S31AFE006ED51E3954700900034082000C3BE0000448000034801C78
+S31AFE006EEA39503BE000012800000140810024800B395454000769
+S31AFE006EFFFE7C0000D07C00FE707C0900F8540007FE552907BC2F
+S31AFE006F147C1F4B78808B3954386100087FE5FB784800316148D4
+S31AFE006F29000014813E39543BE0000188090000980100083D2044
+S31AFE006F3E00008009368C2C00000040820098390000007C08F8B4
+S31AFE006F53004080006C3D20FE0138C9317038A100083CE00000FE
+S31AFE006F683C8000007D6828AE814739585560E13E7D2600AE9982
+S31AFE006F7D2A00008004368C394A00012C000000914739584082B0
+S31AFE006F9200505560073E7D2600AE396A0001992A0000801B3613
+S31AFE006FA78C916739582C00000040820030390800017C08F800E0
+S31AFE006FBC4180FFB0813D3950801E39547D3F48502C0900007CD5
+S31AFE006FD100FA14901E3954913D39504181FED88001002C7C083E
+S31AFE006FE603A6836100148381001883A1001C83C1002083E100CD
+S31AFE006FFB24382100284E8000209421FFE87C0802A693A1000CE2
+S31AFE00701093C1001093E100149001001C2C0600003D2000003D02
+S31AFE0070256000003D4000003D00000090893958906B395490AACC
+S31AFE00703A395090C8395C418200303FA0000038000000901D36DA
+S31AFE00704F8C813D368C4BFFFE15813D368C801D368C2C000000B4
+S31AFE00706441820010386000004800001C4BFFFDF93D60000081E6
+S31AFE0070792B39583800000098090000806B39588001001C7C08CC
+S31AFE00708E03A683A1000C83C1001083E10014382100184E800005
+S31AFE0070A3209421FFC07C0802A69281001092A1001492C100183F
+S31AFE0070B892E1001C9301002093210024934100289361002C93F5
+S31AFE0070CD81003093A1003493C1003893E1003C900100443D2023
+S31AFE0070E20000800939503B6000002C0000003D2000009369362D
+S31AFE0070F78C3E8000003EA00000408101703D2000008169395452
+S31AFE00710C3F000000880B00002C000000418201583EC000003F13
+S31AFE0071214000003EE000008016395C2C000000418200588015F0
+S31AFE00713639502800000340810018801A3958700900034082004A
+S31AFE00714B0C3BC000044800003C801539503BC000012800000159
+S31AFE0071604081002C801A3958540007FE7C0000D07C00FE707CF3
+S31AFE0071750900F8540007FE552907BC7C1E4B78480000083BC0BE
+S31AFE00718A00013BE000007C1FF000408000743FA000003F2000D3
+S31AFE00719F003B810008813D39548869000039290001913D395419
+S31AFE0071B45463063E4BFFF9E58019368C547B26362C00000040AD
+S31AFE0071C98200A8813839548869000039290001913839545463DC
+S31AFE0071DE063E4BFFF9BD8014368C7F631B782C000000547B0688
+S31AFE0071F33E4082007C7F7FE1AE3BFF00017C1FF0004180FFA054
+S31AFE0072088016395C2C00000041820018809A3958386100087F70
+S31AFE00721DC5F37848002EC54800000C813A39589B6900003D20EC
+S31AFE00723200008009368C2C0000004082003481373950801A39C2
+S31AFE007247587D3E48502C0900007C00F214901A39589137395040
+S31AFE00725C4081001481383954880900002C0000004082FEBC8045
+S31AFE0072710100447C0803A68281001082A1001482C1001882E18A
+S31AFE007286001C8301002083210024834100288361002C83810067
+S31AFE00729B3083A1003483C1003883E1003C382100404E800020AF
+S31AFE0072B09421FFE87C0802A693A1000C93C1001093E100149041
+S31AFE0072C501001C2C0600003D2000003D6000003D4000003D00AD
+S31AFE0072DA000090693954908B395890AA395090C8395C418200F6
+S31AFE0072EF303FA0000038000000901D368C813D368C4BFFFDA564
+S31AFE007304813D368C801D368C2C000000418200103860000048B2
+S31AFE0073190000104BFFFD893D200000806939588001001C7C0883
+S31AFE00732E03A683A1000C83C1001083E10014382100184E800062
+S31AFE007343209421FFF87C0802A69001000C480028713D2000005E
+S31AFE00735838000001900936708001000C7C0803A6382100084E3B
+S31AFE00736D8000209421FFE87C0802A693A1000C93C1001093E187
+S31AFE00738200149001001C7C9E23783BA000007C7F1B7893BE00C2
+S31AFE0073970048000024801E0000813F0000540020367C001B785A
+S31AFE0073AC39290001901E0000913F00003BBD0001813F000088A6
+S31AFE0073C16900002C030000418200104BFFF7D17C631B79408003
+S31AFE0073D6FFC87FA3EB788001001C7C0803A683A1000C83C10014
+S31AFE0073EB1083E10014382100184E8000207C842379394000008D
+S31AFE00740040820018380000309803000198030000386000024E12
+S31AFE007415800020392500077D20FE7054001F7E7D2902147D25FF
+S31AFE00742A1E71418200603D20FE0138C9317038E5FFFF54E01832
+S31AFE00743F387C88043068A90001200900007D2049143168FFFFF8
+S31AFE0074547C0B41107C0B4B79418200285508063E5500E13E7D7F
+S31AFE0074696600AE5509073E7C0648AE996300009C0300013863A4
+S31AFE00747E0001394A00027CE53B794082FFB07D4353784E800090
+S31AFE007493209421FFF07C0802A693E1000C900100143D2000006E
+S31AFE0074A880A939907C641B782C05000038600000408100843F19
+S31AFE0074BDE00000801F36942C00000041820010386000017C0851
+S31AFE0074D203A64E8000212C030001408200103D20000098693673
+S31AFE0074E79048000054801F36942123FFFF216900007D2B491426
+S31AFE0074FC216000007C0B01147C0B4B79418200343D200000803B
+S31AFE00751109396C2C00000041820024386000017C0803A64E800C
+S31AFE00752600212C030000418200103D20000038000001980936BC
+S31AFE00753B91800100147C0803A683E1000C382100104E8000201D
+S31AFE0075509421FFF07C0802A693E1000C900100143FE000008886
+S31AFE0075651F36902C000000418200343D200000800936942C0029
+S31AFE00757A0000418200243D20000080A939903860000038800072
+S31AFE00758F007C0803A64E80002138000000981F36903FE00000F3
+S31AFE0075A4881F36912C000000418200283D2000008009396C2C92
+S31AFE0075B900000041820018386000007C0803A64E8000213800F2
+S31AFE0075CE0000981F3691800100147C0803A683E1000C3821009B
+S31AFE0075E3104E8000209421FFF07C0802A693C1000893E1000CE5
+S31AFE0075F8900100143D200000800936842C0000004182001080B6
+S31AFE00760D0936847C0803A64E8000213D200000800939A42C0096
+S31AFE00762200004182001438000000900939A43BE0000248000065
+S31AFE0076371048007C1948007B4D7C7F1B7848007CD52C030000E7
+S31AFE00764C4182000848007D0148007CC14BFFFEF948007C713861
+S31AFE007661600003480028B538600003480028452C1F000041822A
+S31AFE00767600203FC00000813E36747FE3FB787D2803A64E800082
+S31AFE00768B212C0300004082FFEC48007C7D3D200000800936800C
+S31AFE0076A02C00000041820010800936807C0803A64E80002180F7
+S31AFE0076B50100147C0803A683C1000883E1000C382100104E8087
+S31AFE0076CA00209421FFB87C0802A6936100349381003893A10047
+S31AFE0076DF3C93C1004093E100449001004C7C7E1B783BE0000085
+S31AFE0076F43F6000003B810028801B39703BA000012C000000416D
+S31AFE00770982001C7FE3FB787F84E3787C0803A64E8000217C7D81
+S31AFE00771E1B78480000107FE3FB7848001D3990610028381FFF85
+S31AFE007733E02800001F7C0A03782F9D00003BFF00017F83E378B1
+S31AFE0077484181004C390000047D0903A6386100087C6B1B78385B
+S31AFE00775D000000392000007C0B49AE392900014200FFF8380068
+S31AFE00777200047C0903A67C6943787F8BE378880B0000396B0090
+S31AFE0077870198090000392900014200FFF0419E0030200A001F5B
+S31AFE00779C7C0001107C0500F85400077A54A507387FC4F3787C97
+S31AFE0077B1052B7838C000004BFFF84D7C7E1B7848000058212A18
+S31AFE0077C6001F7D2949107D2048F8540006F6552907387D2903F9
+S31AFE0077DB782C0900007FCBF378380000783929FFFF4182001848
+S31AFE0077F02C090000980B0000396B00013929FFFF4082FFF028CA
+S31AFE0078050A001F4181000C3BDE0010480000083BDE00082C1F8E
+S31AFE00781A00464081FEE08001004C7C0803A6836100348381005A
+S31AFE00782F3883A1003C83C1004083E10044382100484E800020ED
+S31AFE0078449421FFD07C0802A67D8000269381002093A100249339
+S31AFE007859C1002893E1002C900100349181001C88030000386374
+S31AFE00786E00012C0000507C9D237890610008392000003BC00083
+S31AFE0078834740820070386100083881000C4BFFFAE12C030000B9
+S31AFE007898418200288121000888090000392900012C00003D9154
+S31AFE0078AD210008408200108121000C3BC90001480000383D2037
+S31AFE0078C2FE01880931887FA4EB782C0000003969318841820094
+S31AFE0078D7D8880B0000980400008D2B0001388400012C090000E6
+S31AFE0078EC4082FFEC480000BC7D3F4B787C1FF000408000803B4D
+S31AFE007901800000397FFFE020AB001F7CA52910392100103881EF
+S31AFE007916000C7CA028F87C8428787CA9483854A5077A540007F6
+S31AFE00792B38806100082A0B001F7CA503787D24237893810010D2
+S31AFE00794038C000004BFFF96D808100107FE3FB7848001B2541D7
+S31AFE00795591001081210008392900104800000C812100083929FC
+S31AFE00796A0008912100083BFF00017C1FF0004180FF8C3D20FED5
+S31AFE00797F018809318C7FA4EB782C0000003969318C4182001CB0
+S31AFE007994880B0000980400008D2B0001388400012C09000040C0
+S31AFE0079A982FFEC3800000098040000800100348181001C7C082D
+S31AFE0079BE03A68381002083A1002483C1002883E1002C7D808121
+S31AFE0079D320382100304E8000209421FF287C0802A693A100CCFC
+S31AFE0079E893C100D093E100D4900100DC3BC000003D6000017C98
+S31AFE0079FD7D1B789BCB88B4893D00003809FFC12800003B4181D3
+S31AFE007A1208B43D60FE01396B31E05400103A7D4B002E3D20FE5F
+S31AFE007A2701392931E07D4A4A147D4903A64E8004204800781973
+S31AFE007A3C4800774D3D20FE01392931705460E73E7D0900AE5465
+S31AFE007A5163073E7CE918AE3D40000138000053392A88B4980AFF
+S31AFE007A6688B439600000996900039909000198E90002480008B7
+S31AFE007A7B603FA00001387D88B43880080038A000204BFFF96D59
+S31AFE007A903BBD88B4380000007C1D19AE4800083C3D20FE0188A1
+S31AFE007AA50931903D6000012C000000396B88B43949319041824E
+S31AFE007ABA07E8880A00008D2A0001980B00002C090000396B00FE
+S31AFE007ACF014082FFEC480007CC387D000148000B9D480007F8E8
+S31AFE007AE4387D000148000D61480007EC3C600001386388B44B23
+S31AFE007AF9FFFBD5480007DC881D00012C0000004082004048005E
+S31AFE007B0E09313D20FE018809318C3D6000012C000000396B8884
+S31AFE007B23B43949318C41820778880A00008D2A0001980B000027
+S31AFE007B382C090000396B00014082FFEC4800075C381D0001901C
+S31AFE007B4D0100883BC1008C3BE100887FE3FB787FC4F3784BFF9D
+S31AFE007B62F8112C030000418200A481210088880900003929004E
+S31AFE007B77012C00002C912100884082008C7FE3FB7838810090F6
+S31AFE007B8C4BFFF7E52C030000418200788121008888090000395C
+S31AFE007BA12900012C00002C91210088408200608081008C2C0430
+S31AFE007BB600004182003880610090480008BD7C641B7941820006
+S31AFE007BCB148061008880A1008C38C000004BFFF6D98001008C59
+S31AFE007BE0812100887C0002147D29021491210088812100888828
+S31AFE007BF50900002C00002C4082001038090001900100884BFF9F
+S31AFE007C0AFF5081210088880900002C0000004082003C3D20FED2
+S31AFE007C1F018809318C3D6000012C000000396B88B43949318C14
+S31AFE007C344182066C880A00008D2A0001980B00002C09000039A7
+S31AFE007C496B00014082FFEC480006503D20FE01880931D03D60E0
+S31AFE007C5E00012C000000396B88B4394931D041820634880A00EE
+S31AFE007C73008D2A0001980B00002C090000396B00014082FFEC16
+S31AFE007C88480006183C8000017FA3EB78388488B44BFFFBAD4809
+S31AFE007C9D00063C381D00013BE10094900100947FE3FB783881D3
+S31AFE007CB200984BFFF6BD2C0300004182009081210094880900DB
+S31AFE007CC700392900012C00002C91210094408200787FE3FB7894
+S31AFE007CDC3881009C4BFFF6912C03000041820064806100983C5E
+S31AFE007CF180000180A1009C388488B438C000014BFFF3052C03DA
+S31AFE007D060000408205D03D60FE01880B31D43D2000012C00000F
+S31AFE007D1B00394988B4396B31D44182001C880B00008D2B0001BD
+S31AFE007D30980A00002C090000394A00014082FFEC380000009862
+S31AFE007D450A0000480005903D20FE01880931D03D6000012C0086
+S31AFE007D5A0000396B88B4394931D04182053C880A00008D2A0060
+S31AFE007D6F01980B00002C090000396B00014082FFEC4800052063
+S31AFE007D843BC00001381D00013BE100A0900100A07FE3FB78389A
+S31AFE007D998100A44BFFF5D52C030000418201F8812100A08809DA
+S31AFE007DAE0000392900012C00002C912100A0408201E07FE3FBAF
+S31AFE007DC378388100A84BFFF5A92C030000418201CC806100A0A6
+S31AFE007DD888030000386300012C00003A906100A0408201B42CD1
+S31AFE007DED1E000041820124800100A82C000000418200A8800136
+S31AFE007E0200A83BA000007C1D0040408000543941000881610093
+S31AFE007E17A0892B0000396B00017D204B782C00007D7D2AE9AE12
+S31AFE007E2C916100A040820018880B0000392B0001600000207CDD
+S31AFE007E410AE9AE912100A03BBD0001281D007F41810010800125
+S31AFE007E5600A87C1D00404180FFB8808100A4386100087FA5EBC5
+S31AFE007E6B78480022797C03E80040820024812100A8800100A4E7
+S31AFE007E807D3D48502C0900007C00EA14900100A4912100A84019
+S31AFE007E9582FF6C800100A82C0000004082003C3D20FE018809A7
+S31AFE007EAA318C3D6000012C000000396B88B43949318C41820353
+S31AFE007EBFE4880A00008D2A0001980B00002C090000396B0001FF
+S31AFE007ED44082FFEC480003C83D20FE01880931D43D6000012C19
+S31AFE007EE9000000396B88B4394931D4418203AC880A00008D2A5E
+S31AFE007EFE0001980B00002C090000396B00014082FFEC480003F5
+S31AFE007F1390808100A480A100A838C000014BFFF3912C03000061
+S31AFE007F284182003C3D20FE018809318C3D6000012C0000003994
+S31AFE007F3D6B88B43949318C4182035C880A00008D2A0001980B36
+S31AFE007F5200002C090000396B00014082FFEC480003403D20FEA9
+S31AFE007F6701880931D43D6000012C000000396B88B4394931D439
+S31AFE007F7C41820324880A00008D2A0001980B00002C09000039A7
+S31AFE007F916B00014082FFEC480003083D20FE01880931D83D60D8
+S31AFE007FA600012C000000396B88B4394931D8418202EC880A00E7
+S31AFE007FBB008D2A0001980B00002C090000396B00014082FFECCB
+S31AFE007FD0480002D0881D0000395D000168090053216900007D77
+S31AFE007FE52B491468000043216000007C0B01147C0B4B7939604F
+S31AFE007FFA0000914100AC916100B03BE100AC418200287FE3FB3E
+S31AFE00800F78388100B04BFFF35D812100AC880900002C00003B97
+S31AFE0080244082000C38090001900100AC7FE3FB78388100B44B69
+S31AFE008039FFF3392C0300004182000C806100B44800721D386001
+S31AFE00804E000348001EC93860000348001E59806100B02C0300CD
+S31AFE008063004182004C3D2000008009367C2C0000004182001C52
+S31AFE0080788009367C7C0803A64E8000217C631B794082000890CB
+S31AFE00808D6100B0800100B02C00000041820018380000099001BF
+S31AFE0080A200B0386000094800033D48000238480015892C030055
+S31AFE0080B7004182001838000063981D00003D20000038000001EF
+S31AFE0080CC900936A4881D000068090053216900007D2B491468C8
+S31AFE0080E1000073216000007C0B01147C0B4B794182002438602C
+S31AFE0080F600004BFFF39D3D20000139291CE43D600000912B3648
+S31AFE00810BA0480071814800000C386000014BFFF37D386000033F
+S31AFE00812048001DF93860000348001D893860FFFF480001B83D8B
+S31AFE008135200000800936787C0803A64E800021386000014800DD
+S31AFE00814A01A048001BB5480001883C800001387D0001388488DB
+S31AFE00815FB438A0012C48000E11480001703C800001387D0001BB
+S31AFE008174388488B438A0012C48000D8148000158381D00019098
+S31AFE0081890100B8386100B8388100BC4BFFF1DD2C030000418254
+S31AFE00819E007C812100B888090000392900012C00002C912100F4
+S31AFE0081B3B84082006488090000392900012C000043912100B808
+S31AFE0081C840820010806100BC480027354800000C806100BC4852
+S31AFE0081DD0027213D20FE018809318C3D6000012C000000396B29
+S31AFE0081F288B43949318C418200A8880A00008D2A0001980B00A1
+S31AFE008207002C090000396B00014082FFEC4800008C3D20FE01A7
+S31AFE00821C880931D03D6000012C000000396B88B4394931D04149
+S31AFE008231820070880A00008D2A0001980B00002C090000396B7C
+S31AFE00824600014082FFEC48000054381D0001900100C038610095
+S31AFE00825BC0388100C44BFFF1112C030000408200443D20FE01F0
+S31AFE008270880931DC3D6000012C000000396B88B4394931DC41DD
+S31AFE00828582001C880A00008D2A0001980B00002C090000396B7C
+S31AFE00829A00014082FFEC38000000980B0000480000303C60FE30
+S31AFE0082AF013863318C4BFFEAF9806100C4480012414800001890
+S31AFE0082C43C8000017FA3EB78388488B438A0012C48001E753C4B
+S31AFE0082D9600001386388B44BFFEACD38600000800100DC7C08DA
+S31AFE0082EE03A683A100CC83C100D083E100D4382100D84E800093
+S31AFE008303209421FFE87C0802A693A1000C93C1001093E100144D
+S31AFE0083189001001C3FA00001389D88B448001A1D387D88B44BF3
+S31AFE00832DFFEA818001001C7C0803A683A1000C83C1001083E11B
+S31AFE0083420014382100184E8000209421FFF07C0802A693E1006B
+S31AFE0083570C900100143D200000800936882C00000040800008C4
+S31AFE00836C4BFFFF993FE00001387F80B44BFFE86D387F80B44B36
+S31AFE008381FFF65D7C631B794182FFEC7C6318F854630FFE80013C
+S31AFE00839600147C0803A683E1000C382100104E8000204E8000F8
+S31AFE0083AB209421FFF87C0802A69001000C4BFFEF8D48001849B5
+S31AFE0083C03860002B480010C58001000C7C0803A6382100084E5B
+S31AFE0083D58000203D200000906936884E8000209421FFF87C08BD
+S31AFE0083EA02A69001000C3D20FE01392931705460E73E7D490037
+S31AFE0083FFAE5463073E7D0918AE3D60000138000058386B88B462
+S31AFE008414980B88B4392000009943000199030002992300034B92
+S31AFE008429FFE9858001000C7C0803A6382100084E8000203D2067
+S31AFE00843E000138A00000392991043CC0000038E0FFFF3C800087
+S31AFE008453003D6000013D4000003D0000003800000190E639646C
+S31AFE00846890AB90B4912A39689008369890A439604E800020946B
+S31AFE00847D21FFF07C0802A693C1000893E1000C900100143D20CC
+S31AFE0084920000800936987C7F1B782C0000007C9E237840820049
+S31AFE0084A7084BFFFF952C1F0012418100243D600000800B3968CA
+S31AFE0084BC3D200001392991047C0900507C00F214280000804013
+S31AFE0084D181000C386000004800006C3CE00000800739647C1FDE
+S31AFE0084E600004182004C3D000000800839607C1F0000418000B4
+S31AFE0084FB20395F00013D200001392990B4554B103A3800000089
+S31AFE0085107C09592E914839603D600000814B39683D2000013933
+S31AFE0085252990B457E0103A7D49012E93E739643D2000008069FD
+S31AFE00853A39687C03F21490093968800100147C0803A683C100C2
+S31AFE00854F0883E1000C382100104E8000209421FFD87C0802A68C
+S31AFE008564936100149381001893A1001C93C1002093E1002490DE
+S31AFE00857901002C3D600000800B369C7C7D1B782C0000007C9EF0
+S31AFE00858E23787CBF2B7840820058380000013D200001392991B7
+S31AFE0085A384900B369C39400000380000087C0903A6390A0001A3
+S31AFE0085B8554BC00E5547103A2C0B00005560083C4080000C6CEE
+S31AFE0085CD0004C168001DB77C0B03784200FFE87D0A4378280AF5
+S31AFE0085E200FF7C09392E4081FFC43D600000380000003D2000DF
+S31AFE0085F7013B699184900B368C3F800000480000248921000877
+S31AFE00860C57E0463E7C004A785400103A7D7B002E57E9402E7D6D
+S31AFE0086213F5A783BBD00012C1E00003BDEFFFF41820020386159
+S31AFE00863600087FA4EB7838A0000148001A45801C368C2C000093
+S31AFE00864B004182FFBC7FE3FB788001002C7C0803A683610014F1
+S31AFE0086608381001883A1001C83C1002083E10024382100284EEA
+S31AFE0086758000209421FFD87C0802A693A1001C93C1002093E15C
+S31AFE00868A00249001002C3D20000138000000980988B43BA98817
+S31AFE00869FB47C691B7890610008880900002C000043408200F4E7
+S31AFE0086B4880900012C000052408200E88BC900022C1E004340D0
+S31AFE0086C98200DC880900032C00003A408200D0380900043BE14D
+S31AFE0086DE0008900100087FE3FB783881000C4BFFEC852C03005E
+S31AFE0086F300418201388121000888090000392900012C00002C7C
+S31AFE00870891210008408201207FE3FB78388100104BFFEC592C62
+S31AFE00871D0300004182010C8061000C8081001038A0FFFF4BFF52
+S31AFE008732FE2D3D20000083E9368C2C1F0000418200403D20FECF
+S31AFE00874701880931D07FA3EB782C000000396931D04182001C53
+S31AFE00875C880B00008D2B0001980300002C09000038630001400C
+S31AFE00877182FFEC3800000098030000480000B07C641B78387D8F
+S31AFE008786000138A000204BFFEC6D3D2000019BC988B4386300A5
+S31AFE00879B017FFD19AE4800008C81210008880900007D2B4B7807
+S31AFE0087B02C00004C386900017C09037841820020418100102CB5
+S31AFE0087C50000434182003C4800004C2C0900504182001C480019
+S31AFE0087DA00403C800001388488B438A0012C4800095D48000096
+S31AFE0087EF403C800001388488B438A0012C48000A914800002C20
+S31AFE0088043C800001388488B438A00800480005FD480000183CE0
+S31AFE0088198000017D635B78388488B438A0012C48001911800122
+S31AFE00882E002C7C0803A683A1001C83C1002083E1002438210053
+S31AFE008843284E8000209421FFF87C0802A69001000C8803000006
+S31AFE0088582C000070408200183C800001388488B438A0012C488F
+S31AFE00886D000709480000143C800001388488B438A0012C480084
+S31AFE00888218C18001000C7C0803A6382100084E8000203923019E
+S31AFE0088971C7C0348404C800020800400003884000490030000E2
+S31AFE0088AC386300047C0348404180FFEC4E80002038000045985E
+S31AFE0088C1030000392000309D230001380000329C0300013863AC
+S31AFE0088D600014E8000203800004F980300003920004B9D230014
+S31AFE0088EB01386300014E8000209421FFE87C0802A693A1000CE1
+S31AFE00890093C1001093E100149001001C7C9E23797C7D1B783B48
+S31AFE008915E0000041820038887D00003BBD00014BFFE27937DEB6
+S31AFE00892AFFFF7FFF1B7857E920367C00002654001FFE7C000000
+S31AFE00893FD07D2900787FE000387C1F4B784082FFD07FE3FB78D6
+S31AFE0089548001001C7C0803A683A1000C83C1001083E10014380C
+S31AFE0089692100184E8000209421FFE87C0802A69381000893A1B6
+S31AFE00897E000C93C1001093E100149001001C7C7D1B787C9C2374
+S31AFE00899378388000024BFFFF5D907C0000387D00028001001C93
+S31AFE0089A87C0803A68381000883A1000C83C1001083E100143849
+S31AFE0089BD2100184E8000209421FFE87C0802A69381000893A162
+S31AFE0089D2000C93C1001093E100149001001C7C7D1B787C9C2320
+S31AFE0089E778388000084BFFFF09907C0000387D00088001001C87
+S31AFE0089FC7C0803A68381000883A1000C83C1001083E1001438F5
+S31AFE008A112100184E8000203803FF9F280000054181001438030E
+S31AFE008A26FFA990040000386000014E8000203803FFBF28000053
+S31AFE008A3B054181000C3803FFC94BFFFFE43863FFD05460063EBD
+S31AFE008A50280000094081000C386000004E80002090640000385D
+S31AFE008A656000014E8000209421FFE87C0802A693A1000C93C14D
+S31AFE008A7A001093E100149001001C7C7D1B78887D00003BBD0015
+S31AFE008A8F014BFFFF897FA3EB788001001C7C0803A683A1000C7C
+S31AFE008AA483C1001083E10014382100184E8000203D20FE0154DE
+S31AFE008AB980E13E392932D07D6900AE5484073E7C0920AE9963A1
+S31AFE008ACE00009C030001386300014E8000209421FFE07C08024B
+S31AFE008AE3A69381001093A1001493C1001893E1001C90010024B7
+S31AFE008AF87C7F1B787C9C23783BC000003BA10008480000188065
+S31AFE008B0D01000857DE20365400073E7FDE03783BFF0001887F08
+S31AFE008B2200007FA4EB784BFFFEF12C0300004082FFDC93DC0040
+S31AFE008B37007FE3FB78800100247C0803A68381001083A1001432
+S31AFE008B4C83C1001883E1001C382100204E8000209421FFE87CB5
+S31AFE008B610802A69381000893A1000C93C1001093E10014900172
+S31AFE008B76001C7C7F1B783B9F00107C1FE0407C9E237840800022
+S31AFE008B8B38887F00004BFFE00D8C1F00017C7D1B787C03037829
+S31AFE008BA04BFFDFFD57BD20363BFF00017FBD1B787C1FE0409BCC
+S31AFE008BB5BE00003BDE00014180FFD07FE3FB788001001C7C0849
+S31AFE008BCA03A68381000883A1000C83C1001083E1001438210088
+S31AFE008BDF184E8000209421FFE87C0802A693A1000C93C100100B
+S31AFE008BF493E100149001001C7C9D237857A4463E4BFFFEB157B0
+S31AFE008C09A4863E4BFFFEA957A4C63E4BFFFEA157A4063E4BFF88
+S31AFE008C1EFE998001001C7C0803A683A1000C83C1001083E100F4
+S31AFE008C3314382100184E8000209421FFE87C0802A693A1000CAD
+S31AFE008C4893C1001093E100149001001C7C9E2378881E00003BE4
+S31AFE008C5DE000002C000000393E0001418200207FFDFB78880917
+S31AFE008C7200003BBD00012C000000392900014082FFF07FBFEB87
+S31AFE008C87782F9F00C97C0000265400EFFE7C0000D07C0900F819
+S31AFE008C9C7FE00038712900C87C1F4B7857E4063E7FFDFB784BAF
+S31AFE008CB1FFFE052C1D00003BFFFFFF4081005C7FFDFB787FC4D8
+S31AFE008CC6F378896400007FAAEB78210B00007C085914696900C2
+S31AFE008CDB23210900007D2849147C004B783000FFFF7C00011037
+S31AFE008CF07C0900F87129002A7D6B00387D6B4B782C0A00009990
+S31AFE008D0563000038840001386300013BBDFFFF4181FFB48001AD
+S31AFE008D1A001C7C0803A683A1000C83C1001083E10014382100A2
+S31AFE008D2F184E8000209421FFF07C0802A693C1000893E1000C79
+S31AFE008D44900100143BC300107C03F0407C9F237840800018889E
+S31AFE008D599F00003BFF00014BFFFD557C03F0404180FFF08001AB
+S31AFE008D6E00147C0803A683C1000883E1000C382100104E8000B8
+S31AFE008D8320392000047D2903A63800000098030000386300019C
+S31AFE008D984200FFF87C80C670980300007C8986709D2300017C84
+S31AFE008DAD8046709C030001988300014E80002039630004386095
+S31AFE008DC20000394000037D405378892B00002C000000546040C0
+S31AFE008DD72E7C034B78396B0001394AFFFF4181FFE44E8000205A
+S31AFE008DEC380000087C0903A688040000388400019803000038E4
+S31AFE008E016300014200FFF04E8000209421FFE87C0802A693C1B9
+S31AFE008E16001093E100149001001C3BC100087C9F23787FC3F30F
+S31AFE008E2B7848001AED2C0300004182003038000051981F000005
+S31AFE008E40392000439D3F00017FC3F3784BFFFF717C641B783B8B
+S31AFE008E55FF00017FE3FB784BFFFD894800000C7FE3FB784BFFEC
+S31AFE008E6AFA557C7F1B7838000000981F00008001001C7C0803FF
+S31AFE008E7FA683C1001083E10014382100184E8000209421FFC88D
+S31AFE008E947C0802A693A1002C93C1003093E100349001003C3B05
+S31AFE008EA9A100207C641B787FA3EB784BFFFED17FA3EB783881A0
+S31AFE008EBE000848001B012C030000418200148001001038600000
+S31AFE008ED3012C00000040820008386000008001003C7C0803A60D
+S31AFE008EE883A1002C83C1003083E10034382100384E8000209402
+S31AFE008EFD21FFE07C0802A693A1001493C1001893E1001C90015B
+S31AFE008F1200247C7D1B787C9F2378388100084BFFFBBD7C1D186C
+S31AFE008F270041820020806100084BFFFF612C03000041820010B9
+S31AFE008F3C7FE3FB784BFFF99D4800000C7FE3FB784BFFF9713852
+S31AFE008F5100000098030000800100247C0803A683A1001483C11E
+S31AFE008F66001883E1001C382100204E8000209421FFD87C0802E1
+S31AFE008F7BA693A1001C93C1002093E100249001002C8923000072
+S31AFE008F903800FFFF2C0900677C9F2378900100083863000141CA
+S31AFE008FA582008C418100102C09006341820024480000C02C0917
+S31AFE008FBA0070408200B8388100084BFFFAA9388100104BFFFBF8
+S31AFE008FCF91480000B0880300002C00002D4082002088030001AE
+S31AFE008FE42C000031408200143D20000038000000900939904802
+S31AFE008FF90000103C800000388439904BFFFAD93D2000008069AB
+S31AFE00900E39902C030000418200104BFFFE792C030000418200CB
+S31AFE009023547FE3FB784BFFF8B5480000503FA00000389D398C03
+S31AFE0090384BFFFAA5809D398C386100104BFFFD41801D398C2C95
+S31AFE00904D00FFFF4182000C2C0000004082001038000002900174
+S31AFE00906200084800001C3800000190010008480000107FE3FB02
+S31AFE009077784BFFF8457C7F1B78800100082C00000041820028B3
+S31AFE00908C418100102C00FFFF4182008C4800007C2C000001414E
+S31AFE0090A18200242C00000241820060480000683D20000139294F
+S31AFE0090B61CE43D600000912B36A0480000603FA000013C80002E
+S31AFE0090CB0138841CE4387D1E004BFFF7C1386100103880004752
+S31AFE0090E038BD1E00480019352C03000041820028381D1E003D04
+S31AFE0090F52000007FE3FB78900936A04BFFF7DD480000187FE31E
+S31AFE00910AFB784BFFF7D14800000C7FE3FB784BFFF7A57C7F1BA2
+S31AFE00911F7838000000981F00008001002C7C0803A683A1001CB6
+S31AFE00913483C1002083E10024382100284E8000209421FFD07CC7
+S31AFE0091490802A693210014934100189361001C9381002093A131
+S31AFE00915E002493C1002893E1002C900100347C9F23787CBD2BD9
+S31AFE00917378388100084BFFF8F53881000C3F8000004BFFF7EDC1
+S31AFE009188389C397C4BFFF9D1380000513BBDFFE67F3FEA149877
+S31AFE00919D1F00003920004D9D3F00013BFF00017FFAFB787F432E
+S31AFE0091B2D378388000004BFFF8FD7C7F1B787FFEFB78380000AC
+S31AFE0091C730389C397C981E0000387E00014BFFFB617C7F1B7835
+S31AFE0091DC3B8000003F600000480000247FE3FB78389D39844B02
+S31AFE0091F1FFFB457C7F1B78389D39843B9C0001387B397C4BFF7C
+S31AFE009206FBE97C1FC840408000408001000C7C1C0000408000E3
+S31AFE00921B34806100083C8000003FA000003884397C38BD39845F
+S31AFE009230480017352C03000038000000900100084082FFA838F0
+S31AFE009245000031981E00007F43D3785784063E4BFFF861380022
+S31AFE00925A0000981F0000800100347C0803A683210014834100E6
+S31AFE00926F188361001C8381002083A1002483C1002883E1002C66
+S31AFE009284382100304E8000209421FFC07C0802A693A1003493BF
+S31AFE009299C1003893E1003C90010044380000007C9F23789001BF
+S31AFE0092AE001C900100109001001490010018388100204BFFF782
+S31AFE0092C3053BA100287FA4EB784BFFF8917FA3EB7838810008EA
+S31AFE0092D8480016E92C030000418200E438000071981F000039C7
+S31AFE0092ED2000709D3F000180810020387F00014BFFF8E938813E
+S31AFE00930200084BFFFA31800100207C7F1B787009000241820068
+S31AFE00931720388000024BFFF8C9388000024BFFF79188810013B0
+S31AFE00932C4BFFF7897C7F1B788001002070090004418200288047
+S31AFE0093410100142C0000004182001C7FE3FB78388000044BFF18
+S31AFE009356F891808100144BFFF8E17C7F1B788001002070090095
+S31AFE00936B0841820028800100182C0000004182001C7FE3FB787D
+S31AFE009380388000084BFFF861808100184BFFF8B17C7F1B788057
+S31AFE00939501002070090010418200348001001C2C000000418292
+S31AFE0093AA00287FE3FB78388000104BFFF8318081001C4BFFF813
+S31AFE0093BF814800000C7FE3FB784BFFF4F57C7F1B7838000000F2
+S31AFE0093D4981F0000800100447C0803A683A1003483C100388380
+S31AFE0093E9E1003C382100404E8000209421FFD87C0802A693611B
+S31AFE0093FE00149381001893A1001C93C1002093E1002490010029
+S31AFE0094132C3B8100087C7D1B787C9B23787CA42B787F83E378F2
+S31AFE0094284BFFF95D7F83E3787FA4EB787F65DB784800163D8056
+S31AFE00943D01002C7C0803A6836100148381001883A1001C83C124
+S31AFE009452002083E10024382100284E8000203D2000008169366D
+S31AFE009467A05463103A7C63582E4E8000203D200000816936A0DB
+S31AFE00947C5463103A7C83592E4E8000209421FFF87C0802A690FA
+S31AFE00949101000C3D20000039293200816900185464063E806BDB
+S31AFE0094A60000800B000C7C0803A64E8000218001000C7C0803E6
+S31AFE0094BBA6382100084E8000209421FFF87C0802A69001000C2E
+S31AFE0094D03D2000003929320081690018806B0000800B00107C8E
+S31AFE0094E50803A64E8000218001000C7C0803A6382100084E80E5
+S31AFE0094FA00209421FFF87C0802A69001000C3D200000392932D3
+S31AFE00950F00816900187C651B78806B0000800B0014388000008B
+S31AFE0095247C0803A64E8000218001000C7C0803A6382100084EA9
+S31AFE0095398000209421FFE87C0802A693A1000C93C1001093E199
+S31AFE00954E00149001001C3FC00000817E39943D2000002C0B00E4
+S31AFE00956300380000003BBE3994900936A47C7F1B784182001815
+S31AFE0095787D635B7848000055801E39942C0000004082002C8184
+S31AFE00958D3F00003C007D82913D000460001008901F000093FEC1
+S31AFE0095A239943860000348000971386000034800090180010018
+S31AFE0095B71C7C0803A683A1000C83C1001083E1001438210018E5
+S31AFE0095CC4E8000209421FFF87C0802A69001000C3D2000008145
+S31AFE0095E16936A42C0B0000408200183D200000800939943949E8
+S31AFE0095F639947C0300004182000C3860000048000024800A00B3
+S31AFE00960B04916939949003000038600003480009013860000360
+S31AFE00962048000891386000018001000C7C0803A6382100084E4E
+S31AFE0096358000203D200000800939943120FFFF7C6901104E80B6
+S31AFE00964A00209421FFF87C0802A69001000C2C03000041820080
+S31AFE00965F483D400000812A36A83929FFFF2C090000912A36A876
+S31AFE009674418100683D20000039293200816900183800000090F8
+S31AFE0096890A36A8806B0000800B0014388000057C0803A64E809E
+S31AFE00969E00214800003C3D600000812B36A8392900012C09004F
+S31AFE0096B301912B36A8408200243D20000039293200816900182A
+S31AFE0096C838800004806B0000800B00147C0803A64E80002180A7
+S31AFE0096DD01000C7C0803A6382100084E8000209421FFF87C08BB
+S31AFE0096F202A69001000C3D2000003929320081690018806B003C
+S31AFE00970700800B00107C0803A64E8000218001000C7C0803A6D8
+S31AFE00971C382100084E8000209421FFC87C0802A692C100109248
+S31AFE009731E10014930100189321001C934100209361002493818E
+S31AFE009746002893A1002C93C1003093E100349001003C2C040059
+S31AFE00975B0D418201B43D600000814B36AC3D200001392995844C
+S31AFE0097707C8951AE2C04000A394A0001914B36AC3F40000041A0
+S31AFE00978582000C2C0A0064408201843D2000003929320083C91F
+S31AFE00979A00187EE000A67EE0BB7839600000516004207C00011E
+S31AFE0097AF243D20FE013AC932E4807E0000813E000C3880002463
+S31AFE0097C47D2803A63B6000003BE0004F4E800021807E000081CB
+S31AFE0097D93E000C3880004F7D2803A64E800021801A36AC7C1BD6
+S31AFE0097EE0000408000703D2000013D60FE013B0995843B2B3243
+S31AFE009803E47D38D8AE807E00005520E13E7F9900AE817E000CCA
+S31AFE0098187F84E3787D6803A65529073E7FB948AE3B7B00014E55
+S31AFE00982D800021807E0000813E000C7FA4EB787D2803A64E8016
+S31AFE0098420021801A36AC7F9FE214579F063E7C1B00007FBFEA63
+S31AFE0098571457BF063E4180FFA8807E0000813E000C388000237E
+S31AFE00986C7D2803A64E800021807E0000813E000C57E0E13E7C0B
+S31AFE0098819600AE7D2803A64E800021807E0000813E000C57E04D
+S31AFE009896073E7C9600AE7D2803A64E800021807E0000813E00BA
+S31AFE0098AB107D2803A64E8000215460063E2C00002B9861000807
+S31AFE0098C0418200383861000838800001480016552C0300004018
+S31AFE0098D5820014880100082C00002D4082FFC44BFFFED43D20FC
+S31AFE0098EA00003929320038000001900900443D600000392000C5
+S31AFE0098FF00912B36AC7C0000A652E004207C0001248001003CDC
+S31AFE0099147C0803A682C1001082E10014830100188321001C8364
+S31AFE009929410020836100248381002883A1002C83C1003083E168
+S31AFE00993E0034382100384E8000209421FFE87C0802A693A10061
+S31AFE0099530C93C1001093E100149001001C7CBF2B787FE0FB78A6
+S31AFE0099682C0000007C7D1B787C9E23783BFFFFFF4182002488D2
+S31AFE00997D9E00007FA3EB784BFFFDA17FE0FB782C0000003BDEAF
+S31AFE00999200013BFFFFFF4082FFE48001001C7C0803A683A100F0
+S31AFE0099A70C83C1001083E10014382100184E8000209421FFE8D4
+S31AFE0099BC7C0802A693A1000C93C1001093E100149001001C7C11
+S31AFE0099D1BF2B787FE0FB782C0000007C7D1B787C9E23783BFFA2
+S31AFE0099E6FFFF418200247FA3EB784BFFFCFD7FE0FB782C0000BD
+S31AFE0099FB00987E00003BDE00013BFFFFFF4082FFE48001001CA9
+S31AFE009A107C0803A683A1000C83C1001083E10014382100184E55
+S31AFE009A258000209421FF909081000C90A1001090C1001490E110
+S31AFE009A3A00189101001C91210020914100243860000038210094
+S31AFE009A4F704E8000209421FFF87C0802A69001000C3860000093
+S31AFE009A644BFFFBE93D600001380000207C0903A63D20000081B9
+S31AFE009A794939A0396B1CE43D000000392000007C09502E7C09F0
+S31AFE009A8E592E392900044200FFF47D6A5B783D20000081693963
+S31AFE009AA3A0800B0094900A0100812B0090912A0104800B008049
+S31AFE009AB8900A0108812B0088912A010C800B008C900A011081B3
+S31AFE009ACD2B0084912A01143D4000003D600000800B36A43D2025
+S31AFE009AE200012C00000039291CE4912A36A04182001838000038
+S31AFE009AF700900836A4386000404BFFF9614BFFFACD386000407F
+S31AFE009B0C4BFFF9554BFFFAC13D200000906939A48001000C7C67
+S31AFE009B210803A6382100084E8000209421FFF87C0802A69001C2
+S31AFE009B36000C380000207C0903A63D200000814939A03D6000E7
+S31AFE009B4B01396B1CE4392000007C09582E7C09512E392900048E
+S31AFE009B604200FFF47D6A5B783D200000816939A0800A010090C2
+S31AFE009B750B0094812A0104912B0090800A0108900B0080812AE3
+S31AFE009B8A010C912B0088800A0110900B008C812A0114912B0033
+S31AFE009B9F84386000014BFFFAA98001000C7C0803A63821000888
+S31AFE009BB44E800020386000004E8000203D20FE0139299BB83DD6
+S31AFE009BC9400000912A367C3D60FE01396B9D003D2000009169A2
+S31AFE009BDE36783D40FE013D600000394A9A54914B36843D20FE45
+S31AFE009BF30139299B2C3D600000912B36804E8000209421FFF08E
+S31AFE009C087C0802A693C1000893E1000C900100143D20000080B9
+S31AFE009C1D0936B02C000000408200C438000001900936B048008D
+S31AFE009C3257513D2000003BC93200813E00343860FFFF7D2803AD
+S31AFE009C47A64E800021813E00347C7F1B783860FFFD7D2803A60C
+S31AFE009C5C4E800021815E00143D20FE0139299948912A00043D72
+S31AFE009C7160FE016FE0FFFF396B99B86800FFFE3D20FE01916A7D
+S31AFE009C860008392997243100FFFF7CE80110912A000C3D60FE9A
+S31AFE009C9B01301FFFFF7D00F910396B96EC3D20FE017CE0403985
+S31AFE009CB0916A001039299A28912A001441820014813E00347F54
+S31AFE009CC5E3FB787D2803A64E800021801E0030386000007C0809
+S31AFE009CDA03A64E800021386000044BFFCE01800100147C080308
+S31AFE009CEFA683C1000883E1000C382100104E8000209421FFF8F7
+S31AFE009D047C0802A69001000C3D20000039293200800900402C97
+S31AFE009D190000004182000C7C0803A64E8000218001000C7C0835
+S31AFE009D2E03A6382100084E8000207FE000084E8000209421FF1B
+S31AFE009D43D87C0802A6936100149381001893A1001C93C100200B
+S31AFE009D5893E100249001002C7C9D23787C7C1B7838000054983A
+S31AFE009D6D1D00007F8326704BFFCDD99C7D00017F83E3784BFF77
+S31AFE009D82CDCD7FBFEB789C7F0001380000749C1F0001392000B0
+S31AFE009D97689D3F0001380000729C1F0001392000659D3F00016D
+S31AFE009DAC380000619C1F0001392000643BA0003A9D3F00019FFB
+S31AFE009DC1BF000148000D0D906100083BFF00017FE4FB783861C4
+S31AFE009DD6000838A0000438C000004BFFD2257C7F1B783B80000E
+S31AFE009DEB3B9B9F0000386000044BFFCD599C7F000138600040EA
+S31AFE009E004BFFCD4D9C7F00019FBF0001386000404BFFF6513BC6
+S31AFE009E1561000C9061000C3BFF00017FE4FB787F63DB7838A0AC
+S31AFE009E2A000438C000004BFFD1D57C7F1B789B9F0000386000D3
+S31AFE009E3F004BFFCD0D9C7F0001386000014BFFCD019C7F0001FD
+S31AFE009E549FBF0001386000014BFFF6059061000C3BFF00017F01
+S31AFE009E69E4FB787F63DB7838A0000438C000004BFFD18D7C7FDD
+S31AFE009E7E1B7838000000981F00019B9F00008001002C7C0803DA
+S31AFE009E93A6836100148381001883A1001C83C1002083E10024D0
+S31AFE009EA8382100284E8000202C030001418200202803000141B2
+S31AFE009EBD8000502C030002418200242C03000341820030480037
+S31AFE009ED2003C3C0002004C00012C7C108BA64C00012C48000006
+S31AFE009EE7283C0004004C00012C7C108BA64C00012C48000014EF
+S31AFE009EFC3C000C004C00012C7C108BA64C00012C7C708AA654E6
+S31AFE009F11630FFE4E8000202C03000141820020280300014180D9
+S31AFE009F2600682C030002418200202C0300034182002848000041
+S31AFE009F3B543C0002007C0004AC7C188BA6480000443D6004005D
+S31AFE009F507C0004AC7D788BA648000034380000807C0903A6390B
+S31AFE009F65200000612010003D600E007C0004AC7D398BA67D787F
+S31AFE009F7A8BA67C198BA67D788BA6392900104200FFE07C788AA0
+S31AFE009F8FA654630FFE4E8000203D60000038000001900B368C2E
+S31AFE009FA43D2000008009399C3D60FE012C000000396BA0743D2C
+S31AFE009FB9200000916936B4418200A83D400000800A399C28001C
+S31AFE009FCE00034081003070800003408200287060000340820014
+S31AFE009FE320800300003863000490040000812A399C388400044F
+S31AFE009FF83929FFFC4800005C3D600000800B399C2800000140E9
+S31AFE00A00D810034708000014082002C7060000140820024A0034C
+S31AFE00A022000038630002B0040000812B399C388400023929FF34
+S31AFE00A037FE912B399C4800002088030000386300019804000056
+S31AFE00A04C812A399C388400013929FFFF912A399C800A399C2C43
+S31AFE00A0610000004082FF643D200000380000009009368C3D2074
+S31AFE00A076000038000000900936B44E8000209421FFE87C080206
+S31AFE00A08BA69381000893A1000C93C1001093E100149001001C21
+S31AFE00A0A07C601B787CBC2B787C8323783FA000007C0403789356
+S31AFE00A0B59D399C4BFFFEE1807D399C7C63E0508001001C7C08F5
+S31AFE00A0CA03A68381000883A1000C83C1001083E1001438210073
+S31AFE00A0DF184E8000209421FFE87C0802A69381000893A1000C3E
+S31AFE00A0F493C1001093E100149001001C7CBC2B783FA00000936D
+S31AFE00A1099D399C4BFFFE8D807D399C7C63E0508001001C7C08F4
+S31AFE00A11E03A68381000883A1000C83C1001083E100143821001E
+S31AFE00A133184E800020386000004E800020386000004E80002001
+S31AFE00A148386000004E8000209421FFF07C0802A693C1000893B9
+S31AFE00A15DE1000C900100143D200000800939AC2C00000041829D
+S31AFE00A17200603FE000003BC000007D4000A67D40537839200016
+S31AFE00A18700512004207C000124817F39AC800B0014808B0018E2
+S31AFE00A19C901F39AC93CB00187C0000A6514004207C00012481A7
+S31AFE00A1B12B000C80AB0010806B00007D2803A64E800021801F5C
+S31AFE00A1C639AC2C0000004082FFB0800100147C0803A683C100F8
+S31AFE00A1DB0883E1000C382100104E8000209421FFF87C0802A6C4
+S31AFE00A1F09001000C4BFFFF5D8001000C7C0803A6382100084EAA
+S31AFE00A20580002090690000380000009089000490A90010900970
+S31AFE00A21A00189128000090C9000890E9000C900900144E8000F9
+S31AFE00A22F20812300002C090000418200F8810300043809FFFF9B
+S31AFE00A24428000039418100E83D60FE01396B32F85400103A7D71
+S31AFE00A2594B002E3D20FE01392932F87D4A4A147D4903A64E8029
+S31AFE00A26E04203D20FF0061290200A16900007C0006AC556B06CD
+S31AFE00A2833E38000000600080007C0046307D600378540B043E81
+S31AFE00A298B16900007C0006AC480000903D20FF0061290240A1C4
+S31AFE00A2AD6900007C0006AC556B063E38000000600080007C0069
+S31AFE00A2C246307D600378540B043EB16900007C0006AC48000084
+S31AFE00A2D75C3D20FF0061290220A16900007C0006AC556B063ECE
+S31AFE00A2EC38000000600080007C0046307D600378540B043EB1A5
+S31AFE00A3016900007C0006AC480000283D20FF0061290940800984
+S31AFE00A31600007C0006AC540004DE550B68247C005B78900900F6
+S31AFE00A32B007C0006AC800300003D200000394933585408103A58
+S31AFE00A3407C0A402E3D20FE0039295DFC7C004800418200187CDF
+S31AFE00A3550A402E3D20FE013929AF987C0048004C82002080033D
+S31AFE00A36A00083D6000007C0A412E81430010396B34443D2000F3
+S31AFE00A37F007D4B412E392935307C69412E4E8000207C631B7912
+S31AFE00A3944D8200203803FFFF280000397C0803784D8100203DFD
+S31AFE00A3A960FE01396B33E05500103A7D4B002E3D20FE01392932
+S31AFE00A3BE33E07D4A4A147D4903A64E8004203D20FF0061290007
+S31AFE00A3D314816900007C0006AC3C0080007C0044307D6B007839
+S31AFE00A3E8916900007C0006AC4E8000203D20FF0061290200A0BE
+S31AFE00A3FD0900007C0006AC7000FFF75400043EB00900007C00DF
+S31AFE00A41206AC4E8000203D20FF0061290200A00900007C00067E
+S31AFE00A427AC7000FFFB5400043EB00900007C0006AC4E8000209B
+S31AFE00A43C3D20FF0061290240A00900007C0006AC7000FFFB544A
+S31AFE00A45100043EB00900007C0006AC4E8000203D20FF006129F5
+S31AFE00A4660220A00900007C0006AC7000FFF75400043EB009002F
+S31AFE00A47B007C0006AC4E8000203D20FF0061290220A0090000FB
+S31AFE00A4907C0006AC7000FFFB5400043EB00900007C0006AC4E50
+S31AFE00A4A58000203D20FF0061290940800900007C0006AC5400C4
+S31AFE00A4BA066E900900007C0006AC4E8000203D20FF0061290971
+S31AFE00A4CF48816900007C0006AC3943FFE53C0080007C005430F8
+S31AFE00A4E47D6B0078916900007C0006AC4E8000207C631B794D29
+S31AFE00A4F98200203803FFFF280000397C0803784D8100203D6084
+S31AFE00A50EFE01396B34C85500103A7D4B002E3D20FE013929340E
+S31AFE00A523C87D4A4A147D4903A64E8004203D20FF0061290014D7
+S31AFE00A538816900007C0006AC3C0080007C0044307D6B03789152
+S31AFE00A54D6900007C0006AC4E8000203D20FF0061290200A009DF
+S31AFE00A56200007C0006AC60000008B00900007C0006AC4E800095
+S31AFE00A577203D20FF0061290200A00900007C0006AC6000000488
+S31AFE00A58CB00900007C0006AC4E8000203D20FF0061290240A019
+S31AFE00A5A10900007C0006AC60000004B00900007C0006AC4E8051
+S31AFE00A5B600203D20FF0061290220A00900007C0006AC6000002D
+S31AFE00A5CB08B00900007C0006AC4E8000203D20FF006129022092
+S31AFE00A5E0A00900007C0006AC60000004B00900007C0006AC4EF2
+S31AFE00A5F58000203D20FF0061290940800900007C0006AC600067
+S31AFE00A60A0080900900007C0006AC4E8000203D20FF0061290913
+S31AFE00A61F48816900007C0006AC3943FFE53C0080007C005430A6
+S31AFE00A6347D6B0378916900007C0006AC4E8000207C631B794DD4
+S31AFE00A6498200203803FFFF280000397C0803784D8100203D6032
+S31AFE00A65EFE01396B35B05500103A7D4B002E3D20FE01392935D3
+S31AFE00A673B07D4A4A147D4903A64E8004203D20FF0061290010A2
+S31AFE00A688816900007C0006AC3C0080007C0044307D6B03789101
+S31AFE00A69D6900007C0006AC4E8000203D20FF0061290200A0098E
+S31AFE00A6B200007C0006AC60000080B00900007C0006AC4E8000CC
+S31AFE00A6C7203D20FF0061290200A00900007C0006AC60000040FB
+S31AFE00A6DCB00900007C0006AC4E8000203D20FF0061290240A0C8
+S31AFE00A6F10900007C0006AC60000080B00900007C0006AC4E8084
+S31AFE00A70600203D20FF0061290220A00900007C0006AC600000DB
+S31AFE00A71B80B00900007C0006AC4E8000203D20FF0061290220C8
+S31AFE00A730A00900007C0006AC60000040B00900007C0006AC4E64
+S31AFE00A7458000203D20FF006129094C816900007C0006AC39438C
+S31AFE00A75AFFE53C0080007C0054307D6B0378916900007C000667
+S31AFE00A76FAC4E8000207C8723787C631B794D8200203803FFFFFE
+S31AFE00A784280000397C0803784D8100203D60FE01396B3698550B
+S31AFE00A79900103A7D4B002E3D20FE01392936987D4A4A147D49F0
+S31AFE00A7AE03A64E8004203C0080007C0044303D60FF00616B00E3
+S31AFE00A7C318808B00007C0006AC7C8400787CEAFE707D493A7868
+S31AFE00A7D87D2950507D29FE707C8003787C0048787C8948387D59
+S31AFE00A7ED240378908B00007C0006AC4E8000207C8823787C63FF
+S31AFE00A8021B794D8200203803FFFF280000394D8100203D60FE97
+S31AFE00A81701396B37805400103A7D4B002E3D20FE0139293780C3
+S31AFE00A82C7D4A4A147D4903A64E8004203D20FF0061290200A005
+S31AFE00A8418900007C0006AC5484063E38000000600080007C0097
+S31AFE00A85646307C8003785404043EB08900007C0006AC4E80002D
+S31AFE00A86B203D20FF0061290240A08900007C0006AC5484063E19
+S31AFE00A88038000000600080007C0046307C8003785404043EB0F4
+S31AFE00A8958900007C0006AC4E8000203D20FF0061290220A089D4
+S31AFE00A8AA00007C0006AC5484063E38000000600080007C004671
+S31AFE00A8BF307C8003785404043EB08900007C0006AC4E800020EA
+S31AFE00A8D43D20FF0061290940800900007C0006AC540004DE55FA
+S31AFE00A8E90B68247C005B78900900007C0006AC4E800020386023
+S31AFE00A8FE00014E800020386000014E8000203D2000009069393C
+S31AFE00A913B44E8000209421FFF87C0802A69001000C3D200000B7
+S31AFE00A9283D600001814939B4906B95E8814A0000388B95E82C12
+S31AFE00A93D0A00003860000041820010386000027D4803A64E80B6
+S31AFE00A95200218001000C7C0803A6382100084E8000209421FF0E
+S31AFE00A967F87C0802A69001000C3D2000013D600000814B39B462
+S31AFE00A97C906995E8390995E89088000490A80008814A00002C3A
+S31AFE00A9910A00004082000C38600000480000147D04437838600D
+S31AFE00A9A600037D4803A64E8000218001000C7C0803A638210025
+S31AFE00A9BB084E8000209421FFF87C0802A69001000C3D200001BA
+S31AFE00A9D03D600000814B39B4906995E8390995E8908800048146
+S31AFE00A9E54A00002C0A00004082000C38600000480000147D0496
+S31AFE00A9FA4378386000047D4803A64E8000218001000C7C08037C
+S31AFE00AA0FA6382100084E8000209421FFF87C0802A69001000CC4
+S31AFE00AA243D2000013D600000814B39B4906995E8390995E890A0
+S31AFE00AA3988000490A80008814A00002C0A00004082000C3860D1
+S31AFE00AA4E0000480000147D044378386000057D4803A64E80007E
+S31AFE00AA63218001000C7C0803A6382100084E8000209421FFF804
+S31AFE00AA787C0802A69001000C3D2000013D600000814B39B490B8
+S31AFE00AA8D6995E8390995E89088000490A80008814A00002C0AAE
+S31AFE00AAA200004082000C38600000480000147D04437838600005
+S31AFE00AAB7077D4803A64E8000218001000C7C0803A63821000807
+S31AFE00AACC4E8000209421FFE87C0802A693E100149001001C3B4B
+S31AFE00AAE1E100087FE3FB784BFFFE312C0300004082000C386090
+S31AFE00AAF6000048000008A07F00068001001C7C0803A683E100A4
+S31AFE00AB0B14382100184E8000209421FFF87C0802A69001000C49
+S31AFE00AB204BFFB3C18001000C7C0803A6382100084E8000203C19
+S31AFE00AB3500FE00600001007C0903A64E8004209421FFF87C0858
+S31AFE00AB4A02A69001000C4BFFFFE5386000008001000C7C0803D3
+S31AFE00AB5FA6382100084E800020386000004E8000209421FFE8C6
+S31AFE00AB747C0802A693A1000C93C1001093E100149001001C7C47
+S31AFE00AB897F1B78386000003BA00001380000002C1FFFFE4182EA
+S31AFE00AB9E0040418100102C1FFFFD4182004C480000502C1FFF54
+S31AFE00ABB3FF408200483D200000812936B82C0900003BA9FFFF74
+S31AFE00ABC84181003C7D3D4B78408200343BA0FFFD4800002C3D7B
+S31AFE00ABDD200000392932003D6000009069001893EB36B8480049
+S31AFE00ABF200143BE00000480000083BFF0001380000012C00002B
+S31AFE00AC0700418200803D2000003BC93200813E00182C09000052
+S31AFE00AC1C418200188069000080090014388000047C0803A64E87
+S31AFE00AC318000213D200001392995F457E028347C004A143D2056
+S31AFE00AC4600002C030000901E001893E936B8813E0018418200FC
+S31AFE00AC5B1C8069000080090014388000057C0803A64E80002165
+S31AFE00AC70480000188069000080090014388000047C0803A64EAE
+S31AFE00AC858000217FA3EB788001001C7C0803A683A1000C83C152
+S31AFE00AC9A001083E10014382100184E8000203940000138000008
+S31AFE00ACAF002C03FFFE41820040418100102C03FFFD4182004C51
+S31AFE00ACC4480000502C03FFFF408200483D200000812936BC2C83
+S31AFE00ACD90900003949FFFF4181003C7D2A4B7840820034394002
+S31AFE00ACEEFFFD4800002C3D200000392932003D600000900900B6
+S31AFE00AD0314906B36BC4800001438600000480000083863000156
+S31AFE00AD18380000012C000000418200283D200001392995F45435
+S31AFE00AD2D6028343D6000007C004A14396B32003D200000900B0C
+S31AFE00AD420014906936BC7D4353784E8000204E8000204E8000C4
+S31AFE00AD57204E8000209421FFE87C0802A693E100149001001CD8
+S31AFE00AD6C3D200000392932008169001838000000900100088189
+S31AFE00AD812B0000800B00187C651B787C8623787D234B783881BE
+S31AFE00AD9600087C0803A64E800021800100087C7F1B782C00003D
+S31AFE00ADAB00418200103D200000806939B8480001997FE3FB78CE
+S31AFE00ADC08001001C7C0803A683E10014382100184E8000209445
+S31AFE00ADD521FFE87C0802A693A1000C93C1001093E10014900174
+S31AFE00ADEA001C380000407C0903A63D2000003D60FE0139293201
+S31AFE00ADFF00396BAB68394000007D69512E394A00044200FFF8E6
+S31AFE00AE143D2000013D60FE01392995F4396BAB683900000055FB
+S31AFE00AE290A283438080001390000087D0903A67D69512E394A11
+S31AFE00AE3E00044200FFF87C0803782C0800024081FFDC3FA0000E
+S31AFE00AE530038000013901D32003D6000003BBD3200396B3358C6
+S31AFE00AE68917D00043D200000392930003D60FE01913D00083925
+S31AFE00AE7D6BAB34917D00403D20FE013929AB443D60FE01913D0D
+S31AFE00AE920010396BAB14917D00483D20FE013929AB703D60FE6A
+S31AFE00AEA701913D0030396BACA83D40FE01917D0034394AAD505D
+S31AFE00AEBC3D20FE01915D00203929AD54913D001C3860FFFE4BE6
+S31AFE00AED1FFFCA13860FFFE4BFFFDD138000000901D0024901D69
+S31AFE00AEE60028901D004C901D0044387D003C4BFFFA193D20FE98
+S31AFE00AEFB013929953C913D008C8001001C7C0803A683A1000CB6
+S31AFE00AF1083C1001083E10014382100184E8000207C8423794120
+S31AFE00AF258200243884FFFF7C0320AE2C0000034082000C3860D1
+S31AFE00AF3A00014E8000202C0400004082FFE4386000004E8000D4
+S31AFE00AF4F209421FFF87C0802A69001000C7C631B793D20FE0185
+S31AFE00AF643809AF8841820008800300943D200000392932008108
+S31AFE00AF7929008C7C0303787D2803A64E8000218001000C7C08C2
+S31AFE00AF8E03A6382100084E8000209421FFF07C0802A693C1008E
+S31AFE00AFA30893E1000C900100143D200000800932007C7F1B78C2
+S31AFE00AFB82C000014396932007C9E23783860FFFF4082001C81C2
+S31AFE00AFCD2B00183880000680690000800900147C0803A64E80E9
+S31AFE00AFE200217C1F18004082001C7FE3FB787FC4F3784BFFFDDA
+S31AFE00AFF7697C601B797C030378408200287FE3FB787FC4F37801
+S31AFE00B00C4BFFADED7C601B787C09FE707D2302787C6348507CD8
+S31AFE00B02163FE707C031838800100147C0803A683C1000883E104
+S31AFE00B036000C382100104E800020280500037C691B7840810035
+S31AFE00B04B107C801B78700B0003418200302C05000038A5FFFFD0
+S31AFE00B0604D820020880400002C05000098090000388400013994
+S31AFE00B07529000138A5FFFF4082FFE84E8000202805000F7C6B03
+S31AFE00B08A1B78408100388004000038A5FFF0900B00008524008D
+S31AFE00B09F042805000F952B000484040004940B000485240004B8
+S31AFE00B0B4952B000438840004396B00044181FFD0280500034056
+S31AFE00B0C98100208004000038A5FFFC28050003900B00003884EA
+S31AFE00B0DE0004396B00044181FFE82C0500007D695B7838A5FF3E
+S31AFE00B0F3FF4D820020880400002C05000098090000388400013B
+S31AFE00B1083929000138A5FFFF4082FFE84E800020280500037CAD
+S31AFE00B11D691B784081000C70600003418200282C05000038A584
+S31AFE00B132FFFF4D8200202C050000988900003929000138A5FF86
+S31AFE00B147FF4082FFF04E8000205484063E5480402E7C002378DC
+S31AFE00B15C5409801E7C004B787C6B1B782805000F408100249075
+S31AFE00B1710B0000940B000438A5FFF0940B00042805000F940BCD
+S31AFE00B1860004396B00044181FFE4280500034081001838A5FF7A
+S31AFE00B19BFC28050003900B0000396B00044181FFF02C0500004A
+S31AFE00B1B07D695B784D8200207CA903A69889000039290001424A
+S31AFE00B1C500FFF84E8000209421FFA87C631B79394100087D4777
+S31AFE00B1DA537839000000408200143800003098010008394100FF
+S31AFE00B1EF09480000247C032B967D2029D67D2918507D6648AE0F
+S31AFE00B2047C030379996A0000394A00014082FFE47C0A3800410B
+S31AFE00B2198200287D0343787CE93B788C0AFFFF386300017C0A69
+S31AFE00B22E480098040000388400014082FFEC7C681B783800000A
+S31AFE00B24300980400007D034378382100584E8000209421FF9830
+S31AFE00B2587C0802A67D8000269241003092610034928100389287
+S31AFE00B26DA1003C92C1004092E10044930100489321004C9341F1
+S31AFE00B2820050936100549381005893A1005C93C1006093E100F7
+S31AFE00B297649001006C9181002C7C9923788BB900003AE10008E8
+S31AFE00B2AC2C1D00007EF2BB787C7B1B787CB82B783BC000003A07
+S31AFE00B2C1A000003B390001418204802C1D00254082043C8BB964
+S31AFE00B2D600003B3900012C1D002D3AC000003BE000004082009D
+S31AFE00B2EB108BB900003B3900013AC000012C1D00304082001437
+S31AFE00B3008BB900003B8000013B390001480000083B800000387C
+S31AFE00B3151DFFD0280000094181003C7FA3EB787F24CB787FE931
+S31AFE00B32AFB781D29000A3929FFD07D291A14886400003884009A
+S31AFE00B33F013803FFD0280000094081FFE47D3F4B787C992378E6
+S31AFE00B3547C7D1B782C1D002E4082003C8BB900003B39000138EE
+S31AFE00B3691DFFD0280000093B9C0001418100247F24CB7888641E
+S31AFE00B37E0000388400013803FFD0280000094081FFF07C7D1BFA
+S31AFE00B393787C9923782C1D006C3A8000004082000C8BB90000F8
+S31AFE00B3A83B390001381DFFA8280000203A790001418101F83D27
+S31AFE00B3BD60FE01396B38A05400103A7D4B002E3D20FE0139294A
+S31AFE00B3D238A07D4A4A147D4903A64E800420386000307F680352
+S31AFE00B3E7A63B8000013BE000084E800021386000787F6803A639
+S31AFE00B3FC4E800021897800005569063E38090001280000084193
+S31AFE00B41181001C801800085529103A396B00017C604A1499782D
+S31AFE00B426000048000030280900074181001C807800043800004B
+S31AFE00B43B083923000498180000913800044800001080780004BF
+S31AFE00B45038030004901800042C1D00648063000041820028413C
+S31AFE00B4658100102C1D00584182004C480000602C1D0070418269
+S31AFE00B47A00342C1D00784182002C4800004C2C03000040800052
+S31AFE00B48F0C3A80002D7C6300D03CC0FE0138C6386838810008A8
+S31AFE00B4A438A0000A480000203CC0FE0138C638744800000C3C10
+S31AFE00B4B9C0FE0138C638883881000838A000104BFFFD057C7517
+S31AFE00B4CE1B787E579378480000EC897800005569063E3809007A
+S31AFE00B4E301280000084181001C801800085529103A396B000134
+S31AFE00B4F87C604A149978000048000030280900074181001C80E2
+S31AFE00B50D78000438000008392300049818000091380004480044
+S31AFE00B522001080780004380300049018000482E300007EE3BB98
+S31AFE00B53778480003C97C751B7848000080897800005569063E20
+S31AFE00B54C38090001280000084181001C801800085529103A39F5
+S31AFE00B5616B00017D404A149978000048000030280900074181C7
+S31AFE00B576001C8158000438000008392A000498180000913800A3
+S31AFE00B58B044800001081580004380A000490180004886A000387
+S31AFE00B5A07F6803A63BDE00014E8000214800018C3860003F7FCE
+S31AFE00B5B56803A63BDE00014E8000217F55F8503134FFFF7D293E
+S31AFE00B5CA4910381AFFFF7C0048782F9C00007F4948387D3A03B6
+S31AFE00B5DF782C140000419E00243BA00030418200207E83A3788E
+S31AFE00B5F47F6803A63BDE00013A8000004E800021480000083B60
+S31AFE00B609A000202C1400002E1600003AD5FFFF7F8000264092E0
+S31AFE00B61E003C7F40D3782C0000003B5AFFFF4081002C7F5FD370
+S31AFE00B633787FA3EB787F6803A63BDE00014E8000217FE0FB7896
+S31AFE00B6482C0000003BFFFFFF4181FFE47FFAFB787F880120418B
+S31AFE00B65D8200147E83A3787F6803A63BDE00014E8000217EA06B
+S31AFE00B672AB782C0000007ED5B378408100547EBDAB787EFCBB4A
+S31AFE00B687788BFC00007F6803A67FE3FB783B9C00013BDE000154
+S31AFE00B69C4E8000212C1F000A408200143860000D7F6803A63B0B
+S31AFE00B6B1DE00014E8000217FA0EB782C0000003BBDFFFF41814C
+S31AFE00B6C6FFC47F97E3787FB5EB78419200687F40D3782C00002F
+S31AFE00B6DB003B5AFFFF408100587F5FD378386000207F6803A639
+S31AFE00B6F03BDE00014E8000217FE0FB782C0000003BFFFFFF41C1
+S31AFE00B70581FFE4480000307FA3EB787F6803A63BDE00013A796D
+S31AFE00B71A00014E8000212C1D000A408200143860000D7F68036E
+S31AFE00B72FA63BDE00014E8000218BB900007E799B782C1D0000BB
+S31AFE00B7444082FB887FC3F3788001006C8181002C7C0803A68230
+S31AFE00B759410030826100348281003882A1003C82C1004082E1CF
+S31AFE00B76E0044830100488321004C834100508361005483810072
+S31AFE00B7835883A1005C83C1006083E100647D808120382100680A
+S31AFE00B7984E8000203D200000816939BC38000000986B000039FA
+S31AFE00B7AD6B0001916939BC980B00004E8000209421FF707C08EF
+S31AFE00B7C202A693A1008493C1008893E1008C900100943D600070
+S31AFE00B7D70090A10010906B39BC38A100083BA100983800000299
+S31AFE00B7EC396000003C60FE0190A100789081000C90C100149055
+S31AFE00B801E100189101001C9121002091410024980100709961BC
+S31AFE00B816007193A100743863B79C38A100704BFFFA31800100D3
+S31AFE00B82B947C0803A683A1008483C1008883E1008C38210090F6
+S31AFE00B8404E8000209421FF707C0802A693A1008493C10088938A
+S31AFE00B855E1008C9001009490A100109081000C7C641B78906186
+S31AFE00B86A000838A100083BA1009838000001396000003C60FEFC
+S31AFE00B87F0190A1007890C1001490E100189101001C9121002098
+S31AFE00B89491410024980100709961007193A100743863BAF83804
+S31AFE00B8A9A100704BFFF9A9800100947C0803A683A1008483C15B
+S31AFE00B8BE008883E1008C382100904E8000209421FFF87C0802F0
+S31AFE00B8D3A69001000C7C601B787C8523783C60FE013863BAF826
+S31AFE00B8E87C0403784BFFF9698001000C7C0803A6382100084E37
+S31AFE00B8FD80002088030000392000004800000C8803000039296D
+S31AFE00B91200012C000000386300014082FFF07D234B784E800071
+S31AFE00B927207C691B78480000102C030000386000004D82002061
+S31AFE00B93C8869000088040000388400017C030000392900014195
+S31AFE00B95182FFE07C6018504E800020880400007C691B784800FE
+S31AFE00B96600109803000088040000386300012C0000003884000D
+S31AFE00B97B014082FFEC38000000980300007D234B784E800020E1
+S31AFE00B9907C6B1B78480000102C030000386000004D820020888E
+S31AFE00B9A56B0000396B00013803FFBF280000194181000C380336
+S31AFE00B9BA00205403063E89240000388400013809FFBF28000028
+S31AFE00B9CF194181000C380900205409063E7D204B787C03000097
+S31AFE00B9E44182FFB47C6018504E8000207CA02B797C691B787CEE
+S31AFE00B9F90903A640820014386000004E8000207C6018504E8015
+S31AFE00BA0E00208869000088040000388400017C030000392900E4
+S31AFE00BA23014082FFE42C030000418200084200FFE038600000B1
+S31AFE00BA384E8000207CA02B797C6B1B787C0903A640820018388D
+S31AFE00BA4D6000004E8000207C6018504E80002042400050886B9B
+S31AFE00BA620000396B00013803FFBF280000194181000C380300E3
+S31AFE00BA77205403063E89240000388400013809FFBF2800001951
+S31AFE00BA8C4181000C380900205409063E7D204B787C03000040B2
+S31AFE00BAA182FFB42C0300004082FFB4386000004E8000204800E5
+S31AFE00BAB6002C8923000088040000388400017C09000038630036
+S31AFE00BACB01418200148803FFFF8864FFFF7C6300504E800020FA
+S31AFE00BAE07CA02B782C00000038A5FFFF4082FFCC386000004E14
+S31AFE00BAF58000209421FFE87C0802A69381000893A1000C93C120
+S31AFE00BB0A001093E100149001001C3D200000800939087C7D1BA2
+S31AFE00BB1F782C000000408200743D200000392932008009003485
+S31AFE00BB343860FFFF7C0803A67D3E4B783BE000004E8000217C31
+S31AFE00BB497C1B78813E00347FE3FB787D2803A64E800021813E10
+S31AFE00BB5E00147FA4EB78806900008009000C7C0803A64E8000BB
+S31AFE00BB732137FF00014081FFD43D20000039293200800900341F
+S31AFE00BB887F83E3787C0803A64E800021480000483D2000003905
+S31AFE00BB9D293200816900142C0B00004182001C806B0000800BAA
+S31AFE00BBB2000C7FA4EB787C0803A64E8000214800001C8169007E
+S31AFE00BBC7187FA4EB78806B0000800B000C7C0803A64E80002129
+S31AFE00BBDC8001001C7C0803A68381000883A1000C83C100108373
+S31AFE00BBF1E10014382100184E8000209421FFF07C0802A693E1A3
+S31AFE00BC06000C900100143D20000039293200816900147C7F1B6F
+S31AFE00BC1B782C0B00004082000881690018806B0000800B00100F
+S31AFE00BC307C0803A64E800021987F0000800100147C0803A68383
+S31AFE00BC45E1000C382100104E8000209421FFE07C0802A69361EE
+S31AFE00BC5A000C9381001093A1001493C1001893E1001C900100CC
+S31AFE00BC6F243D200000800939087C7D1B782C000000408200886F
+S31AFE00BC843D20000039293200800900343860FFFF7C0803A67DB9
+S31AFE00BC993C4B783BE000004E8000217C7B1B78813C00347FE3AC
+S31AFE00BCAEFB787D2803A64E800021817C00147FA4EB78806B004B
+S31AFE00BCC300800B001C7C0803A64E8000217C7E1B794182001044
+S31AFE00BCD8881D00002C0000004082004C37FF00014081FFC03D80
+S31AFE00BCED20000039293200800900347F63DB787C0803A64E809D
+S31AFE00BD020021480000643D20000039293200816900142C0B0035
+S31AFE00BD170041820034806B0000800B001C7FA4EB784800003488
+S31AFE00BD2C817C00307FE3FB787D6803A63D200000380000019048
+S31AFE00BD410939084E80002148000020816900187FA4EB78806BD5
+S31AFE00BD560000800B001C7C0803A64E8000217C7E1B787FC3F34F
+S31AFE00BD6B78800100247C0803A68361000C8381001083A1001439
+S31AFE00BD8083C1001883E1001C382100204E8000209421FFE87C4F
+S31AFE00BD950802A69381000893A1000C93C1001093E1001490010C
+S31AFE00BDAA001C3D200000800939087C7D1B782C000000408200C3
+S31AFE00BDBF803D20000039293200800900343860FFFF7C0803A67A
+S31AFE00BDD47D3E4B783BE000004E8000217C7C1B78813E00347FD1
+S31AFE00BDE9E3FB787D2803A64E800021813E00142C0900004182E3
+S31AFE00BDFE001C8069000080090014388000077FA5EB787C0803BD
+S31AFE00BE13A64E80002137FF00014081FFC83D20000039293200D1
+S31AFE00BE28800900347F83E3787C0803A64E800021480000303D16
+S31AFE00BE3D20000039293200812900142C0900004182001C80697D
+S31AFE00BE52000080090014388000077FA5EB787C0803A64E8000F9
+S31AFE00BE67213D20000039293200812900182C0900004182001CDA
+S31AFE00BE7C80690000800900147FA5EB78388000077C0803A64E66
+S31AFE00BE918000218001001C7C0803A68381000883A1000C83C1AD
+S31AFE00BEA6001083E10014382100184E8000209421FFD07C080292
+S31AFE00BEBBA69301001093210014934100189361001C938100202C
+S31AFE00BED093A1002493C1002893E1002C900100347C7D1B787C18
+S31AFE00BEE5BE2B787FBFEB783B6000003F2000003F8000003B400E
+S31AFE00BEFA0000813939302C09000041820020896900002C0B00CB
+S31AFE00BF0F00418200143809000199610008901939304800006440
+S31AFE00BF247FC0FE707C1E005054000FFE7FE9EA78216900007D3B
+S31AFE00BF392B49147C0B48394182003C386000324BFFFE494800BD
+S31AFE00BF4E00083BDEFFCE2C1E000040810014386100084BFFFCE6
+S31AFE00BF63F17C7B1B794182FFE82C1B0000408200143860FFFFEC
+S31AFE00BF7848000180386100084BFFFC7D880100089B5F00007C7C
+S31AFE00BF8D0303785400063E2C00000D4182007C418100282C00F7
+S31AFE00BFA20008418200D4418100102C00000341820038480001A2
+S31AFE00BFB7142C00000A41820058480001082C00002B418200E8B9
+S31AFE00BFCC418100102C000024418200DC480000F02C00007F4177
+S31AFE00BFE1820098480000E47C1FE800408200183C60FE0138636E
+S31AFE00BFF639284BFFF84D3860FFFE480000F8987F00003BFF001C
+S31AFE00C00B013F000000480000DC892100083F0000002C09000A88
+S31AFE00C02040820010881836C02C00000D418200182C09000D4009
+S31AFE00C035820018881836C02C00000A4082000C9B410008480092
+S31AFE00C04A00A4801C39282C000000418200143860000D4BFFFA50
+S31AFE00C05F9D3860000A4BFFFA958801000838600001981836C0E0
+S31AFE00C074480000847C1FE8003F0000004182006C801C39282CCD
+S31AFE00C0890000004182001C386000084BFFFA65386000204BFF74
+S31AFE00C09EFA5D386000084BFFFA553BFFFFFF480000407C1FE8B6
+S31AFE00C0B300408200145463063E4BFFC31D386000004800003465
+S31AFE00C0C8801C39282C0000004182000C886100084BFFFA218889
+S31AFE00C0DD0100083F000000981F00003BFF0001880100089818CF
+S31AFE00C0F236C04BFFFE08800100347C0803A683010010832100D5
+S31AFE00C10714834100188361001C8381002083A1002483C1002857
+S31AFE00C11C83E1002C382100304E8000209421FFC07C0802A692D1
+S31AFE00C1314100089261000C9281001092A1001492C1001892E165
+S31AFE00C146001C9301002093210024934100289361002C93810008
+S31AFE00C15B3093A1003493C1003893E1003C900100447C9D23786E
+S31AFE00C1707C7C1B787D3DE0107D2949107D294BB87C1CE8507C8D
+S31AFE00C1850048787FA948387D3D03797CB62B78408101403E40AE
+S31AFE00C19AFE012C160000418200143872392C7C96E0504BFFF6E3
+S31AFE00C1AF99480000103872392C7F84E3784BFFF6897FBEEB78B0
+S31AFE00C1C47F9DE3783BE000003E80FE013EA0FE013E60FE013B5E
+S31AFE00C1D95EFFF03AFD00103F00FE013F60FE013F20FE017C1FE4
+S31AFE00C1EEF000408000147C9DF8AE387839384BFFF649480000C3
+S31AFE00C2030C387939404BFFF63D7FFCFE707C1CF8507C000E70AC
+S31AFE00C2187C0002147C00F8502C0000014082000C387B39444B41
+S31AFE00C22DFFF61957801F7E7C1F02147C001E70540018387C009B
+S31AFE00C242F8502C0000074082000C387B39444BFFF5F53BFF00FC
+S31AFE00C257012C1F000F4081FF907FBCEB787FDDF3783874394891
+S31AFE00C26C4BFFF5D97EBEAB783BE000007C1FE8004080002C7C3C
+S31AFE00C2819CF8AE3804FFE02000005E7C0001107C0003B87C0980
+S31AFE00C29600F87C8000387129002E7C044B784800000838800050
+S31AFE00C2AB20387E394C4BFFF5953BFF00012C1F000F4081FFBC3A
+S31AFE00C2C0387339504BFFF5817F5DD3797EFCBB784181FECC8090
+S31AFE00C2D50100447C0803A6824100088261000C8281001082A1EE
+S31AFE00C2EA001482C1001882E1001C83010020832100248341001D
+S31AFE00C2FF288361002C8381003083A1003483C1003883E1003C46
+S31AFE00C314382100404E8000209421FFF87C0802A69001000C38DC
+S31AFE00C329A000004BFFFDFD8001000C7C0803A6382100084E802E
+S31AFE00C33E00209421FF607C0802A69361008C9381009093A1002E
+S31AFE00C3539493C1009893E1009C900100A49081000C388100A88E
+S31AFE00C3683FA000003B800000380000013961000890810074833F
+S31AFE00C37D7D39309061000890A1001090C1001490E10018910107
+S31AFE00C392001C912100209141002498010070916100789B81001F
+S31AFE00C3A771388100704BFFF5213C60FE01386339544BFFF48DF5
+S31AFE00C3BC939D3930386100803880000838A000004BFFFAE98869
+S31AFE00C3D1610080937D393068600059212000007C090114686332
+S31AFE00C3E60079212300007C6919147C630378800100A47C080369
+S31AFE00C3FBA68361008C8381009083A1009483C1009883E1009CEB
+S31AFE00C410382100A04E8000209421FFE87C0802A69381000893B5
+S31AFE00C425A1000C93C1001093E100149001001C7C9C23787CBDCC
+S31AFE00C43A2B787C7F1B783BC00000480000C857C0103A7FFD01CF
+S31AFE00C44F2E881F00003BDE000148000098881F00002C00002210
+S31AFE00C4644082008457C0103A7D60EA14812BFFFC7C09F80040D9
+S31AFE00C47982000C3BFF000193EBFFFC893F0000692000227C0079
+S31AFE00C48E00D07D2900D055290FFE54000FFE7D2B0039418200BF
+S31AFE00C4A32C7FE3FB788D230001692000227C0000D07D2900D061
+S31AFE00C4B855290FFE54000FFE7D2B00394082FFE47C7F1B7888E3
+S31AFE00C4CD1F00002C0000004082002C3C60FE013863396C4BFFF8
+S31AFE00C4E2F365480000083BFF0001881F00002C000000418200C8
+S31AFE00C4F74C2C0000204082FF6038000000981F00003BFF000149
+S31AFE00C50C881F00002C0000004182002C2C000020408200187FAF
+S31AFE00C521E3FB788C0300012C0000204182FFF87C7F1B78881FE0
+S31AFE00C53600002C0000004082FF0C3C6000003C80000080BD005E
+S31AFE00C54B0093DC0000386337A838843818480000258001001CD8
+S31AFE00C5607C0803A68381000883A1000C83C1001083E100143855
+S31AFE00C5752100184E8000209421FFD87C0802A69301000893217E
+S31AFE00C58A000C93410010936100149381001893A1001C93C100D0
+S31AFE00C59F2093E100249001002C7C7F1B787CBC2B787C9A2378F4
+S31AFE00C5B47F83E3784BFFF3497FFDFB787C1DD0007C7B1B784168
+S31AFE00C5C98200C0809D00007F83E3787F65DB784BFFF4652C0394
+S31AFE00C5DE00004082009C807D00004BFFF3197C03D8004081007B
+S31AFE00C5F3847C1FD0003BC00001418200603F00FE013F20FE0185
+S31AFE00C6087C1DF80041820044809F00007F83E3787F65DB784B83
+S31AFE00C61DFFF4212C0300004082002C2C1E00004182001880BD71
+S31AFE00C6320000387839807F84E3784BFFF2093BC00000809F00C9
+S31AFE00C64700387939A84BFFF1F93BFF00107C1FD0004082FFB0EE
+S31AFE00C65C2C1E0000408200143C60FE01386339AC4BFFF1D9482E
+S31AFE00C6710000187FA3EB78480000143BBD00107C1DD000408284
+S31AFE00C686FF48386000008001002C7C0803A683010008832100B2
+S31AFE00C69B0C83410010836100148381001883A1001C83C10020EE
+S31AFE00C6B083E10024382100284E8000209421FFE87C0802A6931F
+S31AFE00C6C581000893A1000C93C1001093E100149001001C7C601E
+S31AFE00C6DA1B783C60FE017C9D23787C1F03787CBE2B783863399E
+S31AFE00C6EFB04BFFF1557C1FE800418200283F80FE0180BF000087
+S31AFE00C70480DF0008387C39B87FC4F3784BFFF1353BFF00107C2C
+S31AFE00C7191FE8004082FFE48001001C7C0803A68381000883A161
+S31AFE00C72E000C83C1001083E10014382100184E80002091230007
+S31AFE00C743149883000090A3000490C3000890E3000C91030010F9
+S31AFE00C7584E8000209421FFB07C0802A691C1000891E1000C92E0
+S31AFE00C76D01001092210014924100189261001C9281002092A17B
+S31AFE00C782002492C1002892E1002C9301003093210034934100E0
+S31AFE00C797389361003C9381004093A1004493C1004893E1004CF9
+S31AFE00C7AC900100547D344B787D1643783016FFFF7D20B1106AC1
+S31AFE00C7C1800001216000007C0B01147D2B00397C701B787C984D
+S31AFE00C7D623787CD133787CF53B787D5353783B4000013A400002
+S31AFE00C7EB0041820008925600007C12A8007E3F8B78408000507C
+S31AFE00C8007EA903A67FEBFB7839000000812B00102C0900004107
+S31AFE00C81582000891090000814B00042C0A000040820020800B73
+S31AFE00C82A00082C0000004182000C2C0000024082000C812B004A
+S31AFE00C83F0C91490000396B00184200FFC47CBD2B787C1D800044
+S31AFE00C854408002043DC0FE013DE0FE0157BE103A7C9EC02E88FE
+S31AFE00C8690400002C00002D4082014C396000007C0BA8008AE414
+S31AFE00C87E00017E3F8B78392000003B7D0001408001147F9EC21A
+S31AFE00C893143B200001881F00007C170000408200F0813F001060
+S31AFE00C8A82C09000041820020800900002C000000418200148053
+S31AFE00C8BD9F0014386E39C44BFFEF813B400000801F00042C0008
+S31AFE00C8D2000041820080813C0000880900023BC900032C000087
+S31AFE00C8E73D4182000C83DC00043BBD0001801F00082C000000FD
+S31AFE00C8FC418200102C0000014182003C48000040809F000C7FF2
+S31AFE00C911C3F37838A0000038C00000480001992C03000040823C
+S31AFE00C926002480BF00147FC4F378386F39E44BFFEF113B40004A
+S31AFE00C93B004800000C813F000C93C90000813F00103B7D0001DE
+S31AFE00C95048000034801F00082C000000418200102C000002413D
+S31AFE00C96582001C48000020817F000C812B000039290001912BDC
+S31AFE00C97A00004800000C813F000C9329000039600001480000E6
+S31AFE00C98F14392900017C09A8003BFF00184180FEFC2C0B0000A7
+S31AFE00C9A4408200A83C60FE0138633A0C7EE4BB784BFFEE9148EE
+S31AFE00C9B90000902C160000418200782C12000041820014386E9D
+S31AFE00C9CE39C47E649B784BFFEE713B4000002C14000041820037
+S31AFE00C9E3102C1400014182003C480000407C7EC02E7EC4B3780E
+S31AFE00C9F838A0000038C00000480000B52C030000408200247CC8
+S31AFE00CA0D9EC02E386F39E47E659B784BFFEE2D3B4000004800A2
+S31AFE00CA22000C7C1EC02E901600003B7D00013A40000148000045
+S31AFE00CA37183C60FE0138633A2C3B7D00014BFFEE013B400000C5
+S31AFE00CA4C7F7DDB787C1D80004180FE0C7F43D378800100547C40
+S31AFE00CA610803A681C1000881E1000C8201001082210014824146
+S31AFE00CA7600188261001C8281002082A1002482C1002882E10058
+S31AFE00CA8B2C8301003083210034834100388361003C838100407A
+S31AFE00CAA083A1004483C1004883E1004C382100504E80002088BA
+S31AFE00CAB503000038E000012C0000203900000A39800000408242
+S31AFE00CACA00108C0300012C0000204182FFF8880300002C0000F6
+S31AFE00CADF004182012C2C07000041820038880300002C00003039
+S31AFE00CAF44082002C892300013809FFBF280000194181000C3848
+S31AFE00CB090900205409063E2C0900784082000C390000103863EA
+S31AFE00CB1E00028943000038E00000392AFFD0380AFFBF2129009C
+S31AFE00CB3309392000007D29491420000005380000007C00011496
+S31AFE00CB487D2B0379386300013920000040820010380AFF9F28E1
+S31AFE00CB5D00000541810008392000012C09000041820068392AD3
+S31AFE00CB72FFD05520063E280000094181000C7D2B4B7848000070
+S31AFE00CB8730380AFF9F280000054181000C396AFFA94800001CDB
+S31AFE00CB9C380AFFBF200000057C0001107C0003B8392AFFC97CF0
+S31AFE00CBB10B48387C0B40004080001C880300007D2C41D62C00C6
+S31AFE00CBC600007D895A144082FF184800003C2C06000041820090
+S31AFE00CBDB2C88060000480000088C0600012C000000418200189D
+S31AFE00CBF07C0A00004082FFF0880600002C0000004082000C3835
+S31AFE00CC056000004E8000202C05000091840000418200089065C2
+S31AFE00CC1A0000386000014E800020880300002C000020408200E1
+S31AFE00CC2F108C0300012C0000204182FFF8886300006869007416
+S31AFE00CC44200900007D20491468600054214000007C0A01147D1F
+S31AFE00CC592B037941820010380000019004000048000030686932
+S31AFE00CC6E0046200900007D20491468600066214000007C0A012E
+S31AFE00CC83147C0A4B794082000C386000004E80002091640000F1
+S31AFE00CC98386000014E8000209421FFE07C0802A69361000C93A9
+S31AFE00CCAD81001093A1001493C1001893E1001C900100243D2087
+S31AFE00CCC2000139699680800BFFD47C9C23782C0000007CDB33D9
+S31AFE00CCD7784182000C3800000A4800012838000001B009968042
+S31AFE00CCEC88030000396B00022C0000002F8500004182001898AB
+S31AFE00CD010B00008C030001396B00012C0000004082FFF03800C4
+S31AFE00CD160000980B0000396B0001409E00103D20FE0138693A97
+S31AFE00CD2B604800001C2C0500014182000C3800000A480000CCD4
+S31AFE00CD403D20FE0138693A6C880300002C00000041820018980D
+S31AFE00CD550B00008C030001396B00012C0000004082FFF03D204B
+S31AFE00CD6A00013BA9966838000000980B00007FA3EB78388000B5
+S31AFE00CD7F0038A0000C4BFFE3953D600000812B36C83BFDFFEC8B
+S31AFE00CD9438000001B13F0018B01F001AA01C0004392900012C0D
+S31AFE00CDA90000003BC00000912B36C893DF00144082000C380030
+S31AFE00CDBE0045B01C00047F85E378387D0018388002057FA6EB4C
+S31AFE00CDD378480033A92C0300004180002838000001901DFFECC2
+S31AFE00CDE83920FFFF93DF0004913F001093DF000C93DF00083855
+S31AFE00CDFD6000004800001038000009901B00003860FFFF800162
+S31AFE00CE1200247C0803A68361000C8381001083A1001483C10036
+S31AFE00CE271883E1001C382100204E8000203D200001380000005D
+S31AFE00CE3C90099654386000004E8000209421FFC87C0802A6929A
+S31AFE00CE51C1001092E10014930100189321001C9341002093610C
+S31AFE00CE6600249381002893A1002C93C1003093E1003490010036
+S31AFE00CE7B3C7C9923783B6000007C1BC8003D2000013BC9968040
+S31AFE00CE907C7A1B787CBC2B78408001783BFEFFD43B0100083A62
+S31AFE00CEA5E000043AC00009813F000C2C0900004081005C7C1BD8
+S31AFE00CEBAC8507F890000809F02347F43D3784FFEE3827FA0000C
+S31AFE00CECF2657BD07FE7FBD00D07C00E8787D3DE8387FBD037892
+S31AFE00CEE47FA5EB784BFFE159801F0234813F000C7C00EA147D92
+S31AFE00CEF93D4850901F0234913F000C7F7BEA147F5AEA14480073
+S31AFE00CF0E00FC801F0010280001FF408100F838000001900100B4
+S31AFE00CF23083920000091380004387F002C3880020538BF00200E
+S31AFE00CF3838DF00147F07C378480033697C631B794080002C8130
+S31AFE00CF4D3F0004392900012C09000F913F000441810010801F9C
+S31AFE00CF6200082C00000040820044380000084800008CA81E00A2
+S31AFE00CF77002C00000340820064813F0008A97E000239290001F8
+S31AFE00CF8C7C0B48004082001C3863FFFC381E0004907F000C9044
+S31AFE00CFA11F0234917F0008907F0010A01F000AB2FE0000B01EA4
+S31AFE00CFB60002387F002C3880000438BF002038DF001448003106
+S31AFE00CFCBB52C0300004080003892DC00003860FFFF48000038ED
+S31AFE00CFE02C00000540820014A81E00023860FFFF901C000048DF
+S31AFE00CFF50000203800000B901C00003860FFFF480000107C1B8F
+S31AFE00D00AC8004180FEA07F63DB788001003C7C0803A682C10084
+S31AFE00D01F1082E10014830100188321001C834100208361002429
+S31AFE00D0348381002883A1002C83C1003083E10034382100384E7C
+S31AFE00D0498000203803FFFF2800000B3D20FE0138693A744D8149
+S31AFE00D05E00203D60FE01396B3B905400103A7D4B002E3D20FE9F
+S31AFE00D0730139293B907D4A4A147D4903A64E8004203C60FE0155
+S31AFE00D08838633A844E8000203C60FE0138633A944E8000203C1A
+S31AFE00D09D60FE0138633AA84E8000203C60FE0138633ACC4E80A6
+S31AFE00D0B200203C60FE0138633AE44E8000203C60FE0138633A93
+S31AFE00D0C7F84E8000203C60FE0138633B0C4E8000203C60FE0164
+S31AFE00D0DC38633B1C4E8000203C60FE0138633B304E8000203C90
+S31AFE00D0F160FE0138633B4C4E8000203C60FE0138633B604E8018
+S31AFE00D10600203C60FE0138633B744E8000209421FFE87C0802FB
+S31AFE00D11BA693A1000C93C1001093E100149001001C3D2000001F
+S31AFE00D130800936D07C9F23782C0000004082007C480043113D5E
+S31AFE00D1452000013869988C800300042C00000540820018A003B6
+S31AFE00D15A00162C00000040820050480043E5480000482C00003C
+S31AFE00D16F0040820014480008D93800000A981F00004800006007
+S31AFE00D1843FA00001389D9ED038A000804800444D2C0300003BD4
+S31AFE00D199BD9ED03D2000003D60000093A939D8906B36D0408248
+S31AFE00D1AE000C38600000480000303D400000816A39D83D000096
+S31AFE00D1C300880B0000396B0001981F0000812836D0916A39D8A9
+S31AFE00D1D83929FFFF912836D0386000018001001C7C0803A68339
+S31AFE00D1EDA1000C83C1001083E10014382100184E80002094219C
+S31AFE00D202FFE07C0802A693A1001493C1001893E1001C90010033
+S31AFE00D217243D2000003BA932007C7E1B783BE0006448000028EB
+S31AFE00D22C37FFFFFF40820010480000513BE000644800001481EE
+S31AFE00D2413D0048386000647D2803A64E8000217FC3F3783881B0
+S31AFE00D25600084BFFFEBD2C0300004182FFCC8861000880010083
+S31AFE00D26B247C0803A683A1001483C1001883E1001C38210020CC
+S31AFE00D2804E8000209421FFE87C0802A693A1000C93C1001093A8
+S31AFE00D295E100149001001C3D2000013BA99F504800003080BEF7
+S31AFE00D2AA36D47FE3FB787FA4EB784800443D7C631B7940810009
+S31AFE00D2BF14801E36D47FBD1A147C030050901E36D4480041819F
+S31AFE00D2D43FC00000801E36D42C000000418200303D2000013BE2
+S31AFE00D2E9E9988C801F00042C0000054082000C7FE3FB78480060
+S31AFE00D2FE424D801F00042C0000004082FFA0480007413D20006B
+S31AFE00D313003BC93200801E00443D2000012C00000039299F500E
+S31AFE00D3283D6000003D4000003BE00000912B39DC93EA36D4411E
+S31AFE00D33D820010386000004BFFDC0D93FE00448001001C7C0884
+S31AFE00D35203A683A1000C83C1001083E10014382100184E8000DE
+S31AFE00D367209421FFF07C0802A693E1000C900100143D600000FB
+S31AFE00D37C812B39DC2C0400249889000039290001912B39DC40EE
+S31AFE00D391820010380000013D200000900939C03FE00000801F0B
+S31AFE00D3A639C0688B0023212B00007D6959143140FFFF7D2A01A9
+S31AFE00D3BB107D2058394182001C3D400000392000013D600000C8
+S31AFE00D3D038000000912A39C4900B39C83D600000812B36D4392C
+S31AFE00D3E52900012C090100912B36D44182002C3D200000800934
+S31AFE00D3FA39C42C000000418200283D600000812B39C83929005A
+S31AFE00D40F012C090003912B39C8408200104BFFFE693800000053
+S31AFE00D424901F39C0800100147C0803A683E1000C382100104E5E
+S31AFE00D4398000209421FFE87C0802A693A1000C93C1001093E15A
+S31AFE00D44E00149001001C4800055D7C7D1B783C60FE013C80FE79
+S31AFE00D4630138A000EC38843C8838633C804BFFE3D57FA3EB788D
+S31AFE00D478480005A58001001C7C0803A683A1000C83C1001083D8
+S31AFE00D48DE10014382100184E8000209421FFE87C0802A693A136
+S31AFE00D4A2000C93C1001093E100149001001C480005017C7D1B6A
+S31AFE00D4B7783C60FE013C80FE0138A000FE38843C9838633C80D1
+S31AFE00D4CC4BFFE3797FA3EB78480005498001001C7C0803A68339
+S31AFE00D4E1A1000C83C1001083E10014382100184E8000209421A5
+S31AFE00D4F6FFE87C0802A69381000893A1000C93C1001093E100D6
+S31AFE00D50B149001001C7C7D1B787C9E23784BFFFD6D3D200000F4
+S31AFE00D520800936CC3D6000001FE0000A3B8B32004800001481EC
+S31AFE00D5353C0048386000647D2803A64E8000217FA3EB787FC458
+S31AFE00D54AF3784BFFFBC97C631B79408200102C1F00003BFFFF86
+S31AFE00D55FFF4082FFD48001001C7C0803A68381000883A1000C19
+S31AFE00D57483C1001083E10014382100184E8000209421FF787CCB
+S31AFE00D5890802A693C1008093E100849001008C7C8023782C002D
+S31AFE00D59E000590A1001090C1001490E100189101001C912100E0
+S31AFE00D5B320914100249081000C3BC000004182002C2800000515
+S31AFE00D5C8418100102C00000441820194480003482C00000641EA
+S31AFE00D5DD8203082C0000074182030C480003343FE00000801F66
+S31AFE00D5F236D83D6000002C00000039200001912B36DC4082005F
+S31AFE00D60714480011C1907F36D82C03000041820308811F36D814
+S31AFE00D61C3808FFFF28000039418102F83D60FE01396B3CA85422
+S31AFE00D63100103A7D4B002E3D20FE0139293CA87D4A4A147D4913
+S31AFE00D64603A64E8004203D20FF0061290014816900007C0006CA
+S31AFE00D65BAC3948FFFF3C0080007C0054307D6B03789169000072
+S31AFE00D6707C0006AC480002A83D20FF0061290200A00900007C74
+S31AFE00D6850006AC60000008B00900007C0006AC480002883D205C
+S31AFE00D69AFF0061290200A00900007C0006AC60000004B00900F8
+S31AFE00D6AF007C0006AC480002683D20FF0061290240A0090000B1
+S31AFE00D6C47C0006AC60000004B00900007C0006AC480002483D05
+S31AFE00D6D920FF0061290220A00900007C0006AC60000008B00975
+S31AFE00D6EE00007C0006AC480002283D20FF0061290220A00900D2
+S31AFE00D703007C0006AC60000004B00900007C0006AC4800020842
+S31AFE00D7183D20FF0061290940800900007C0006AC6000008090A2
+S31AFE00D72D0900007C0006AC480001E83D20FF006129094881695A
+S31AFE00D74200007C0006AC3948FFE53C0080007C0054307D6B0394
+S31AFE00D75778916900007C0006AC480001BC3D60000083CB36DC17
+S31AFE00D76C38000000900B36DC3D200000814936D82C0A00004113
+S31AFE00D78182019C7D4853783808FFFF280000394181018C3D6055
+S31AFE00D796FE01396B3D905400103A7D4B002E3D20FE0139293D7B
+S31AFE00D7AB907D4A4A147D4903A64E8004203D20FF006129001455
+S31AFE00D7C0816900007C0006AC3948FFFF3C0080007C0054307D80
+S31AFE00D7D56B0078916900007C0006AC4800013C3D20FF006129C5
+S31AFE00D7EA0200A00900007C0006AC7000FFF75400043EB0090098
+S31AFE00D7FF007C0006AC480001183D20FF0061290200A0090000F1
+S31AFE00D8147C0006AC7000FFFB5400043EB00900007C0006AC489E
+S31AFE00D8290000F43D20FF0061290240A00900007C0006AC700083
+S31AFE00D83EFFFB5400043EB00900007C0006AC480000D03D20FFE6
+S31AFE00D8530061290220A00900007C0006AC7000FFF75400043E3D
+S31AFE00D868B00900007C0006AC480000AC3D20FF0061290220A024
+S31AFE00D87D0900007C0006AC7000FFFB5400043EB00900007C0026
+S31AFE00D89206AC480000883D20FF0061290940800900007C0006C1
+S31AFE00D8A7AC5400066E900900007C0006AC480000683D20FF0021
+S31AFE00D8BC61290948816900007C0006AC3948FFE53C0080007CC3
+S31AFE00D8D10054307D6B0078916900007C0006AC4800003C3D2051
+S31AFE00D8E6000083C936D848000030396100083801009039200093
+S31AFE00D8FB039BC100719921007090010074916100783D2000004E
+S31AFE00D910800B000883C936CC900936CC7FC3F3788001008C7C4C
+S31AFE00D9250803A683C1008083E10084382100884E800020942108
+S31AFE00D93AFFE07C0802A693A1001493C1001893E1001C900100F4
+S31AFE00D94F247C7D1B787C9F23787CA32B784BFFCCE93800000060
+S31AFE00D964901F00007FA3EB78388100084BFFF7A52C030000415F
+S31AFE00D979820018880100082C0000034082000C38000001901F85
+S31AFE00D98E000038600001800100247C0803A683A1001483C10099
+S31AFE00D9A31883E1001C382100204E8000209421FFE87C0802A6A4
+S31AFE00D9B89381000893A1000C93C1001093E100149001001C3F22
+S31AFE00D9CDA000003BBD3200813D00343860FFFF7D2803A64E80D3
+S31AFE00D9E20021801D00347C7C1B78386000007C0803A64E80001C
+S31AFE00D9F7217F83E3788001001C7C0803A68381000883A1000C93
+S31AFE00DA0C83C1001083E10014382100184E8000209421FFF87CAE
+S31AFE00DA210802A69001000C3D20000039293200800900347C086D
+S31AFE00DA3603A64E8000218001000C7C0803A6382100084E800056
+S31AFE00DA4B209421FFE87C0802A693A1000C93C1001093E10014AE
+S31AFE00DA609001001C3FA000003BBD3200817D00343D20000080E8
+S31AFE00DA756939D07D6803A63D20000038000000900939084E805B
+S31AFE00DA8A0021801D00303D200000806939D47C0803A64E800047
+S31AFE00DA9F213D20000038000001900939288001001C7C0803A6F3
+S31AFE00DAB483A1000C83C1001083E10014382100184E800020946A
+S31AFE00DAC921FFE87C0802A693A1000C93C1001093E10014900153
+S31AFE00DADE001C3FA000003BBD3200811D00343860FFFF7D08031A
+S31AFE00DAF3A63D400000392000013D60000038000000912A3908CC
+S31AFE00DB08900B39284E8000213D200000906939D0813D00343890
+S31AFE00DB1D6000017D2803A64E800021813D00303860FFFF7D2828
+S31AFE00DB3203A64E8000213D200000801D0030906939D43860007A
+S31AFE00DB47017C0803A64E8000218001001C7C0803A683A1000CAE
+S31AFE00DB5C83C1001083E10014382100184E8000209421FFE87C6D
+S31AFE00DB710802A69381000893A1000C93C1001093E10014900112
+S31AFE00DB86001C3FE00000801F36E02C000000408200A03FA00029
+S31AFE00DB9B003BBD3200813D00343860FFFF7D2803A64E80002182
+S31AFE00DBB0813D00347C7C1B78386000017D2803A64E8000218188
+S31AFE00DBC55D00143D20FE013929D43C912A00043D60FE01396B09
+S31AFE00DBDAD4983D20FE01916A00083929D368912A000C3D60FE68
+S31AFE00DBEF01396BD2003D20FE01916A00103929D584912A0014B5
+S31AFE00DC043D60FE01396BD9383D20FE01916A00183929D4F4918C
+S31AFE00DC192A001C801D00347F83E3787C0803A64E80002138002A
+S31AFE00DC2E0001901F36E03D2000003FA00001A089391A387D9811
+S31AFE00DC438C480038313BBD988C801D00043D200000900939CCD3
+S31AFE00DC588001001C7C0803A68381000883A1000C83C1001083D6
+S31AFE00DC6DE10014382100184E8000209421FFF07C0802A693E106
+S31AFE00DC82000C90010014480037C93D2000013BE9988C3D20008D
+S31AFE00DC9700817F0004800939CC7C005800418200602C0B0004B0
+S31AFE00DCAC408200484BFFFE193C6000013D20000139299F503C6C
+S31AFE00DCC180000038C39ED03CA00000396000013940000D3D0028
+S31AFE00DCD600003CE000003800000090C439D8916536D099439E06
+S31AFE00DCEBD0912839DC900736D4801F00042C0000004082000848
+S31AFE00DD004BFFFE6D3D200001800998903D600000900B39CC8089
+S31AFE00DD150100147C0803A683E1000C382100104E800020942137
+S31AFE00DD2AFFE87C0802A693A1000C93C1001093E1001490010010
+S31AFE00DD3F1C3D20000080E9391C2C070000408200283D0000003A
+S31AFE00DD54392000013D6000003D40000038002328912839149029
+S31AFE00DD69EB3A00900A39184800007C3C60FE013C8000003863DB
+S31AFE00DD7E3BFC38843A0038A000014BFF50793C60FE013C80001C
+S31AFE00DD930038633BD43884391838A000024BFF50613C60FE0150
+S31AFE00DDA83C80000038633C2C3884391438A000014BFF50493CA2
+S31AFE00DDBD60FE013C80000038633C483884370838A000054BFFF1
+S31AFE00DDD250313C60FE013C80000138633C7038841AB038A000BA
+S31AFE00DDE7054BFF50193D20000038000000900939344800034D38
+S31AFE00DDFC4800287D3D6000003D200000392938F83BEB38E87CD3
+S31AFE00DE111F48004182003C7D3D4B783BC00001813F00047FE3F3
+S31AFE00DE26FB787D2803A64E8000217C631B794182000C93DF007F
+S31AFE00DE3B0C48000008907F000C3BFF00107C1FE8004082FFD4F5
+S31AFE00DE503D20000080093A042C000000408200143C60FE0138C0
+S31AFE00DE65633E784BFFD9DD480000903D200000800939142C0054
+S31AFE00DE7A0000418200283C60000138631A9C48001E8D2C030094
+S31AFE00DE8F00418200143C60FE0138633E984BFFD9A94800001073
+S31AFE00DEA43D20000038000001900939343D200000800939342C4A
+S31AFE00DEB9000000418200403C60000038633708480001B97C64F5
+S31AFE00DECE1B783C60FE0138633EC44BFFD96D3C60000138631A8E
+S31AFE00DEE3B04800019D7C641B783C60FE0138633ECC4BFFD95169
+S31AFE00DEF84BFFFC758001001C7C0803A683A1000C83C100108385
+S31AFE00DF0DE10014382100184E8000209421FFF093E1000C38004B
+S31AFE00DF2200047C0903A67C9F2378388000003980001889630089
+S31AFE00DF370038E000012C0B000038A0000038C0000A386300010B
+S31AFE00DF4C4182011069600030212000007C0901147CE900394135
+S31AFE00DF61820030892300003809FFBF280000194181000C3809FA
+S31AFE00DF7600205409063E2C090078408200108D63000138C00069
+S31AFE00DF8B1038630001392BFFD0380BFFBF7D2A4B787C08037834
+S31AFE00DFA05529063E5400063E21290009392000007D294914203F
+S31AFE00DFB5000005380000007C0001147D27037938E000003920F4
+S31AFE00DFCA000040820010380BFF9F28000005418100083920003B
+S31AFE00DFDF012C090000418200685540063E280000094181000CF0
+S31AFE00DFF47D49537848000030380BFF9F280000054181000C39F6
+S31AFE00E0092BFFA94800001C5500063E200000057C0001107C0000
+S31AFE00E01E03B8392BFFC97C0948387C093000408000208963007C
+S31AFE00E033007C0531D62C0B00007CA04A14386300014082FF0C32
+S31AFE00E048480000142C0B002E4182000C386000004800001C7CB7
+S31AFE00E05DA060307C840378398CFFF84200FECC909F0000386070
+S31AFE00E072000183E1000C382100104E8000209421FFE87C0802AB
+S31AFE00E087A693A1000C93C1001093E100149001001C8903000372
+S31AFE00E09C3FA0000188A3000088C3000188E300023C80FE0138B4
+S31AFE00E0B1843EE8387DA0504BFFD705387DA0508001001C7C081B
+S31AFE00E0C603A683A1000C83C1001083E10014382100184E80005D
+S31AFE00E0DB20812300007C09180041820020812300049089000027
+S31AFE00E0F0800300049064000090040004908300044E800020906F
+S31AFE00E1058900049089000091240000912400044E8000207C6B18
+S31AFE00E11A1B78806B00007C0358004182001880030000900B009E
+S31AFE00E12F0081230000916900044E800020386000004E800020C1
+S31AFE00E1449421FFE87C0802A693A1000C93C1001093E10014903E
+S31AFE00E15901001C3D0000003CE00000392839E8396739E0912843
+S31AFE00E16E39E8916739E03D400001912900043BCAA070916B0019
+S31AFE00E183043FA000003BE000107FC4F378387D39E04BFFFF4967
+S31AFE00E19837FFFFFF3BDE06104082FFEC8001001C7C0803A68311
+S31AFE00E1ADA1000C83C1001083E10014382100184E8000209421CC
+S31AFE00E1C2FFF87C0802A69001000C80040000A1240004900300A4
+S31AFE00E1D710B123001480040000A10400043D200000396939F8DA
+S31AFE00E1EC900939F83D400000B10B0004906A3A044800001580FE
+S31AFE00E20101000C7C0803A6382100084E8000209421FFF87C084B
+S31AFE00E21602A69001000C81230000388300108009000038A000DA
+S31AFE00E22B007C0803A64E8000218001000C7C0803A638210008A3
+S31AFE00E2404E8000209421FF587C0802A67D800026934100909385
+S31AFE00E2556100949381009893A1009C93C100A093E100A49001A2
+S31AFE00E26A00AC9181008C3D2000003929320083A9004C3D60004B
+S31AFE00E27F002C1D00007C7B1B787C9A23787CBC2B7883EB3A047B
+S31AFE00E2943BC00005418200547FBFEB78815F0000801F000C81AD
+S31AFE00E2A96A00243D2000002C000000392936E4916A0028912AEB
+S31AFE00E2BE00244082002C800A00003C800000388439F87FE3FBA5
+S31AFE00E2D37838A000007C0803A64E800021801F000C60000001BA
+S31AFE00E2E8901F000C2E1D00004800003C813F00007FE3FB78807E
+S31AFE00E2FD09001C7C0803A64E8000213D2000003929320080094D
+S31AFE00E31200483C60000360630D407C0803A64E80002137DEFFCB
+S31AFE00E327FF408100E4813F00007FE3FB788009000C7C0803A6E2
+S31AFE00E33C4E8000212C0300004182FFB0813F00003D600000815A
+S31AFE00E35149001038A0000238EB39F09361000893410010938140
+S31AFE00E36600147FE3FB783881000838DC000E7D4803A63800002C
+S31AFE00E37B0E392000009001000C912B39F04E8000213D20000054
+S31AFE00E39080093A003FC000002C000000418200384BFFF6117CBE
+S31AFE00E3A57D1B783C60FE0138633EF44BFFD4957F63DB78388047
+S31AFE00E3BA000E4BFFDF617F43D3787F84E3784BFFDF557FA3EBBC
+S31AFE00E3CF784BFFF64D801E39F02C000000408200307FFDFB785C
+S31AFE00E3E47FDFF378813D00007FA3EB788009001C7C0803A64EF4
+S31AFE00E3F9800021801F39F02C0000004182FFE47FBFEB7841925C
+S31AFE00E40E0018813F000038000000816900289009002891690018
+S31AFE00E42324800100AC8181008C7C0803A6834100908361009408
+S31AFE00E4388381009883A1009C83C100A083E100A47D80812038AD
+S31AFE00E44D2100A84E8000209421FFF87C0802A69001000C3D202D
+S31AFE00E4620000380939F07C0400004082001038000001900939DA
+S31AFE00E477F0480000188123000081690028800B00087C0803A6C6
+S31AFE00E48C4E8000218001000C7C0803A6382100084E80002094EB
+S31AFE00E4A121FFE07C0802A69361000C9381001093A1001493C176
+S31AFE00E4B6001893E1001C900100243D20000039293200838900F3
+S31AFE00E4CB4C3D6000002C1C00007C7D1B787C9B237883CB3A043D
+S31AFE00E4E0418200547F9EE378815E0000801E000C816A00243DBF
+S31AFE00E4F52000002C000000392936E4916A0028912A0024408282
+S31AFE00E50A002C800A00003C800000388439F87FC3F37838A00014
+S31AFE00E51F007C0803A64E800021801E000C60000001901E000C02
+S31AFE00E534813E00007FC3F3788009001C7C0803A64E8000213C65
+S31AFE00E549600000386339E84BFFFBC97C7F1B7941820054393F71
+S31AFE00E55E000CA009000C817F000C8149000481090008B01D00AA
+S31AFE00E5730C917D0000915D0004911D000880BF00087F63DB7851
+S31AFE00E58838A5FFF2389F001A4BFFCAB13C600000386339E07F27
+S31AFE00E59DE4FB784BFFFB3D807F000848000008386000002C1C55
+S31AFE00E5B2000041820018813E00003800000081690028900900D3
+S31AFE00E5C72891690024800100247C0803A68361000C838100101F
+S31AFE00E5DC83A1001483C1001883E1001C382100204E8000209417
+S31AFE00E5F121FFE87C0802A693A1000C93C1001093E10014900120
+S31AFE00E606001C7CA02B797C0903A64081003C7C9F23787FC902F4
+S31AFE00E61BA63FA00000807F000080BF0004809D39F44BFFCA15AC
+S31AFE00E630801D39F4813F000437DEFFFF7C004A143BFF00089084
+S31AFE00E6451D39F44082FFD88001001C7C0803A683A1000C83C19B
+S31AFE00E65A001083E10014382100184E8000209421FF607C080226
+S31AFE00E66FA69361008C9381009093A1009493C1009893E1009C04
+S31AFE00E684900100A47C7E1B783C6000007C9B2378386339E04B6E
+S31AFE00E699FFFA817C7C1B787F89FE707D20E2787C004850817EE3
+S31AFE00E6AE00007C00FE70393C000C7D3F0038800B001493E100E1
+S31AFE00E6C3089361000C7FC3F3783881000838A000017C0803A6C2
+S31AFE00E6D84E8000213D20000080093A002C000000418200384BA8
+S31AFE00E6EDFFF2C57C7D1B783C60FE0138633F044BFFD1497FE393
+S31AFE00E702FB783880000E4BFFDC15387F000E389BFFF24BFFDCDB
+S31AFE00E717097FA3EB784BFFF301813E0000800900282C00000081
+S31AFE00E72C4182005C3C60000038633708389F001E38A000044B23
+S31AFE00E741FFD3752C03000041820040815E00007FC3F378812A0F
+S31AFE00E75600287F64DB78800900043D60FE017C0803A683AA00C9
+S31AFE00E76B14396BE5F03D20000093E939F4916A00144E80002104
+S31AFE00E780813E000093A900142C1C0000418200183C600000931F
+S31AFE00E7957C0008386339E87F84E3784BFFF93D800100A47C08A4
+S31AFE00E7AA03A68361008C8381009083A1009483C1009883E100B1
+S31AFE00E7BF9C382100A04E8000209421FFF87C0802A69001000C49
+S31AFE00E7D43D20000080693A0481630000800B00207C0803A64E9E
+S31AFE00E7E98000218001000C7C0803A6382100084E8000209421B8
+S31AFE00E7FEFFF87C0802A69001000C7C641B783C60FE0138633F5A
+S31AFE00E813144BFFD0318001000C7C0803A6382100084E80002084
+S31AFE00E8289421FFF07C0802A693E1000C900100143D2000013B49
+S31AFE00E83DE91F1C801F001C2C0000004082002C90691F1C909F66
+S31AFE00E85200044800049D7C631B794082001C801F00083920006F
+S31AFE00E867017C0000D0913F001C901F0010386000008001001473
+S31AFE00E87C7C0803A683E1000C382100104E8000203D20000139F8
+S31AFE00E891291F1C8009001C7C6B1B782C0000004082000C386059
+S31AFE00E8A600074E800020800900147C0B004041800014800900A2
+S31AFE00E8BB18386000007C0B00404D800020386000014E80002059
+S31AFE00E8D03D20000139691F1C800B001C2C0000004182001C81C1
+S31AFE00E8E52B00143860000091240000800B0018900500004E8088
+S31AFE00E8FA0020386000074E8000203D20000139691F1C800B0092
+S31AFE00E90F1C7C6A1B782C0000004182001C812B00083860000003
+S31AFE00E924912A0000800B000C900400004E800020386000074E19
+S31AFE00E9398000209421FFD87C0802A69321000C934100109361D5
+S31AFE00E94E00149381001893A1001C93C1002093E1002490010083
+S31AFE00E9632C3D20000180091F387C7F1B782C0000007C9E2378C2
+S31AFE00E9787CBA2B783B8000004082000C38600007480000F83D08
+S31AFE00E98D20000183A91F1C3C80FE013CA0FE013884EF1C38A5AF
+S31AFE00E9A2F0447CA428507FA3EB784BFFC6957CBFF214380000ED
+S31AFE00E9B7807C0903A639200000612010003D600E007C0004ACD8
+S31AFE00E9CC7D398BA67D788BA67C198BA67D788BA6392900104285
+S31AFE00E9E100FFE03C0004004C00012C7C108BA64C00012C3D20F2
+S31AFE00E9F6000139291F1C800900107CBE2B783C60FE017FFF00DB
+S31AFE00EA0B383F20FE017D3B4B7838633F507FE4FB784BFFCE29A0
+S31AFE00EA204800001C801B000838793F685400F87E7C0002147FA3
+S31AFE00EA35FF02144BFFCE0D7C1FF040408000207FE3FB787FA8E7
+S31AFE00EA4A03A64E800021480003657C7C1B794182FFCC93FA00C4
+S31AFE00EA5F003C0002004C00012C7C108BA64C00012C3C60FE0116
+S31AFE00EA7438633F6C4BFFCDCD7F83E3788001002C7C0803A683A5
+S31AFE00EA8921000C83410010836100148381001883A1001C83C1DB
+S31AFE00EA9E002083E10024382100284E8000209421FFD07C08023E
+S31AFE00EAB3A692E1000C9301001093210014934100189361001CBD
+S31AFE00EAC89381002093A1002493C1002893E1002C900100343D8B
+S31AFE00EADD600001392B1F1C8009001C7CBE2B782C0000007CD81E
+S31AFE00EAF233787C7C1B787C9D23783B4000004082000C38600040
+S31AFE00EB07074800011C836B1F1C3C80FE013CA0FE013884F044DA
+S31AFE00EB1C38A5F1887CA428507F63DB784BFFC5197CBDF214381E
+S31AFE00EB310000807C0903A639200000612010003D600E007C000C
+S31AFE00EB4604AC7D398BA67D788BA67C198BA67D788BA6392900AB
+S31AFE00EB5B104200FFE03C0004004C00012C7C108BA64C00012C81
+S31AFE00EB703C60FE0138633F707FA4EB787F86E3784BFFCCC53DA9
+S31AFE00EB852000013EE0FE013B291F1C4800002038773F684BFF92
+S31AFE00EB9ACCAD57E0F87E7C0002147FBD02147FDFF0507F9C029D
+S31AFE00EBAF142C1E000040810050801900087FC5F3787F8500008A
+S31AFE00EBC47F83E3787FA4EB784FFEE3827D200026552907FE7DE0
+S31AFE00EBD92900D07C0048787CA948387D2503787F6803A67CBF61
+S31AFE00EBEE2B784E800021480001C17C7A1B794182FF9893980063
+S31AFE00EC03003C0002004C00012C7C108BA64C00012C3C60FE0170
+S31AFE00EC1838633F6C4BFFCC297F43D378800100347C0803A682ED
+S31AFE00EC2DE1000C8301001083210014834100188361001C8381B5
+S31AFE00EC42002083A1002483C1002883E1002C382100304E8000FE
+S31AFE00EC572028030007418100883D60FE01396B40805460103A0A
+S31AFE00EC6C7D4B002E3D20FE01392940807D4A4A147D4903A64E39
+S31AFE00EC818004203C60FE0138633F904E8000203C60FE013863AD
+S31AFE00EC963FB04E8000203C60FE0138633FC84E8000203C60FEC3
+S31AFE00ECAB0138633FE04E8000203C60FE0138633FFC4E80002048
+S31AFE00ECC03C60FE01386340144E8000203C60FE01386340244EDB
+S31AFE00ECD58000203C60FE01386340484E8000203C60FE013863A4
+S31AFE00ECEA406C4E8000209421FFE07C0802A693A1001493C1001B
+S31AFE00ECFF1893E1001C900100243D20000183E91F1C3C80FE01DF
+S31AFE00ED143CA0FE013884EE8038A5EF1C7CA428507FE3FB784B41
+S31AFE00ED29FFC3193FC000013BA0000838610008380000807C0935
+S31AFE00ED3E03A639200000612010003D600E007C0004AC7D398B11
+S31AFE00ED53A67D788BA67C198BA67D788BA6392900104200FFE05C
+S31AFE00ED687FE803A64E8000217D3DF1D63D600001396B1F1C3D58
+S31AFE00ED7D29FE003C00FE00912B0018900B001493CB000893ABF5
+S31AFE00ED92000C38600000800100247C0803A683A1001483C10076
+S31AFE00EDA71883E1001C382100204E8000209421FFF07C0802A684
+S31AFE00EDBC93E1000C900100143C00007E7C7F1B786000007E7F74
+S31AFE00EDD1E90039418200503C60FE01386340A07FE4FB784BFFBE
+S31AFE00EDE6CA613C000010600000107FE90039386000044082002E
+S31AFE00EDFB303C600020606300207FE318387C6300D07C63FE7082
+S31AFE00EE107C6018F8546307BC540007387C63037848000008380E
+S31AFE00EE25600000800100147C0803A683E1000C382100104E800B
+S31AFE00EE3A00203D20FE00392920007C0348407C8023783960008B
+S31AFE00EE4F004181000C7C0048404181001C3D20FE0138891D4C74
+S31AFE00EE647C032040418100107C00204040810008396000017D28
+S31AFE00EE79635B784E8000207D588AA6554A0FFE2C0A00004182B2
+S31AFE00EE8E0040380000807C0903A639200000612010003D600EB0
+S31AFE00EEA3007C0004AC7D398BA67D788BA67C198BA67D788BA631
+S31AFE00EEB8392900104200FFE03C0004007C0004AC7C188BA63D40
+S31AFE00EECD60FE00380000AA980B055539200055992B02AA380099
+S31AFE00EEE20090980B0555892B00002C0A000099230000880B0051
+S31AFE00EEF701392000FF98030001992B0000418200103D600200D7
+S31AFE00EF0C7C0004AC7D788BA6386000004E8000207C6A1B787C1F
+S31AFE00EF21F88AA654E70FFE2C07000041820040380000807C09F4
+S31AFE00EF3603A639200000612010003D600E007C0004AC7D398B17
+S31AFE00EF4BA67D788BA67C198BA67D788BA6392900104200FFE062
+S31AFE00EF603C0004007C0004AC7C188BA655480010396000AA99DE
+S31AFE00EF7568055539200055992802AA38000080980805559968F3
+S31AFE00EF8A0555992802AA392000327D2903A62F870000380000DF
+S31AFE00EF9F30980A0000396A0001420000003D20004C7D2903A6A9
+S31AFE00EFB4880A00005400067261294B407D2903A65400063E8862
+S31AFE00EFC96A0000546906727C09000041820014706000207D20A7
+S31AFE00EFDE4B78408200084200FFE4380000FF98080000892A00DE
+S31AFE00EFF3007D6A5B782C0900FF3D2000014082001C3529FFFF7F
+S31AFE00F00840810014880A0000394A00012C0000FF4182FFEC7DAE
+S31AFE00F01D2BFE707D604A787C0058507C00FE707C6300384D9E92
+S31AFE00F03200203C0002007C0004AC7C188BA64E8000209421FFD4
+S31AFE00F047F093C1000893E1000C7D588AA6554A0FFE2C0A0000FD
+S31AFE00F05C41820040380000807C0903A639200000612010003D8B
+S31AFE00F071000E007C0004AC7D398BA67D188BA67C198BA67D1844
+S31AFE00F0868BA6392900104200FFE03D2004007C0004AC7D388BE0
+S31AFE00F09BA62C0500002F8A0000546A0010408100A03BC000AAF8
+S31AFE00F0B03BE00055398000A038C000FF9BCA05559BEA02AA99FE
+S31AFE00F0C58A0555880400003920003198030000380000327C09AE
+S31AFE00F0DA03A63904000138E300013929FFFF4200FFFC880300F2
+S31AFE00F0EF007D2903A6540006725400063E896300005569067233
+S31AFE00F1047C09000041820014716000207D204B78408200084239
+S31AFE00F11900FFE498CA000089230000880400007D0443787C099F
+S31AFE00F12E00007CE33B784182000C396000FF4800000C34A5FF23
+S31AFE00F143FF4181FF787CA8FE707D002A787C0040507C00FE70D4
+S31AFE00F158392000FF992A00007D6B0038419E00103D2002007C99
+S31AFE00F16D0004AC7D388BA67D635B7883C1000883E1000C38212B
+S31AFE00F18200104E8000209421FFF87C0802A69001000C3803FFC7
+S31AFE00F197FE2800001D418100A03D60FE01396B40B05400103AEC
+S31AFE00F1AC7D4B002E3D20FE01392940B07D4A4A147D4903A64EC4
+S31AFE00F1C18004203860000248000078386000414BFFA29154632A
+S31AFE00F1D67F3E2C0300024182004028030002418100102C030001
+S31AFE00F1EB01418200384800004C2C030004418200242C0300082A
+S31AFE00F2004082003C38600008480000383860000E480000303881
+S31AFE00F21560000C4800002838600004480000203860000548001B
+S31AFE00F22A00183860000A480000103860000B480000083860002E
+S31AFE00F23F0F8001000C7C0803A6382100084E8000203D20000041
+S31AFE00F254816939A0806B00985463C23E4E8000209421FFF87C8E
+S31AFE00F2690802A69001000C7C641B78386000404BFFA1FD80018B
+S31AFE00F27E000C7C0803A6382100084E8000209421FFF87C0802BD
+S31AFE00F293A69001000C386000414BFFA1C56064060054800420D4
+S31AFE00F2A83D2000005484045E900936F0386000414BFFA1BD80F6
+S31AFE00F2BD01000C7C0803A6382100084E8000209421FFF87C087F
+S31AFE00F2D202A69001000C386000414BFFA1853D200000808936F9
+S31AFE00F2E7F0546305E8380000007C642378900936F0386000412F
+S31AFE00F2FC4BFFA1798001000C7C0803A6382100084E8000204E3E
+S31AFE00F3118000204E8000209421FFF87C0802A69001000C386048
+S31AFE00F32600404BFFA1393D20FE0139299D387C634A7820030013
+S31AFE00F33B007C6019148001000C7C0803A6382100084E800020A7
+S31AFE00F3509421FFF87C0802A69001000C386000404BFFA1013833
+S31AFE00F365830004386000404BFFA1098001000C7C0803A6382129
+S31AFE00F37A00084E8000209421FFF87C0802A69001000C3D2000B2
+S31AFE00F38F00800936F42C0000004082001038000001900936F4B8
+S31AFE00F3A4480008118001000C7C0803A6382100084E8000203DA9
+S31AFE00F3B9200000800936F82C0000004C82002038000001900978
+S31AFE00F3CE36F87D1E9AA67508FFFF3D2000017D2903A63800803D
+S31AFE00F3E301B00809C07C0902A6600086A07C0903A6420000006C
+S31AFE00F3F880080ABC3D600001600000C090080ABC81280AB861C6
+S31AFE00F40D6B00A2552906AE91280AB8916809F07CE902A690E8B5
+S31AFE00F4220AE038002800B0083E8039683E8038002808B00B008F
+S31AFE00F4370239200091B12809C03940000191480030380000185B
+S31AFE00F44C980B0004980B0005B14B0006B0EB0028B0EB002CB01C
+S31AFE00F461EB002EB14B003039282800B0E900023800B000B00889
+S31AFE00F476280038082810900900043968280838082820B14B00EB
+S31AFE00F48B02900B000439202000B1282808380000FF98080A86DE
+S31AFE00F4A03920000599280A8A38004820B0080A8239204823B147
+S31AFE00F4B5280A824E80002039233E80A00900207D4302147D4B1B
+S31AFE00F4CA5378A00A00007008800041820028A00A00007008208F
+S31AFE00F4DF0041820010A00900027D43021448000008394A0008E5
+S31AFE00F4F47C0A58004082FFD47D495378A0090000700080004022
+S31AFE00F50982FFF87D2A4B787C090378A00A0000700B100041820E
+S31AFE00F51E0014A00A00007000EFFFB00A0000B12A0002A12A0056
+S31AFE00F533023900000038090001B00A0002816A00045529043ED7
+S31AFE00F5487C8B49AEA00A000060008000B00A0000A12A0000712C
+S31AFE00F55D208000418200647D4B53787D0A43783D00000761084C
+S31AFE00F572FFFF394A00017C0A400040820038A1230A8239400075
+S31AFE00F587007129FFFDB1230A82A00B00005400047EB00B000039
+S31AFE00F59CA1230A8261290002B1230A82A00B000060008000B0DF
+S31AFE00F5B10B0000A00B0000700980004082FFB87D6A5B787D4999
+S31AFE00F5C65378A0090000700080004082FFF87D2A4B78B00A00EB
+S31AFE00F5DB024E80002038E33E80A10700107C03422E7D43421491
+S31AFE00F5F0700680004182000C386000004E800020812A000439CF
+S31AFE00F6056000008809000098040000B0CA0002812A0004996932
+S31AFE00F61A00007C03422E600080007C03432E7D388AA655290FA6
+S31AFE00F62FFE2C09000041820028812A0004A00700062C0000001C
+S31AFE00F644408100187C004BAC7C0004AC3400FFF039290010415F
+S31AFE00F65981FFF0386000014E8000209421FFE87C0802A693E165
+S31AFE00F66E00149001001C7C7F1B787FE3FB78388100084BFFFF55
+S31AFE00F683612C0300004182FFF0886100088001001C7C0803A671
+S31AFE00F69883E10014382100184E8000209421FFE87C0802A69327
+S31AFE00F6ADA1000C93C1001093E100149001001C7CBF2B787FE0C1
+S31AFE00F6C2FB782C0000007C7D1B787C9E23783BFFFFFF41820054
+S31AFE00F6D724889E00007FA3EB784BFFFDDD7FE0FB782C00000029
+S31AFE00F6EC3BDE00013BFFFFFF4082FFE48001001C7C0803A683C1
+S31AFE00F701A1000C83C1001083E10014382100184E800020942162
+S31AFE00F716FFE87C0802A693A1000C93C1001093E100149001000A
+S31AFE00F72B1C7CBF2B787FE0FB782C0000007C7D1B787C9E23788C
+S31AFE00F7403BFFFFFF418200247FA3EB784BFFFF197FE0FB782CAC
+S31AFE00F755000000987E00003BDE00013BFFFFFF4082FFE480010D
+S31AFE00F76A001C7C0803A683A1000C83C1001083E10014382100E8
+S31AFE00F77F184E8000209421FFE87C0802A69381000893A1000C47
+S31AFE00F79493C1001093E100149001001C3D200000800936FC3D6E
+S31AFE00F7A96000001FE0000A3B8B32007C7D1B787C9E237848005D
+S31AFE00F7BE0014813C0048386000647D2803A64E8000217FA3EBD3
+S31AFE00F7D3787FC4F3784BFFFE097C631B79408200102C1F000016
+S31AFE00F7E83BFFFFFF4082FFD48001001C7C0803A68381000883E2
+S31AFE00F7FDA1000C83C1001083E10014382100184E800020942166
+S31AFE00F812FF807C8023782C00000590A1001090C1001490E1007F
+S31AFE00F827189101001C91210020914100249081000C3860000085
+S31AFE00F83C4182002C28000005418100102C000004418201444845
+S31AFE00F8510002B42C000006418202782C000007418202784800C1
+S31AFE00F86602A03D60FE01800B41FC3D20FE01392941287D2902B4
+S31AFE00F87B147D2903A64E8004203D20FF0061290014800900009C
+S31AFE00F8907C0006AC60000400900900007C0006AC480000E03DA1
+S31AFE00F8A520FF0061290200A00900007C0006AC60000008B009A7
+S31AFE00F8BA00007C0006AC480000C03D20FF0061290200A009006E
+S31AFE00F8CF007C0006AC60000004B00900007C0006AC480000A0BF
+S31AFE00F8E43D20FF0061290240A00900007C0006AC60000004B0F8
+S31AFE00F8F90900007C0006AC480000803D20FF0061290220A00946
+S31AFE00F90E00007C0006AC60000008B00900007C0006AC4800001B
+S31AFE00F923603D20FF0061290220A00900007C0006AC6000000428
+S31AFE00F938B00900007C0006AC480000403D20FF00612909408098
+S31AFE00F94D0900007C0006AC60000080900900007C0006AC48007B
+S31AFE00F96200203D20FF0061290948800900007C0006AC6000001E
+S31AFE00F97710900900007C0006AC3D20000038000001900937003A
+S31AFE00F98C480001783D2000008069370038000000900937003DDF
+S31AFE00F9A160FE01800B42E43D20FE01392942107D2902147D29CB
+S31AFE00F9B603A64E8004203D20FF0061290014800900007C000698
+S31AFE00F9CBAC540005A8900900007C0006AC4800012C3D20FF00DE
+S31AFE00F9E061290200A00900007C0006AC7000FFF75400043EB0FF
+S31AFE00F9F50900007C0006AC480001083D20FF0061290200A009E0
+S31AFE00FA0A00007C0006AC7000FFFB5400043EB00900007C00067A
+S31AFE00FA1FAC480000E43D20FF0061290240A00900007C0006ACF7
+S31AFE00FA347000FFFB5400043EB00900007C0006AC480000C03D8D
+S31AFE00FA4920FF0061290220A00900007C0006AC7000FFF7540048
+S31AFE00FA5E043EB00900007C0006AC4800009C3D20FF006129029A
+S31AFE00FA7320A00900007C0006AC7000FFFB5400043EB0090000CA
+S31AFE00FA887C0006AC480000783D20FF0061290940800900007C43
+S31AFE00FA9D0006AC5400066E900900007C0006AC480000583D2012
+S31AFE00FAB2FF0061290948800900007C0006AC5400073490090082
+S31AFE00FAC7007C0006AC4800003838600036480000303961000890
+S31AFE00FADC380100883920000398610071992100709001007491CA
+S31AFE00FAF16100783D200000800B0008806936FC900936FC3821F4
+S31AFE00FB0600804E8000209421FFE87C0802A693C1001093E100D8
+S31AFE00FB1B149001001C7C9E2378392000007C7F1B78913E0000A5
+S31AFE00FB30881F0A86700B00014182006038000001981F0A86A1C5
+S31AFE00FB453F2800391F2800712080004082003C8128000439408B
+S31AFE00FB5A0001880900003960B00098010008B1480002B17F28C3
+S31AFE00FB6F0038610008388000014BFFB3A92C0300004182000C7F
+S31AFE00FB8438000001901E000038000010901F094C392000017D5E
+S31AFE00FB99234B788001001C7C0803A683C1001083E1001438217E
+S31AFE00FBAE00184E8000209421FFF07C0802A693C1000893E10098
+S31AFE00FBC30C900100143D2000003BE93200813F00343860FFFF3B
+S31AFE00FBD87D2803A64E8000217C7E1B787C1E9AA67400FFFF3DC1
+S31AFE00FBED200000800937042C00000040820094380000019009C7
+S31AFE00FC0237044BFFF7B5813F0034386000007D2803A64E800010
+S31AFE00FC1721815F00147C1E9AA67400FFFF3D20FE01900A00007D
+S31AFE00FC2C3929F6A4912A00043D60FE01396BF7143D20FE0191CC
+S31AFE00FC416A00083929F4BC912A000C3D60FE01396BF6643D2068
+S31AFE00FC56FE01916A00103929F810912A00143D60FE01396BFB17
+S31AFE00FC6B0C3D20FE01916A00183929F784912A001C801F00347E
+S31AFE00FC807FC3F3787C0803A64E800021800100147C0803A6835D
+S31AFE00FC95C1000883E1000C382100104E8000209421FFF07C089E
+S31AFE00FCAA02A693E1000C900100143D20000080693A087C9F23AE
+S31AFE00FCBF782C030000418200084BFFB379881F00002C0000026F
+S31AFE00FCD44082002C3C800000388439F8387F001C38A000064B84
+S31AFE00FCE9FFBDCD2C03000040820010801F00103D2000009009D3
+S31AFE00FCFE3708800100147C0803A683E1000C382100104E800045
+S31AFE00FD13209421FE887C0802A69321015C9341016093610164B1
+S31AFE00FD289381016893A1016C93C1017093E101749001017C3DAB
+S31AFE00FD3D20000090693A08386100187C791B783880000038A089
+S31AFE00FD52012C4BFFB3C53D200000808939F8396939F8A06B0034
+S31AFE00FD67043D201234394000003CE0000038C00001612955551A
+S31AFE00FD7C396000063907370898C100199961001A9121001C9963
+S31AFE00FD9147370899480003380000FF90810034B0610038980191
+S31AFE00FDA6015198C1001899480001994800023CA0FE017D1D4304
+S31AFE00FDBB7838A5FCA498010148980101499801014A9801014BAC
+S31AFE00FDD09801014C9801014D9801014E9801014F98010150385A
+S31AFE00FDE561000838800044480000D53B8000023B4101483F6062
+S31AFE00FDFA000048001F0D7C7E1B787F23CB783880012C7F45D38E
+S31AFE00FE0F7838C0004338E000444800024948000AA1881B370863
+S31AFE00FE242C00000040820028881D00012C0000004082001C8877
+S31AFE00FE391D00022C000000408200108BFD00032C1F00004182FA
+S31AFE00FE4E001438600044480000BD386000004800003848001E28
+S31AFE00FE63A97C7E1850280307CF4081FFB07F80E3782C00000084
+S31AFE00FE783B9CFFFF4181FF80386000444800008D3D20000093BA
+S31AFE00FE8DE93A003860FFFF8001017C7C0803A68321015C8341B3
+S31AFE00FEA20160836101648381016883A1016C83C1017083E10185
+S31AFE00FEB774382101784E8000203D20000081293A0C2C0900007C
+S31AFE00FECC41820024A00900047C0020004082000C3860FFFF4E3B
+S31AFE00FEE1800020812900002C0900004082FFE43D2000008009FE
+S31AFE00FEF63A0C90693A0CB083000490A3000890030000386000D1
+S31AFE00FF0B004E8000203D20000081293A0C396000002C090000D4
+S31AFE00FF204D8200207D2A4B78A00900047C0018004082001C2C24
+S31AFE00FF350B00004182001080090000900B000048000008814997
+S31AFE00FF4A00007D2B4B78812900002C0900004082FFD03D200066
+S31AFE00FF5F0091493A0C4E8000209421FFE87C0802A69381000897
+S31AFE00FF7493A1000C93C1001093E100149001001C7C7E1B78838B
+S31AFE00FF89FE000838000000A13F00066000FFFF7C090000817E59
+S31AFE00FF9E00047C9C23784082000C38000000B01F0006A01F00F9
+S31AFE00FFB3047D635B78B00B0002A3BF0004480008CD7C651B78CA
+S31AFE00FFC87FA4EB787FE3FB78480008512C030000408200603D96
+S31AFE00FFDD20000081693A0C2C0B000041820050A12B0004A01FE2
+S31AFE00FFF200027C09000040820034A0BF0004800B00087D635B48
+S31AFE0100077838A5FFF87F86E378A0FF0000389F00087C0803A688
+S31AFE01001C4E8000217FC3F378480007D948000018816B00002C8E
+S31AFE0100310B00004082FFB87FC3F378480007C18001001C7C0853
+S31AFE01004603A68381000883A1000C83C1001083E1001438210096
+S31AFE01005B184E8000209421FFD87C0802A6930100089321000C71
+S31AFE01007093410010936100149381001893A1001C93C100209307
+S31AFE010085E100249001002C7C9C2378281C05C07C791B787CB827
+S31AFE01009A2B787CDA33787CFE3B78418100A8386005EA4800063C
+S31AFE0100AFED7C7F1B794182009883BF0008381C0008837F0004B4
+S31AFE0100C4B01F000CB3DD0000B35D0002A01F000C392000007F02
+S31AFE0100D985E378B01D0004B13D00067F24CB78387D00084BFF7B
+S31AFE0100EEAF553D2000008009370839600011901B000C813800B5
+S31AFE01010300997B0009913B0010A01D00047F63DB78B01B000226
+S31AFE010118A39F000C480007717C651B787F84E3787FA3EB784820
+S31AFE01012D0006F5B07D00067F05C3787FE3FB78388000114800E5
+S31AFE01014204457FE3FB78480006B58001002C7C0803A683010024
+S31AFE010157088321000C83410010836100148381001883A1001CAE
+S31AFE01016C83C1002083E10024382100284E8000209421FFD87C16
+S31AFE0101810802A69381001893A1001C93C1002093E1002490019B
+S31AFE010196002C7CBF2B787C7D1B787C9C23787CDE33787FE3FBA4
+S31AFE0101AB783881000848001A252C03000041800024A0DF0004E3
+S31AFE0101C0A0FE00047FA3EB787F84E37838A100084BFFFE9138AE
+S31AFE0101D56000004800001C3C60FE013C80FE01386342F8388465
+S31AFE0101EA431C4BFFB6593860FFFF8001002C7C0803A6838100CF
+S31AFE0101FF1883A1001C83C1002083E10024382100284E80002033
+S31AFE0102149421FFE87C0802A69381000893A1000C93C1001093B5
+S31AFE010229E100149001001C3F8000007CBF2B783D200000807C23
+S31AFE01023E3A107CDD33787CFE3B7893E93A144BFFADF53D200018
+S31AFE0102530081693A182C0B00004182001CB3CB0004801D000020
+S31AFE01026839200000900B0000913C3A10480000143C60FE013842
+S31AFE01027D63432C7FE4FB784BFFB5C18001001C7C0803A6838131
+S31AFE010292000883A1000C83C1001083E10014382100184E80000F
+S31AFE0102A7209421FFD07C0802A6934100189361001C938100203D
+S31AFE0102BC93A1002493C1002893E1002C90010034A3A600047C26
+S31AFE0102D1BA2B787C7E1B787C9C23783CA0FE017CFF3B7838A590
+S31AFE0102E60214386100087FA4EB784BFFFBD12C030000408000BC
+S31AFE0102FB0C3860FFFF48000084813F00043C001062817F000009
+S31AFE01031060004DD37D2900161D6B03E85529D1BE7F6B4A143D92
+S31AFE0103254000003D2000003D60000093CA3A1093893A14934B95
+S31AFE01033A3A18480019CD7FBAEB787C7E1B783BE0FFFF3FA00008
+S31AFE01034F003F800000480019B57C7E18507C03D84040800018EE
+S31AFE01036448000559801D3A102C0000004082FFE483FC3A147FD5
+S31AFE01037943D3784BFFFB957FE3FB78800100347C0803A6834187
+S31AFE01038E00188361001C8381002083A1002483C1002883E10001
+S31AFE0103A32C382100304E8000209421FFF07C0802A693E1000C4D
+S31AFE0103B8900100147C691B78880900002C0000FF4082002C88DC
+S31AFE0103CD0900012C0000FF40820020880900022C0000FF40827F
+S31AFE0103E2001488090003386000012C0000FF418200643FE0004F
+S31AFE0103F7007D234B78389F370838A000044BFFB6B12C030000B7
+S31AFE01040C4082000C3860000148000040881F3708389F37082CBF
+S31AFE0104210000004082002C880400012C000000408200208804AC
+S31AFE01043600022C0000004082001488040003386000012C000054
+S31AFE01044B004182000838600000800100147C0803A683E1000C02
+S31AFE010460382100104E8000209421FFD87C0802A693A1001C9390
+S31AFE010475C1002093E100249001002C7C7E1B7883FE00047C9D0C
+S31AFE01048A2378387F00104BFFFF1D2C03000041820020A09F003F
+S31AFE01049F007FE3FB785484D6BA38A00000480003752C0300003F
+S31AFE0104B4418200107FC3F37848000341480000A8801F000C8106
+S31AFE0104C93D0000A17D0004900100089121000CB1610010A13F61
+S31AFE0104DE0000A01F00025523D6BA7C030050B01E000C881F00EB
+S31AFE0104F3092C00000641820038418100102C00000141820014E3
+S31AFE010508480000582C000011418200384800004C7C1F1A149014
+S31AFE01051D1E00087FC3F37838810008480005054800003C7C1FBF
+S31AFE0105321A14901E00087FC3F3783881000848000AE5480000DE
+S31AFE010547247C1F1A14901E00087FC3F378388100084BFFFA1134
+S31AFE01055C4800000C7FC3F378480002998001002C7C0803A68344
+S31AFE010571A1001C83C1002083E10024382100284E8000209421A3
+S31AFE010586FFE07C0802A69361000C9381001093A1001493C10090
+S31AFE01059B1893E1001C900100247C7C1B7883BC000480FC000897
+S31AFE0105B0A13C000C7CFD38507D293A14B13C000CA01D00005449
+S31AFE0105C5E9352E5400053E600040007000F0FF7C004B78B01D2E
+S31AFE0105DA000039200000993D00013D000000A1283A1CA01C00BF
+S31AFE0105EF0CB13D0004B01D000239690001B1683A1C394000009A
+S31AFE01060438000040989D0009981D0008B15D000AB15D00063D00
+S31AFE010619200000800937087CBB2B78901D000C813B00007CE430
+S31AFE01062E3B78913D00107FA3EB7838A00000480001E5B07D0069
+S31AFE0106430A7F83E378389B000438A0080048000371800100241E
+S31AFE0106587C0803A68361000C8381001083A1001483C100188340
+S31AFE01066DE1001C382100204E8000203D000000800837182C00CF
+S31AFE01068200004C8200203800000190083718380000047C09038C
+S31AFE010697A63C8000003D2000013D60000181443A2038A901C02A
+S31AFE0106AC390B017038C005EA38E000007D272A147120000239D2
+S31AFE0106C1690002914800007C00002654001FFE7C0000D07D6B94
+S31AFE0106D600787D2900387D295B78912800107D0A4378B0C800B8
+S31AFE0106EB0E390A001438E705EC4200FFC491443A204E8000205E
+S31AFE0107009421FFE87C0802A69381000893A1000C93C1001093C4
+S31AFE010715E100149001001C3D2000013BE901703BC000003F807B
+S31AFE01072AFE017FFDFB7880DF0010A0FF000EA11F000C813F001F
+S31AFE01073F007FC4F3787FA5EB78387C43584BFFB0F93BDE00010F
+S31AFE0107542C1E00033BFF00143BBD00144081FFD03D2000003CBB
+S31AFE01076960FE0180893A20386343844BFFB0D18001001C7C0866
+S31AFE01077E03A68381000883A1000C83C1001083E1001438210057
+S31AFE010793184E8000203CA0000080653A202C0300004D8200200D
+S31AFE0107A83CE00000814737103D20000080093714394A00017CDB
+S31AFE0107BDC050503C8000008164370C8103001080030000392866
+S31AFE0107D2001490053A207C0658009123000891030004380000A4
+S31AFE0107E700B003000C914737104C81002090C4370C4E800020A8
+S31AFE0107FC3D400000812A37103D600000800B3A203929FFFF9101
+S31AFE0108112A3710906B3A20900300004E8000203484FFFE418010
+S31AFE0108260018A00300003484FFFE7CA50214386300024080FFB5
+S31AFE01083BF02C04FFFF40820010880300005400402E7CA502142F
+S31AFE01085054AB043E54A9843E380000007CA95A146000FFFF7CE9
+S31AFE0108650500004081000C3D25FFFF38A900017CA928F85523A8
+S31AFE01087AC63E5463402E5520063E7C031B784E800020A12300BE
+S31AFE01088F0EA003000CA16300107C004A14A143001289230009F9
+S31AFE0108A47C005A147C005214A06300027C004A147C601A144E37
+S31AFE0108B98000209421FFD87C0802A69381001893A1001C93C1FD
+S31AFE0108CE002093E100249001002C3F8000003FA000003FC000FE
+S31AFE0108E300386005EA4BFFFEB17C7F1B79408200183C60FE0177
+S31AFE0108F8386343944BFFAF494BFFFE0148000000809F0010383A
+S31AFE01090D61000838A005EA4BFFDB8D5460043E2C000000B07F9D
+S31AFE010922000C41820074A0010014813C37242C00080039290015
+S31AFE01093701913C3724418200182C000806418200347FE3FB789C
+S31AFE01094C4BFFFEB14BFFFF94813D371C801F0010392900019107
+S31AFE0109613D371C901F00047FE3FB783881000E4BFFFAF94BFF16
+S31AFE010976FF70813E3720801F001039290001913E3720901F00FB
+S31AFE01098B047FE3FB7848000F9D4BFFFF507FE3FB784BFFFE616E
+S31AFE0109A08001002C7C0803A68381001883A1001C83C100208320
+S31AFE0109B5E10024382100284E8000209421FFE87C0802A690015B
+S31AFE0109CA001C80040000A144000490010008390100083D200052
+S31AFE0109DF00B1480004396939F8A14B0004B0A10014800939F81F
+S31AFE0109F4A0A3000C808300109001000EB14100127D0343784B5E
+S31AFE010A09FFD83D3D600000812B372839290001912B3728800118
+S31AFE010A1E001C7C0803A6382100184E8000209421FFF07C0802EC
+S31AFE010A33A693C1000893E1000C900100147C7F1B78807F0008ED
+S31AFE010A487C9E2378A00300002C00080040820050A09F000C3873
+S31AFE010A5DA000004BFFFDC17C631B794082003C813F000838A0C6
+S31AFE010A72000098690000817F0008B06B0002807F0008A09F00FE
+S31AFE010A870C4BFFFD99813F00087FC5F378B06900027FE3FB7802
+S31AFE010A9C388000014BFFFAE57FE3FB784BFFFD55800100147CDC
+S31AFE010AB10803A683C1000883E1000C382100104E8000209421B2
+S31AFE010AC6FFD87C0802A693410010936100149381001893A100C7
+S31AFE010ADB1C93C1002093E100249001002C7C9B23787C7E1B78DD
+S31AFE010AF0736000023B9E002C83BC000483FC00087CBA2B78412E
+S31AFE010B0582004438000018B01C000C813F000C396000065169C3
+S31AFE010B1AE0063C000204913F000C600005B490010008387F0054
+S31AFE010B2F143881000838A000044BFFA50938000000B01E0016E7
+S31AFE010B4448000020A13E00163960000539290014B13C000C80AD
+S31AFE010B591F000C5160E006901F000C801F000C39600000516010
+S31AFE010B6EC10E901F000C813E00542C1A0000913F0004801E0018
+S31AFE010B8350B17F0010901F000840820054A01E0012B01F00005C
+S31AFE010B98A13E00149B7F000DB13F0002A01E00162C00000041F6
+S31AFE010BAD82000C63600008981F000D380005B4B01F000EB35F31
+S31AFE010BC200123D2000008009370839600006901D000C813E00CB
+S31AFE010BD708997D0009913D0010A01C000C7FA3EB78B01D0002E3
+S31AFE010BECA3BC000C4BFFFC9D7C651B787FA4EB787FE3FB784B87
+S31AFE010C01FFFC21B07F00107F83E3783880000638BE00084BFF1B
+S31AFE010C16F971801E00042C00000A408200243C8000013CA0FE05
+S31AFE010C2B0138A50E187FC6F378387E00186084D4C048000B5D05
+S31AFE010C4048000034881F000D7009000340820010A01E00162C1C
+S31AFE010C550000004182001C3CA0FE0138A50DF07FC6F378387E8B
+S31AFE010C6A0018388003E848000B298001002C7C0803A68341009B
+S31AFE010C7F10836100148381001883A1001C83C1002083E100240B
+S31AFE010C94382100284E8000209421FFE07C0802A69361000C9384
+S31AFE010CA981001093A1001493C1001893E1001C900100247C7CAF
+S31AFE010CBE1B7883FC0008815C0004A0DF0000A0FF0002807F0002
+S31AFE010CD30480BF000839000014B11C000C3BEA0014801F000CB2
+S31AFE010CE839200005396000005120E0065160C10E901F000C3930
+S31AFE010CFD200400B13F000EB17F0010B17F0012B0EA0014B0DFFC
+S31AFE010D120002991F000D907F000890BF00043D20000080093779
+S31AFE010D27087C9B2378900A000C813B000038000006912A00108D
+S31AFE010D3C980A0009A13C000C7D435378B12A0002A3BC000C4BEB
+S31AFE010D51FFFB3D7C651B787FA4EB787FE3FB784BFFFAC1B07F4E
+S31AFE010D6600107F83E3787F65DB78388000064BFFF8118001003D
+S31AFE010D7B247C0803A68361000C8381001083A1001483C1001875
+S31AFE010D9083E1001C382100204E8000203D20000081293A2439C4
+S31AFE010DA56000002C0900004D8200207D2A4B787C0918004082E7
+S31AFE010DBA001C2C0B00004182001080090000900B00004800008D
+S31AFE010DCF08814900007D2B4B78812900002C0900004082FFD459
+S31AFE010DE43D20000091493A244E8000209421FFF87C0802A6900A
+S31AFE010DF901000C3880000038A000014BFFFCC18001000C7C082A
+S31AFE010E0E03A6382100084E8000209421FFF87C0802A690010069
+S31AFE010E230C38000000900300044BFFFF718001000C7C0803A666
+S31AFE010E38382100084E8000209421FFF07C0802A693E1000C9071
+S31AFE010E4D0100147C7F1B784800001080030000901F00404BFFD4
+S31AFE010E62F99D807F00402C0300004082FFEC800100147C0803A9
+S31AFE010E77A683E1000C382100104E8000209421FFE87C0802A62C
+S31AFE010E8C93A1000C93C1001093E100149001001C7C7D1B7838AF
+S31AFE010EA1000000901D0004387D00184800097D7FA3EB784BFF1C
+S31AFE010EB6FF8D7FA3EB784BFFFEE18001001C7C0803A683A100FA
+S31AFE010ECB0C83C1001083E10014382100184E8000208124000829
+S31AFE010EE080E30050814900048009000CA164000C7D0750515458
+S31AFE010EF50036BA7D6058507D090214418100707C0A38507D60B5
+S31AFE010F0A58517D08021440810060814300407D275A142C0A001C
+S31AFE010F1F0038000000912300509004000041820030800A00006B
+S31AFE010F342C0000004182001C7D49537881290000800900002CA8
+S31AFE010F490000004082FFF47D2A4B78908A000048000010910369
+S31AFE010F5E00449083004091630048386000014E80002038600087
+S31AFE010F73004E8000209421FFF07C0802A693C1000893E1000CCA
+S31AFE010F8890010014812400087C7F1B7883C90008801F00547DAB
+S31AFE010F9D20F0514081006C387F001848000881811F0054A15F18
+S31AFE010FB200167D68F0505549043E7F8B48004FFEE3827C00008A
+S31AFE010FC726540007FE7C0000D07D2900787D6B00387D6B4B795B
+S31AFE010FDC408100307D2B50505525043E2C0500007C085A149053
+S31AFE010FF11F0054B13F001641820014807F0034386300147C83B5
+S31AFE0110065A144BFFA039800100147C0803A683C1000883E100CD
+S31AFE01101B0C382100104E8000209421FFE07C0802A69361000C98
+S31AFE0110309381001093A1001493C1001893E1001C900100247C0D
+S31AFE0110457C1B78807C0004A01C000C83FC0008B0030002A3BC1F
+S31AFE01105A000C7C9E23784BFFF82D7C651B787FA4EB787FE3FBF5
+S31AFE01106F784BFFF7B12C0300003B600000408203A03D20000071
+S31AFE01108483A93A244800000883BD00002C1D00004182037CA10C
+S31AFE0110993D0012A01F00027C0900004082FFE8A13D00142C09D8
+S31AFE0110AE000041820028A01F00007C0900004082FFD07FC3F333
+S31AFE0110C378389D000838A000044BFFA9E92C0300004082FFB85E
+S31AFE0110D8801D0004817E0004A13E00082C000002917D000CB17A
+S31AFE0110ED3D001041820024881F000D70090004418200187FA387
+S31AFE011102EB784BFFFD817F83E3784BFFF6F14800031C813D00F5
+S31AFE011117043809FFFF28000009418102FC3D60FE01396B43B84F
+S31AFE01112C5400103A7D4B002E3D20FE01392943B87D4A4A147DBA
+S31AFE0111414903A64E800420881F000D7009000241820040380046
+S31AFE0111560002901D0004813F0004A17F000039290001913D00B7
+S31AFE01116B50B17D0014801E000039200000901D0008B13D004CF2
+S31AFE0111807FA3EB78B13D001638800012480002247FC4F3787F67
+S31AFE01119583E3784BFFFB0548000280387D001848000685881F07
+S31AFE0111AA000D700900044182001038000001901D00044800029A
+S31AFE0111BF6070090002408202387009001041820250813D00548F
+S31AFE0111D4807F0008392900017C0348004082023C380000049004
+S31AFE0111E97D0054901D00044800022C881F000D83DD0050700917
+S31AFE0111FE0010418200107FA3EB787F84E3784BFFFD6D7FA3EB50
+S31AFE011213787F84E3784BFFFCC5881F000D7C7B1B787009000128
+S31AFE01122841820024807F0004801D00507C030000408200143848
+S31AFE01123D03000139200005901D0050913D0004801D00507C00FD
+S31AFE011252F00040820010A01D004C2C000000418201BCA3FD006B
+S31AFE011267162C1F000040820024387D0018480005B57FA3EB78D2
+S31AFE01127C3880001038A000004BFFF841B3FD004C480001903828
+S31AFE011291000001B01D004C48000184881F000D7009001041825C
+S31AFE0112A601787FA3EB787F84E3784BFFFCC9813D0054801F0012
+S31AFE0112BB08392900017C0048004082015838000000901D0004E6
+S31AFE0112D07FA3EB784BFFFAC948000144881F000D700900104167
+S31AFE0112E58200607FA3EB787F84E3784BFFFC89813D0054801FAA
+S31AFE0112FA0008392900017C00480040820040881F000D7009007C
+S31AFE01130F014182002C813D00503800000A39290001913D005003
+S31AFE011324901D00047FA3EB783880001038A000004BFFF79148BF
+S31AFE01133900000C38000008901D0004881F000D700900014182AC
+S31AFE01134E00D0387D0018480004D5813D00503800000939290016
+S31AFE01136301913D0050901D00047FA3EB78388000114800003CCE
+S31AFE0113787FA3EB787F84E3784BFFFB5D881F000D7C7B1B787028
+S31AFE01138D0900014182008C813D00503800000A39290001913D6C
+S31AFE0113A20050901D00047FA3EB783880001038A000004BFFF7CA
+S31AFE0113B71148000064881F000D70090010418200587FA3EB7882
+S31AFE0113CC7F84E3784BFFFBA9813D0054801F0008392900017C23
+S31AFE0113E100480040820038387D00184800043D3800000A901D6B
+S31AFE0113F60004480000247FA3EB783880000038A000014BFFF617
+S31AFE01140BBD480000107FC4F3787F83E3784BFFF8852C1B000099
+S31AFE0114204082000C7F83E3784BFFF3D5800100247C0803A68320
+S31AFE01143561000C8381001083A1001483C1001883E1001C3821AF
+S31AFE01144A00204E8000209421FFF87C0802A69001000C4BFFF4C7
+S31AFE01145F61480004218001000C7C0803A6382100084E8000209C
+S31AFE0114749421FFE87C0802A69381000893A1000C93C100109343
+S31AFE011489E100149001001C7C7D1B787C9C23783880000038A0D8
+S31AFE01149E06444BFF9C793D600000810B3A24381D006C395D00AD
+S31AFE0114B358901D0034915D003039200001380005EA93AB3A24AB
+S31AFE0114C8913D0004B39D0012B01D003A911D0000915D003C38BF
+S31AFE0114DD6000008001001C7C0803A68381000883A1000C83C14B
+S31AFE0114F2001083E10014382100184E8000209421FFF07C0802CF
+S31AFE011507A693E1000C900100147C7F1B78480000084BFFFF399F
+S31AFE01151C801F00042C00000041820010A01F00162C00000040D2
+S31AFE01153182FFE8800100147C0803A683E1000C382100104E80CE
+S31AFE01154600209421FFF07C0802A693E1000C900100147C7F1B60
+S31AFE01155B784BFFFFA5817F000469690004200900007D20491413
+S31AFE01157069600002214000007C0A01147D2A037941820020385C
+S31AFE011585000007901F00047FE3FB783880001138A000004BFFD2
+S31AFE01159AF52D480000242C0B00054082001C38000006901F00A2
+S31AFE0115AF047FE3FB783880001138A000004BFFF5097FE3FB788B
+S31AFE0115C44BFFF87D800100147C0803A683E1000C382100104E65
+S31AFE0115D98000209421FFE87C0802A69381000893A1000C93C1E0
+S31AFE0115EE001093E100149001001C7CBE2B797C7F1B787C9D23F6
+S31AFE0116037840810010801F00482C000000408200143860000003
+S31AFE011618480000B8907F0048480000AC3B800000480000648086
+S31AFE01162D9F00447FA3EB784BFF9A0D807F0040801F0048812380
+S31AFE01164200007FC0F050913F00407F9C02147FBD02144BFFF141
+S31AFE011657A9807F00402C0300004182FFBC81630008A123000C28
+S31AFE01166C800B000C540036BA7D204850913F0048800B000C5451
+S31AFE0116810036BA7D6B0214917F00442C1E00004182003C80BF85
+S31AFE01169600487C1E28004080FF90809F00447FA3EB787FC5F3C2
+S31AFE0116AB784BFF9995813F0044801F00487D29F2147C1E0050B4
+S31AFE0116C0901F0048913F00447F9CF2147F83E3788001001C7C6E
+S31AFE0116D50803A68381000883A1000C83C1001083E100143821E9
+S31AFE0116EA00184E8000209421FFF07C0802A693C1000893E10040
+S31AFE0116FF0C900100147CBE2B797C7F1B78807F00344081006C54
+S31AFE011714813F00043929FFFC280900014081000C3860FFFF48BD
+S31AFE011729000058A01F00162C00000040820048213E05B47D2985
+S31AFE01173E49107D294BB87D2048F87FC94838700005B47D3E0303
+S31AFE01175378386300147FC5F3784BFF98E57FE3FB78B3DF001662
+S31AFE0117683880001038A000004BFFF3557FC3F378480000083800
+S31AFE01177D600000800100147C0803A683C1000883E1000C38211B
+S31AFE01179200104E8000209421FFE87C0802A69381000893A10027
+S31AFE0117A70C93C1001093E100149001001C7C7F1B787CBD2B7819
+S31AFE0117BC7CDC3378909F0004480005453D20000081293A289052
+S31AFE0117D17F00082C09000093BF000C939F0010418200187C0942
+S31AFE0117E6F80041820020812900002C0900004082FFF03D200021
+S31AFE0117FB0080093A2893E93A28901F00008001001C7C0803A692
+S31AFE0118108381000883A1000C83C1001083E10014382100184EF7
+S31AFE0118258000203D20000081293A28394000002C0900004D8223
+S31AFE01183A00207D2B4B787C091800408200202C0A000041820091
+S31AFE01184F1080090000900A00004800001C8169000048000014A2
+S31AFE0118647D2A4B78812900002C0900004082FFD03D20000091A2
+S31AFE011879693A284E8000209421FFE87C0802A693A1000C93C140
+S31AFE01188E001093E100149001001C3D20000083E93A283BC000D5
+S31AFE0118A3002C1F00003FA000004182006448000459801F00088E
+S31AFE0118B8813F00047C6018507C0348404180003C2C1E0000417F
+S31AFE0118CD820010801F0000901E00004800000C801F0000901D82
+S31AFE0118E23A28801F000C807F00107C0803A63BC000004E8000DA
+S31AFE0118F72183FD3A284800000C7FFEFB7883FF00002C1F0000C3
+S31AFE01190C4082FFA48001001C7C0803A683A1000C83C10010838B
+S31AFE011921E10014382100184E8000209421FFE87C0802A693817C
+S31AFE011936000893A1000C93C1001093E100149001001C7C7D1BA2
+S31AFE01194B7883FD0004A13F0002A01F00006929080021690000C1
+S31AFE0119607D2B491468000001216000007C0B01147C0B48394199
+S31AFE0119758200D83FC00000387F0018389E370838A000044BFFF5
+S31AFE01198AA12D2C030000408200BCA01F00062C00000140820014
+S31AFE01199F64813F000E38000002B01F0006913F0018801F00085E
+S31AFE0119B4391F0008A1280004901F0012389F0012B124000480E9
+S31AFE0119C91E37083D200000901F000E814939F8392939F8A169F5
+S31AFE0119DE0004915F0008B16800043800001CB01D000C7FA3EB9C
+S31AFE0119F37838A008064BFFEFC9480000502C00000240820048AA
+S31AFE011A083FC00001801E19703B9E19702C000000418200348098
+S31AFE011A1D7C0008389F000E38A000044BFFA08D7C631B794082BE
+S31AFE011A32001CA01F000C817F0008813C0004B009000491690033
+S31AFE011A4700907E19707FA3EB784BFFEDAD8001001C7C0803A6BB
+S31AFE011A5C8381000883A1000C83C1001083E10014382100184EA9
+S31AFE011A718000209421FFD87C0802A6936100149381001893A19B
+S31AFE011A86001C93C1002093E100249001002C7C7F1B787C9D2397
+S31AFE011A9B783860002A4BFFECF97C7E1B79408200184800010017
+S31AFE011AB07FC3F3784BFFED4938600000480000F4817E000439DF
+S31AFE011AC5200004992B0005394000013900080038000006980B7E
+S31AFE011ADA0004B14B0000B14B0006B10B00023D20000080093715
+S31AFE011AEF083D400000900B000E392A39F8A1090004800A39F8B2
+S31AFE011B04B10B000C900B0008813F00003D400001912B00183911
+S31AFE011B196A1970380000FF93EB00089801000D93AB00043920C1
+S31AFE011B2E0001912A197098010008980100099801000A980100D9
+S31AFE011B430B9801000C3BA000073F8000013B60001CB37E000C42
+S31AFE011B587FC3F3783881000838A008064BFFEE5D480001A17C24
+S31AFE011B6D7F1B78480000144BFFED49801C19702C00000041825C
+S31AFE011B82FF30480001857C7F1850280300F94081FFE47FA0EB17
+S31AFE011B97782C0000003BBDFFFF4181FFB47FC3F3784BFFEC55ED
+S31AFE011BAC3860FFFF8001002C7C0803A683610014838100188318
+S31AFE011BC1A1001C83C1002083E10024382100284E80002094213D
+S31AFE011BD6FFD87C0802A6930100089321000C93410010936100BE
+S31AFE011BEB149381001893A1001C93C1002093E100249001002C87
+S31AFE011C003D2000013B29197C3B1900967C7B1B787C9C23787FCD
+S31AFE011C153DCB783B4000007FBEEB787F63DB787FC4F37838A05F
+S31AFE011C2A00044BFF9E892C0300007F5FD378418200383BBE00DF
+S31AFE011C3F0A7C1DC0003B5F000A4081FFD4801B00007F63DB7820
+S31AFE011C54901C0000389C00044BFFFE192C030000408000283842
+S31AFE011C6960FFFF4800006C7C1AC82EA13D0008817D0004B13CEE
+S31AFE011C7E0008901C0000917C00044800004C3CC0000081263719
+S31AFE011C932C80FC0000390900011D29000A3D600001A15C000859
+S31AFE011CA8801C0004396B197C7CE9592E7D295A142C080010B154
+S31AFE011CBD490008900900049106372C4082000C38000000900689
+S31AFE011CD2372C386000008001002C7C0803A683010008832100F3
+S31AFE011CE70C83410010836100148381001883A1001C83C100204B
+S31AFE011CFC83E10024382100284E8000209421FFF87C0802A6906F
+S31AFE011D1101000C3D2000003929320080090048386003E87C08E2
+S31AFE011D2603A64E8000213D200000806937303863000190693792
+S316FE011D3B308001000C7C0803A6382100084E80002059
+S31AFE011D503C746F7069633E0048656C702061626F75742068652F
+S31AFE011D656C703F0000000068656C70000000005B2D77203C74D1
+S31AFE011D7A696D656F75743E5D205B656E7472795D0000457865F5
+S31AFE011D8F6375746520636F64652061742061206C6F63617469BC
+S31AFE011DA46F6E0000676F00002D62203C6C6F636174696F6E3EF0
+S31AFE011DB9205B2D6C203C6C656E6774683E5D00446973706C6126
+S31AFE011DCE7920286865782064756D702920612072616E67652028
+S31AFE011DE36F66206D656D6F72790000000064756D7000000000A2
+S31AFE011DF85B4F4E207C204F46465D00004D616E616765206D61AE
+S31AFE011E0D6368696E652063616368657300000063616368650039
+S31AFE011E2200000A526564426F6F7428746D292064656275672074
+S31AFE011E37656E7669726F6E6D656E74202D206275696C7420250A
+S31AFE011E4C732C2025730A000031323A33373A3138000000004F22
+S31AFE011E616374203230203230303000506C6174666F726D3A208D
+S31AFE011E76257320282573292025730A0000004D6F746F726F6C03
+S31AFE011E8B61204D425800000000506F7765725043203836300077
+S31AFE011EA000000000436F70797269676874202843292032303009
+S31AFE011EB5302C20526564204861742C20496E632E0A0A00524104
+S31AFE011ECA4D3A2025702D25700A003D3D20457865637574696E17
+S31AFE011EDF6720626F6F742073637269707420696E2025642073C6
+S31AFE011EF465636F6E6473202D20656E746572205E4320746F20E9
+S31AFE011F0961626F72740A00526564426F6F743E200000002A2A3B
+S31AFE011F1E204572726F723A20496C6C6567616C20636F6D6D613E
+S31AFE011F336E643A2025730A00006F6E00006F666600496E766120
+S31AFE011F486C6964206361636865206D6F64653A2025730A00630E
+S31AFE011F5D6163686573203F0A00000025730A202020257320251E
+S31AFE011F72730A0000000062617365206164647265737300000037
+S31AFE011F87006C656E677468000044756D702077686174205B6C6D
+S31AFE011F9C6F636174696F6E5D3F0A0000776169742074696D6514
+S31AFE011FB16F7574000000007374617274696E6720616464726532
+S31AFE011FC673730000000041626F757420746F20737461727420AF
+S31AFE011FDB657865637574696F6E206174202570202D2061626FCF
+S31AFE011FF072742077697468205E432077697468696E20256420D8
+S31AFE0120057365636F6E64730A0000006574683000000000717571
+S31AFE01201A6963635F657468000000515549434320457468657250
+S31AFE01202F6E65743A204E6F206672656520786D69742062756638
+S31AFE012044666572730A000000000000005B2D765D205B2D725DF6
+S31AFE012059205B2D62203C6D656D5F616464723E5D203C66696C9C
+S31AFE01206E655F6E616D653E0000004C6F616420612066696C65F4
+S31AFE012083006C6F616400000000454C4620696D61676573206EA8
+S31AFE0120986F7420737570706F727465640A000000496E76616C41
+S31AFE0120AD696420532D7265636F7264206174206F666673657491
+S31AFE0120C22025702C20696E7075743A2025630A000000426164E0
+S31AFE0120D720532D7265636F726420636F756E74206174206F669D
+S31AFE0120EC667365742025700A0000000041646472657373206F14
+S31AFE0121016666736574203D2025700A00000000417474656D7025
+S31AFE0121167420746F206C6F616420532D7265636F726420646174
+S31AFE01212B746120746F20616464726573733A202570205B6E6F75
+S31AFE0121407420696E2052414D5D0A00002A2A2A205761726E6914
+S31AFE0121556E672120436865636B73756D206661696C75726520FF
+S31AFE01216A2D20416464723A20256C782C202530326C58203C3EFF
+S31AFE01217F202530326C580A0000456E74727920706F696E743A3B
+S31AFE0121942025702C20616464726573732072616E67653A20259E
+S31AFE0121A9702D25700A0000496E76616C696420532D7265636FD0
+S31AFE0121BE7264206174206F6666736574203078256C782C207404
+S31AFE0121D37970653A2025780A0000000000FFFF3050FFFF2EB445
+S31AFE0121E8FFFF2EB4FFFF2EB4FFFF3038FFFF3038FFFF3038FFEC
+S31AFE0121FDFF3000FFFF3000FFFF3000256308000A0000007573BB
+S31AFE0122126167653A206C6F6164203C66696C655F6E616D653E51
+S31AFE012227205B2D725D205B2D765D205B2D68203C686F73743E43
+S31AFE01223C5D205B2D6D207B54465450207C205A4D4F44454D7D38
+S31AFE0122515D205B2D62203C626173655F616464726573733E5D35
+S31AFE0122660A00766572626F7365006C6F6164207261772064616F
+S31AFE01227B74610000006C6F6164206164647265737300000000CE
+S31AFE012290646F776E6C6F6164206D6F6465202854465450206F02
+S31AFE0122A572205A4D4F44454D290000686F7374206E616D6520F9
+S31AFE0122BA284950206164647265737329000066696C65206E618B
+S31AFE0122CF6D65000000496E76616C696420495020616464726583
+S31AFE0122E473733A2025730A007A6D6F64656D00007466747000B4
+S31AFE0122F900000054465450206D6F646520726571756972657338
+S31AFE01230E206120776F726B696E67206E6574776F726B0A0000DF
+S31AFE01232300496E76616C696420276D6F6465273A2025730A00CA
+S31AFE01233846696C65206E616D65206D697373696E670A000043E3
+S31AFE01234D616E2774206C6F616420272573273A2025730A00004A
+S31AFE01236200004572726F722072656164696E6720686561646546
+S31AFE012377722076696120544654503A2025730A0000536F72727A
+S31AFE01238C792C207A6D6F64656D20646F776E6C6F6164206E6F71
+S31AFE0123A1742079657420617661696C61626C650A0000005261BE
+S31AFE0123B677206C6F61642072657175697265732061206D656D66
+S31AFE0123CB6F727920616464726573730A005261772066696C65A4
+S31AFE0123E0206C6F616465642025702D25700A0000454C460055AD
+S31AFE0123F56E7265636F676E697A656420696D6167652074797096
+S31AFE01240A653A20256C780A000000000000007B636D64737D0047
+S31AFE01241F004D616E61676520464C41534820696D616765730036
+S31AFE012434666973005B2D6C5D000000004D616E61676520636FC0
+S31AFE0124496E66696775726174696F6E206B65707420696E2046A2
+S31AFE01245E4C415348206D656D6F727900000066636F6E666967A7
+S31AFE012473005B2D665D00000000496E697469616C697A6520468C
+S31AFE0124884C41534820496D6167652053797374656D205B464960
+S31AFE01249D535D00696E69740000000000000000446973706C6164
+S31AFE0124B27920636F6E74656E7473206F6620464C41534820491D
+S31AFE0124C76D6167652053797374656D205B4649535D0000000002
+S31AFE0124DC6C69737400000000446973706C617920667265652072
+S31AFE0124F15B617661696C61626C655D206C6F636174696F6E738C
+S31AFE0125062077697468696E20464C41534820496D616765205304
+S31AFE01251B797374656D205B4649535D0000667265650000000018
+S31AFE0125302D66203C666C6173685F616464723E202D6C203C6CDB
+S31AFE012545656E6774683E00457261736520464C41534820636FB8
+S31AFE01255A6E74656E74730000000065726173650000006E616D7F
+S31AFE01256F6500000000446973706C617920616E20696D61676505
+S31AFE0125842066726F6D20464C41534820496D6167652053797379
+S31AFE01259974656D205B4649535D000064656C65746500004C6FFA
+S31AFE0125AE616420696D6167652066726F6D20464C415348204960
+S31AFE0125C36D6167652053797374656D205B4649535D20696E749A
+S31AFE0125D86F2052414D0000006C6F6164000000002D62203C6D82
+S31AFE0125ED656D5F626173653E202D6C203C696D6167655F6C6582
+S31AFE0126026E6774683E205B2D73203C646174615F6C656E677445
+S31AFE012617683E5D205B2D66203C666C6173685F616464723E5D99
+S31AFE01262C205B2D65203C656E7472795F706F696E743E5D205B5A
+S31AFE0126412D72203C72616D5F616464723E5D203C6E616D653E74
+S31AFE012656000043726561746520616E20696D61676500637265CA
+S31AFE01266B61746500002A2A2A20696E76616C696420276669730D
+S31AFE0126802720636F6D6D616E643A2025730A00006669732000BC
+S31AFE01269500000066756C6C20696E697469616C697A6174696FDE
+S31AFE0126AA6E2C2065726173657320616C6C206F6620666C6173C5
+S31AFE0126BF680000000041626F757420746F20696E697469616C91
+S31AFE0126D4697A65205B666F726D61745D20464C41534820696DBF
+S31AFE0126E96167652073797374656D002A2A2041626F72746564B0
+S31AFE0126FE0A002A2A2A20496E697469616C697A6520464C4153C2
+S31AFE0127134820496D6167652053797374656D0A000020202069E9
+S31AFE0127286E697469616C697A6174696F6E206661696C65642073
+S31AFE01273D25703A202578282573290A00000000202020205761CB
+S31AFE012752726E696E673A2064657669636520636F6E74656E746A
+S31AFE01276773206E6F74206572617365642C20736F6D6520626CF2
+S31AFE01277C6F636B73206D6179206E6F7420626520757361626C9D
+S31AFE012791650A00526564426F6F7400526564426F6F745B626143
+S31AFE0127A6636B75705D00526564426F6F7420636F6E66696700C4
+S31AFE0127BB00464953206469726563746F72790000004572726F95
+S31AFE0127D0722077726974696E6720696D61676520646573637205
+S31AFE0127E56970746F72732061742025703A202578282573290AA5
+S31AFE0127FA00004E616D652020202020202020202020202020463E
+S31AFE01280F4C41534820616464722020204D656D20616464722072
+S31AFE0128242020204C656E67746820202020456E74727920706F47
+S31AFE012839696E740A000000252D313673202030782530386C58CB
+S31AFE01284E20202030782530386C58202030782530366C582020A0
+S31AFE01286330782530386C580A00202030782530386C58202E2EA3
+S31AFE0128782030782530386C580A0000006D656D6F7279206261A7
+S31AFE01288D736520616464726573730072616D20626173652061D7
+S31AFE0128A264647265737300000000656E74727920706F696E741B
+S31AFE0128B7206164647265737300464C415348206D656D6F7279DA
+S31AFE0128CC20626173652061646472657373000000696D6167652E
+S31AFE0128E1206C656E677468205B696E20464C4153485D00696D28
+S31AFE0128F66167652073697A65205B61637475616C206461746111
+S31AFE01290B5D0000000066696C65206E616D65000000696E766146
+S31AFE0129206C696420617267756D656E7473000000726571756948
+S31AFE01293572656420706172616D65746572206D697373696E6752
+S31AFE01294A0000496E76616C696420464C41534820696D616765FB
+S31AFE01295F2073697A652F6C656E67746820636F6D62696E617465
+S31AFE012974696F6E00496E76616C696420464C4153482061646465
+S31AFE012989726573733A20257020282573290A0020202076616CD2
+S31AFE01299E69642072616E67652069732025702D25700A000000A8
+S31AFE0129B3002A2A205741524E494E473A2052414D20616464728B
+S31AFE0129C86573733A202570206D617920626520696E76616C69CA
+S31AFE0129DD640A004E616D6520697320746F6F206C6F6E672C2067
+S31AFE0129F26D757374206265206C657373207468616E20256420B0
+S31AFE012A0763686172730A00000043616E2774206C6F6361746555
+S31AFE012A1C20256C64206279746573206672656520696E20464CD9
+S31AFE012A314153480A000000496D61676520666F756E642C2062D8
+S31AFE012A46757420464C415348206164647265737320696E636F30
+S31AFE012A5B72726563740A000000496D61676520666F756E642CEC
+S31AFE012A7020627574204C454E47544820697320696E636F727256
+S31AFE012A856563740A000000416E20696D616765206E616D6564FA
+S31AFE012A9A202725732720657869737473000043616E277420701F
+S31AFE012AAF726F6772616D207468697320726567696F6E202D209C
+S31AFE012AC4636F6E7461696E7320636F646520696E207573652159
+S31AFE012AD90A000043616E277420657261736520726567696F6E58
+S31AFE012AEE2061742025703A202578282573290A00000043616E28
+S31AFE012B0327742070726F6772616D20726567696F6E206174204C
+S31AFE012B1825703A202578282573290A004572726F7220657261C2
+S31AFE012B2D73696E672061742025703A202578282573290A000049
+S31AFE012B4200004572726F722070726F6772616D6D696E6720612B
+S31AFE012B57742025703A202578282573290A000000006C656E67AB
+S31AFE012B6C746800006D697373696E6720617267756D656E7400F6
+S31AFE012B81000000696D616765206E616D65000044656C65746523
+S31AFE012B9620696D61676520272573270000004E6F20696D616781
+S31AFE012BAB65202725732720666F756E640A000000004E6F74200E
+S31AFE012BC061206C6F616461626C6520696D6167650A00000046D3
+S31AFE012BD54C4153483A2064726976657220696E697420666169B4
+S31AFE012BEA6C6564212C207374617475733A2025780A00464C41B7
+S31AFE012BFF53483A202570202D2025702C20256420626C6F636B30
+S31AFE012C1473206F662025702062797465732065612E0A000074B0
+S31AFE012C296F6F2066657720617267756D656E7473000000756E78
+S31AFE012C3E7265636F676E697A656420636F6D6D616E6400000053
+S31AFE012C530052756E2073637269707420617420626F6F740000B4
+S31AFE012C68626F6F745F73637269707400426F6F74207363726945
+S31AFE012C7D707400626F6F745F7363726970745F646174610000B8
+S31AFE012C920000426F6F74207363726970742074696D656F7574B8
+S31AFE012CA700626F6F745F7363726970745F74696D656F75740005
+S31AFE012CBC25733A2000000000257320007472756500000000662E
+S31AFE012CD1616C73650000002564200030782530325800003A00DA
+S31AFE012CE60000200000003F3F00000A0000002E2E2025730A000E
+S31AFE012CFB00456E746572207363726970742C207465726D696E31
+S31AFE012D10617465207769746820656D707479206C696E650A0072
+S31AFE012D250000003E3E200000000000FFFF0628FFFF064CFFFF7E
+S31AFE012D3A06C8FFFF06D4FFFF0660FFFF067CFFFF07DCFFFF070F
+S31AFE012D4FF0FFFF0964FFFF08B4FFFF080CFFFF0850FFFF04A843
+S31AFE012D64FFFF04A8FFFF04B8FFFF04C0FFFF04A8FFFF04B06C67
+S31AFE012D7969737420636F6E66696775726174696F6E206F6E6CEF
+S31AFE012D8E79002A2A20696E76616C696420656E7472790A0000FB
+S31AFE012DA30055706461746520526564426F6F74206E6F6E2D76D6
+S31AFE012DB86F6C6174696C6520636F6E66696775726174696F6E7F
+S31AFE012DCD0000004572726F722077726974696E6720636F6E66F8
+S31AFE012DE2696720646174612061742025703A20257828257329C3
+S31AFE012DF70A0000000000000000FFFF0260FFFF02C0FFFF027820
+S31AFE012E0CFFFF027CFFFF0290FFFF02B052657175657374206681
+S31AFE012E216F7220636F6E6669672076616C7565202725732720BD
+S31AFE012E362D2077726F6E6720747970650A0043616E27742066E9
+S31AFE012E4B696E6420636F6E6669672076616C7565202725732759
+S31AFE012E600A00000000000000FFFF0050FFFF0050FFFF00B4FF01
+S31AFE012E75FF0070FFFF0050FFFF005C464C41534820636F6E66F8
+S31AFE012E8A696775726174696F6E20636865636B73756D206572F2
+S31AFE012E9F726F72206F7220696E76616C6964206B65790A00004B
+S31AFE012EB400000000FFFF3178FFFF3178FFFF3178FFFF3178FF69
+S31AFE012EC9FF3178FFFF3178FFFF3178FFFF3178FFFF3178FFFFAD
+S31AFE012EDE3178FFFF3178FFFF3178FFFF3178FFFF3178FFFF3166
+S31AFE012EF378FFFF3178FFFF3198FFFF31B8FFFF31D8FFFF31F8CA
+S31AFE012F08FFFF3218FFFF327CFFFF327CFFFF327CFFFF327CFFB8
+S31AFE012F1DFF3238FFFF3258FFFF3258FFFF3258FFFF3258FFFF13
+S31AFE012F323258FFFF3258FFFF3258FFFF3258FFFF3258FFFF32AB
+S31AFE012F4758FFFF3258FFFF3258FFFF3258FFFF3258FFFF325870
+S31AFE012F5CFFFF3258FFFF3258FFFF3258FFFF3258FFFF3258FFB4
+S31AFE012F71FF3258FFFF3258FFFF3258FFFF3258FFFF3258FFFF9F
+S31AFE012F863258FFFF3258FFFF3258FFFF3258FFFF3258FFFF3257
+S31AFE012F9B58FFFF3258FFFF3238FFFF3238FFFF3238FFFF32389C
+S31AFE012FB0FFFF3238FFFF3238FFFF3238FFFF3238FFFF3238FF00
+S31AFE012FC5FF3238FFFF3238FFFF3238FFFF3238FFFF3238FFFFEB
+S31AFE012FDA3238FFFF3238FFFF31B0FFFF31B0FFFF31D4FFFF311B
+S31AFE012FEFF8FFFF31F8FFFF3238FFFF3238FFFF3238FFFF323809
+S31AFE013004FFFF321CFFFF3238FFFF3238FFFF3238FFFF3238FFC7
+S31AFE013019FF3238FFFF3238FFFF3238FFFF3238FFFF3238FFFF96
+S31AFE01302E3238FFFF3238FFFF3238FFFF3238FFFF3238FFFF324E
+S31AFE01304338FFFF3238FFFF3238FFFF3238FFFF3238FFFF323833
+S31AFE013058FFFF3238FFFF3238FFFF3238FFFF3238FFFF3238FF57
+S31AFE01306DFF3238FFFF3238FFFF3238FFFF3238FFFF3238FFFF42
+S31AFE0130823238FFFF3238FFFF316CFFFF316CFFFF316CFFFF3162
+S31AFE0130976CFFFF316CFFFF316CFFFF316CFFFF316CFFFF316CAC
+S31AFE0130ACFFFF316CFFFF316CFFFF316CFFFF316CFFFF316CFF04
+S31AFE0130C1FF316CFFFF316CFFFF318CFFFF31ACFFFF31CCFFFF2F
+S31AFE0130D631ECFFFF320CFFFF3270FFFF3270FFFF3270FFFF3277
+S31AFE0130EB70FFFF322CFFFF324CFFFF324CFFFF324CFFFF324C0F
+S31AFE013100FFFF324CFFFF324CFFFF324CFFFF324CFFFF324CFF4A
+S31AFE013115FF324CFFFF324CFFFF324CFFFF324CFFFF324CFFFF35
+S31AFE01312A324CFFFF324CFFFF324CFFFF324CFFFF324CFFFF32ED
+S31AFE01313F4CFFFF324CFFFF324CFFFF324CFFFF324CFFFF324CBE
+S31AFE013154FFFF324CFFFF324CFFFF324CFFFF324CFFFF324CFFF6
+S31AFE013169FF324CFFFF324C3031323334353637383961626364BC
+S31AFE01317E65660000000000000000503031004F4B000065436F0A
+S31AFE0131937320474442207374756273205B7769746820526564FF
+S31AFE0131A8426F6F745D202D206275696C74204F637420323020A7
+S31AFE0131BD32303030202F2031313A31343A3530000000004530B2
+S31AFE0131D23100453033004530320042303100FFFF4858FFFF50D4
+S31AFE0131E7E4FFFF4920FFFF4FA4FFFF4DF4FFFF50E4FFFF50E4EF
+S31AFE0131FCFFFF50E4FFFF4AACFFFF4F74FFFF50E4FFFF50E4FF6F
+S31AFE013211FF50E4FFFF50E4FFFF4BA8FFFF50E4FFFF50E4FFFFEB
+S31AFE0132264AACFFFF4904FFFF50E4FFFF4DF4FFFF4F8CFFFF50B5
+S31AFE01323BE4FFFF50E4FFFF50E4FFFF4BA4FFFF50E4FFFF50E4E0
+S31AFE013250FFFF50E4FFFF50E4FFFF50E4FFFF50E4FFFF50E4FF6B
+S31AFE013265FF50E4FFFF50E4FFFF5070FFFF4DF4FFFF48C0FFFFE9
+S31AFE01327A50E4FFFF50E4FFFF4910FFFF50E4FFFF50E4FFFF50CB
+S31AFE01328FE4FFFF4F54FFFF50E4FFFF4AC0FFFF50E4FFFF50E402
+S31AFE0132A4FFFF50E4FFFF48F8FFFF4F6CFFFF4DF4FFFF50E4FF77
+S31AFE0132B9FF50E4FFFF50E4FFFF50E4FFFF50E4FFFF50E4FFFF02
+S31AFE0132CE489C30313233343536373839616263646566000000A0
+S31AFE0132E30030313233343536373839414243444546000000002F
+S31AFE0132F8FFFF7038FFFF7038FFFF7038FFFF7038FFFF7038FF7F
+S31AFE01330DFF7038FFFF7038FFFF7038FFFF7038FFFF7038FFFF69
+S31AFE0133227038FFFF7038FFFF7038FFFF7038FFFF7038FFFF70E3
+S31AFE01333738FFFF6F78FFFF6F78FFFF6FACFFFF6FE0FFFF6FE0C7
+S31AFE01334CFFFF7038FFFF7038FFFF7038FFFF7038FFFF7014FF4E
+S31AFE013361FF7038FFFF7038FFFF7038FFFF7038FFFF7038FFFF15
+S31AFE0133767038FFFF7038FFFF7038FFFF7038FFFF7038FFFF708F
+S31AFE01338B38FFFF7038FFFF7038FFFF7038FFFF7038FFFF7038B2
+S31AFE0133A0FFFF7038FFFF7038FFFF7038FFFF7038FFFF7038FFD6
+S31AFE0133B5FF7038FFFF7038FFFF7038FFFF7038FFFF7038FFFFC1
+S31AFE0133CA7038FFFF7038FFFF7038FFFF7038FFFF7038FFFF703B
+S31AFE0133DF38FFFF6FECFFFF6FECFFFF6FECFFFF6FECFFFF6FECDF
+S31AFE0133F4FFFF6FECFFFF6FECFFFF6FECFFFF6FECFFFF6FECFF03
+S31AFE013409FF6FECFFFF6FECFFFF6FECFFFF6FECFFFF6FECFFFFED
+S31AFE01341E6FECFFFF7014FFFF7038FFFF705CFFFF7080FFFF70EB
+S31AFE013433A4FFFF7110FFFF7110FFFF7110FFFF7110FFFF70C8A9
+S31AFE013448FFFF70E8FFFF70E8FFFF70E8FFFF70E8FFFF70E8FFBD
+S31AFE01345DFF70E8FFFF70E8FFFF70E8FFFF70E8FFFF70E8FFFFA8
+S31AFE01347270E8FFFF70E8FFFF70E8FFFF70E8FFFF70E8FFFF7022
+S31AFE013487E8FFFF70E8FFFF70E8FFFF70E8FFFF70E8FFFF70E895
+S31AFE01349CFFFF70E8FFFF70E8FFFF70E8FFFF70E8FFFF70E8FF69
+S31AFE0134B1FF70E8FFFF70E8FFFF70E8FFFF70E8FFFF70E8FFFF54
+S31AFE0134C670E8FFFF7068FFFF7068FFFF7068FFFF7068FFFF70CE
+S31AFE0134DB68FFFF7068FFFF7068FFFF7068FFFF7068FFFF706841
+S31AFE0134F0FFFF7068FFFF7068FFFF7068FFFF7068FFFF7068FF95
+S31AFE013505FF7068FFFF7090FFFF70B0FFFF70D0FFFF70F0FFFF1F
+S31AFE01351A7110FFFF7178FFFF7178FFFF7178FFFF7178FFFF710B
+S31AFE01352F30FFFF7150FFFF7150FFFF7150FFFF7150FFFF715097
+S31AFE013544FFFF7150FFFF7150FFFF7150FFFF7150FFFF7150FFB3
+S31AFE013559FF7150FFFF7150FFFF7150FFFF7150FFFF7150FFFF9E
+S31AFE01356E7150FFFF7150FFFF7150FFFF7150FFFF7150FFFF7117
+S31AFE01358350FFFF7150FFFF7150FFFF7150FFFF7150FFFF715023
+S31AFE013598FFFF7150FFFF7150FFFF7150FFFF7150FFFF7150FF5F
+S31AFE0135ADFF7150FFFF70D0FFFF70D0FFFF70D0FFFF70D0FFFF4E
+S31AFE0135C270D0FFFF70D0FFFF70D0FFFF70D0FFFF70D0FFFF7049
+S31AFE0135D7D0FFFF70D0FFFF70D0FFFF70D0FFFF70D0FFFF70D0D4
+S31AFE0135ECFFFF70D0FFFF70F8FFFF7118FFFF7138FFFF7158FF2D
+S31AFE013601FF7178FFFF71C0FFFF71C0FFFF71C0FFFF71C0FFFF0D
+S31AFE01361671C0FFFF7198FFFF7198FFFF7198FFFF7198FFFF71DE
+S31AFE01362B98FFFF7198FFFF7198FFFF7198FFFF7198FFFF7198CA
+S31AFE013640FFFF7198FFFF7198FFFF7198FFFF7198FFFF7198FF4E
+S31AFE013655FF7198FFFF7198FFFF7198FFFF7198FFFF7198FFFF39
+S31AFE01366A7198FFFF7198FFFF7198FFFF7198FFFF7198FFFF71B2
+S31AFE01367F98FFFF7198FFFF7198FFFF7198FFFF7198FFFF719876
+S31AFE013694FFFF7198FFFF711CFFFF7160FFFF711CFFFF7160FF62
+S31AFE0136A9FF711CFFFF7160FFFF711CFFFF7160FFFF711CFFFFC9
+S31AFE0136BE7160FFFF711CFFFF7160FFFF711CFFFF7160FFFF71FE
+S31AFE0136D31CFFFF7160FFFF7160FFFF7160FFFF7160FFFF7160B6
+S31AFE0136E8FFFF7160FFFF7160FFFF7160FFFF7160FFFF7160FFBE
+S31AFE0136FDFF7160FFFF7160FFFF7160FFFF7160FFFF7160FFFFA9
+S31AFE0137127160FFFF7160FFFF7160FFFF7160FFFF7160FFFF7121
+S31AFE01372760FFFF7160FFFF7160FFFF7160FFFF7160FFFF71601D
+S31AFE01373CFFFF7160FFFF7160FFFF7160FFFF7160FFFF7160FF69
+S31AFE013751FF7160FFFF7160FFFF7160FFFF7160FFFF7160FFFF54
+S31AFE0137667160FFFF7160FFFF7160FFFF7160FFFF7160FFFF71CD
+S31AFE01377B60FFFF7160FFFF7178FFFF7178FFFF7178FFFF717869
+S31AFE013790FFFF7178FFFF7178FFFF7178FFFF7178FFFF7178FF9D
+S31AFE0137A5FF7178FFFF7178FFFF7178FFFF7178FFFF7178FFFF88
+S31AFE0137BA7178FFFF7178FFFF70B8FFFF70B8FFFF70ECFFFF7110
+S31AFE0137CF20FFFF7120FFFF7178FFFF7178FFFF7178FFFF717895
+S31AFE0137E4FFFF7154FFFF7178FFFF7178FFFF7178FFFF7178FF6D
+S31AFE0137F9FF7178FFFF7178FFFF7178FFFF7178FFFF7178FFFF34
+S31AFE01380E7178FFFF7178FFFF7178FFFF7178FFFF7178FFFF71AC
+S31AFE01382378FFFF7178FFFF7178FFFF7178FFFF7178FFFF717890
+S31AFE013838FFFF7178FFFF7178FFFF7178FFFF7178FFFF7178FFF4
+S31AFE01384DFF7178FFFF7178FFFF7178FFFF7178FFFF7178FFFFDF
+S31AFE0138627178FFFF7178303132333435363738390000303132DC
+S31AFE013877333435363738396162636465660000000030313233A2
+S31AFE01388C3435363738394142434445460000000000000000FF47
+S31AFE0138A1FF7B60FFFF7D10FFFF7D10FFFF7D10FFFF7D10FFFF09
+S31AFE0138B67D10FFFF7D10FFFF7D10FFFF7D10FFFF7D10FFFF7DC4
+S31AFE0138CB10FFFF7CA4FFFF7B60FFFF7D10FFFF7D10FFFF7D103B
+S31AFE0138E0FFFF7D10FFFF7D10FFFF7D10FFFF7D10FFFF7D10FF18
+S31AFE0138F5FF7D10FFFF7D10FFFF7D10FFFF7B40FFFF7D10FFFFD5
+S31AFE01390A7D10FFFF7C38FFFF7D10FFFF7D10FFFF7D10FFFF7D48
+S31AFE01391F10FFFF7B60000000005E430A003078253038583A2013
+S31AFE0139340000000025303258000000002020000020000000201A
+S31AFE0139497C0000256300007C0A0000202D2061726520796F75B8
+S31AFE01395E20737572652028792F6E293F2000556E62616C616EC9
+S31AFE01397363656420737472696E67210A00416D626967756F75F3
+S31AFE0139887320636F6D6D616E6420272573272C2063686F69635B
+S31AFE01399D6573206172653A20257300202573000A000000557364
+S31AFE0139B26167653A0A002020257325732025730A00002A2A20E4
+S31AFE0139C74572726F723A20257320616C72656164792073706580
+S31AFE0139DC6369666965640A002A2A204572726F723A20696E763E
+S31AFE0139F1616C6964206E756D626572202725732720666F7220EC
+S31AFE013A0625730A0000002A2A204572726F723A20696E76616C12
+S31AFE013A1B696420666C616720272563270A000000002A2A204551
+S31AFE013A3072726F723A206E6F2064656661756C742F6E6F6E2DD4
+S31AFE013A45666C616720617267756D656E747320737570706F720E
+S31AFE013A5A7465640A00004E45544153434949000000004F4354D5
+S31AFE013A6F4554000000556E6B6E6F776E206572726F720000006A
+S31AFE013A8466696C65206E6F7420666F756E6400006163636573DC
+S31AFE013A99732076696F6C6174696F6E000000006469736B20667A
+S31AFE013AAE756C6C206F7220616C6C6F636174696F6E206578630A
+S31AFE013AC3656564656400000000696C6C6567616C2054465450BA
+S31AFE013AD8206F7065726174696F6E0000756E6B6E6F776E20743F
+S31AFE013AED72616E736665722049440066696C6520616C7265615C
+S31AFE013B02647920657869737473006E6F207375636820757365EF
+S31AFE013B1772000000006F7065726174696F6E2074696D656420FE
+S31AFE013B2C6F757400736F6D6520736F7274206F66206E657477B8
+S31AFE013B416F726B206572726F720000696E76616C6964207061FC
+S31AFE013B5672616D6574657200000070726F746F636F6C207669F4
+S31AFE013B6B6F6C6174696F6E000066696C65206973206C617267E8
+S31AFE013B806572207468616E206275666665720000FFFF94F4FF6A
+S31AFE013B95FF9500FFFF950CFFFF9518FFFF9524FFFF9530FFFFC0
+S31AFE013BAA953CFFFF9548FFFF9554FFFF9560FFFF956CFFFF95E9
+S31AFE013BBF7847444220636F6E6E656374696F6E20706F72740072
+S31AFE013BD46764625F706F7274000000004E6574776F726B206418
+S31AFE013BE96562756720617420626F6F742074696D6500006E65B4
+S31AFE013BFE745F646562756700000055736520424F4F545020667C
+S31AFE013C136F72206E6574776F726B20636F6E666967757261743A
+S31AFE013C28696F6E00626F6F74700000004C6F63616C2049502054
+S31AFE013C3D6164647265737300000000626F6F74705F6D795F6956
+S31AFE013C52700044656661756C7420736572766572204950206132
+S31AFE013C67646472657373000000626F6F74705F736572766572A4
+S31AFE013C7C5F69700025732E25640A00006E65745F696F5F7772D7
+S31AFE013C91697465000000006E65745F696F5F726561640000005E
+S31AFE013CA60000FFFF99A4FFFF99A4FFFF99A4FFFF99A4FFFF9981
+S31AFE013CBBA4FFFF99A4FFFF99A4FFFF99A4FFFF99A4FFFF99A424
+S31AFE013CD0FFFF99A4FFFF99A4FFFF99A4FFFF99A4FFFF99A4FFB4
+S31AFE013CE5FF99A4FFFF99D0FFFF99F0FFFF9A10FFFF9A30FFFF2D
+S31AFE013CFA9A50FFFF9C74FFFF9C74FFFF9C74FFFF9C74FFFF9AF6
+S31AFE013D0F70FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A9062
+S31AFE013D24FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFBE
+S31AFE013D39FF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFFA9
+S31AFE013D4E9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9AF9
+S31AFE013D6390FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A90EE
+S31AFE013D78FFFF9A90FFFF9A90FFFF9A90FFFF9A90FFFF9A90FF6A
+S31AFE013D8DFF9A90FFFF9A28FFFF9A28FFFF9A28FFFF9A28FFFFF5
+S31AFE013DA29A28FFFF9A28FFFF9A28FFFF9A28FFFF9A28FFFF9AAD
+S31AFE013DB728FFFF9A28FFFF9A28FFFF9A28FFFF9A28FFFF9A280A
+S31AFE013DCCFFFF9A28FFFF9A54FFFF9A78FFFF9A9CFFFF9AC0FF96
+S31AFE013DE1FF9AE4FFFF9B8CFFFF9B8CFFFF9B8CFFFF9B8CFFFFB9
+S31AFE013DF69B08FFFF9B28FFFF9B28FFFF9B28FFFF9B28FFFF9B73
+S31AFE013E0B28FFFF9B28FFFF9B28FFFF9B28FFFF9B28FFFF9B28B0
+S31AFE013E20FFFF9B28FFFF9B28FFFF9B28FFFF9B28FFFF9B28FFC4
+S31AFE013E35FF9B28FFFF9B28FFFF9B28FFFF9B28FFFF9B28FFFFAF
+S31AFE013E4A9B28FFFF9B28FFFF9B28FFFF9B28FFFF9B28FFFF9BFE
+S31AFE013E5F28FFFF9B28FFFF9B28FFFF9B28FFFF9B28FFFF9B285C
+S31AFE013E74FFFF9B284E6F206E6574776F726B20696E74657266E4
+S31AFE013E896163657320666F756E640A0000000043616E27742070
+S31AFE013E9E67657420424F4F545020696E666F202D206E6574772F
+S31AFE013EB36F726B2064697361626C6564210A00000049503A2033
+S31AFE013EC8257300002C2044656661756C74207365727665723A46
+S31AFE013EDD2025730A0000000000000025642E25642E25642E25BF
+S31AFE013EF2640045746865726E65742073656E643A0A00457468E4
+S31AFE013F0765726E657420726563763A0A006574685F6472765F23
+S31AFE013F1C6473722073686F756C64206E6F742062652063616CEB
+S31AFE013F316C65643A20766563746F722025642C206461746120A5
+S31AFE013F4625780A000000000000002E2E2E20457261736520669A
+S31AFE013F5B726F6D2025702D25703A2000002E0000000A000000F5
+S31AFE013F702E2E2E2050726F6772616D2066726F6D2025702D25DA
+S31AFE013F85702061742025703A2000004E6F206572726F72202D5A
+S31AFE013F9A206F7065726174696F6E20636F6D706C6574650000A3
+S31AFE013FAF00496E76616C696420464C4153482061646472657310
+S31AFE013FC4730000004572726F7220747279696E6720746F206521
+S31AFE013FD9726173650000004572726F7220747279696E672074C8
+S31AFE013FEE6F206C6F636B2F756E6C6F636B004572726F72207428
+S31AFE0140037279696E6720746F2070726F6772616D0047656E65E0
+S31AFE014018726963206572726F720000004465766963652F7265B0
+S31AFE01402D67696F6E2069732077726974652D70726F7465637457
+S31AFE014042656400000000464C415348207375622D73797374655E
+S31AFE0140576D206E6F7420696E697469616C697A656400000000BB
+S31AFE01406C556E6B6E6F776E206572726F7200000000000000FF01
+S31AFE014081FFAC04FFFFAC10FFFFAC1CFFFFAC28FFFFAC34FFFF48
+S31AFE014096AC40FFFFAC4CFFFFAC58457272203D2025780A0000DF
+S31AFE0140AB0000000000FFFFB184FFFFB184FFFFB17CFFFFB114A7
+S31AFE0140C0FFFFB17CFFFFB11CFFFFB154FFFFB15CFFFFB16CFFC8
+S31AFE0140D5FFB16CFFFFB164FFFFB174FFFFB154FFFFB18CFFFF43
+S31AFE0140EAB16CFFFFB174FFFFB174FFFFB17CFFFFB184FFFFB14C
+S31AFE0140FF8CFFFFB18CFFFFB18CFFFFB18CFFFFB18CFFFFB18CF4
+S31AFE014114FFFFB18CFFFFB174FFFFB174FFFFB174FFFFB174FFCB
+S31AFE014129FFB75CFFFFB75CFFFFB75CFFFFB75CFFFFB75CFFFF28
+S31AFE01413EB75CFFFFB75CFFFFB75CFFFFB75CFFFFB75CFFFFB75B
+S31AFE0141535CFFFFB75CFFFFB75CFFFFB75CFFFFB75CFFFFB75CA1
+S31AFE014168FFFFB77CFFFFB79CFFFFB7BCFFFFB7DCFFFFB7FCFF09
+S31AFE01417DFFB858FFFFB858FFFFB858FFFFB858FFFFB81CFFFF1F
+S31AFE014192B83CFFFFB83CFFFFB83CFFFFB83CFFFFB83CFFFFB8A1
+S31AFE0141A73CFFFFB83CFFFFB83CFFFFB83CFFFFB83CFFFFB83C08
+S31AFE0141BCFFFFB83CFFFFB83CFFFFB83CFFFFB83CFFFFB83CFF30
+S31AFE0141D1FFB83CFFFFB83CFFFFB83CFFFFB83CFFFFB83CFFFF1B
+S31AFE0141E6B83CFFFFB83CFFFFB83CFFFFB83CFFFFB83CFFFFB84D
+S31AFE0141FB3CFFFFB83CFFFFB83CFFFFB83CFFFFB83CFFFFB83CB4
+S31AFE014210FFFFB7ACFFFFB7ACFFFFB7ACFFFFB7ACFFFFB7ACFFB0
+S31AFE014225FFB7ACFFFFB7ACFFFFB7ACFFFFB7ACFFFFB7ACFFFF9B
+S31AFE01423AB7ACFFFFB7ACFFFFB7ACFFFFB7ACFFFFB7ACFFFFB7CE
+S31AFE01424FACFFFFB7CCFFFFB7F0FFFFB814FFFFB838FFFFB85CB9
+S31AFE014264FFFFB8F4FFFFB8F4FFFFB8F4FFFFB8F4FFFFB880FF63
+S31AFE014279FFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFF7E
+S31AFE01428EB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8B0
+S31AFE0142A3A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0B3
+S31AFE0142B8FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FF3F
+S31AFE0142CDFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFF2A
+S31AFE0142E2B8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB8A0FFFFB85C
+S31AFE0142F7A025733A2043616E27742066696E642061646472658D
+S31AFE01430C7373206F66207365727665720A0000005F5F756470F4
+S31AFE0143215F73656E64746F000000007564705F72656376667266
+S31AFE0143366F6D202D2064726F70706564207061636B6574206F0F
+S31AFE01434B662025642062797465730A00004275665B25645D2F6B
+S31AFE01436025703A206275663A2025702C206C656E3A2025642F8B
+S31AFE01437525642C206E6578743A2025700A000046726565206C93
+S31AFE01438A697374203D2025700A005F5F656E65745F706F6C6C2D
+S31AFE01439F3A206E6F206D6F726520627566666572730A000000E3
+S31AFE0143B400000000FFFFCD90FFFFCDE8FFFFD064FFFFCE3CFFA8
+S31AFE0143C9FFCE3CFFFFCEE4FFFFCF24FFFFCFC0FFFFD004FFFFD3
+S307FE0143DED044C4
+S31AFE0143E0000000007C2F2D5C7C2D000000003324000079D0FE48
+S31AFE0143F5012010000000000000000000000000FE0058D8FE0051
+S31AFE01440A58F0FE0058C8FE0058B0FE005740FE0055F4FE005CF6
+S31AFE01441FECFE0054B4FE0054AC000036E40000000008003E280B
+S31AFE01443479B80000FE005DFCFE00AF98FE00AF98FE00AF98FE19
+S31AFE01444900AF98FE00AF98FE00AF98FE00AF98FE00AF98FE0000
+S31AFE01445EAF98FE00AF98FE00AF98FE00AF98FE00AF98FE00AF3C
+S31AFE01447398FE00AF98FE00AF98FE00AF98FE00AF98FE00AF983E
+S31AFE014488FE00AF98FE00AF98FE00AF98FE00AF98FE00AF98FEC3
+S31AFE01449D00AF98FE00AF98FE00AF98FE00AF98FE00AF98FE00AC
+S31AFE0144B2AF98FE00AF98FE00AF98FE00AF98FE00AF98FE00AFE8
+S31AFE0144C798FE00AF98FE00AF98FE00AF98FE00AF98FE00AF98EA
+S31AFE0144DCFE00AF98FE00AF98FE00AF98FE00AF98FE00AF98FE6F
+S31AFE0144F100AF98FE00AF98FE00AF98FE00AF98FE00AF98FE0058
+S31AFE014506AF98FE00AF98FE00AF98FE00AF98FE00AF98FE00AF93
+S31AFE01451B98FE00AF98FE00AF9800000000000000000000000064
+S31AFE01453000000000000000000000000000000000000000000071
+S31AFE0145450000000000000000000000000000000000000000005C
+S31AFE01455A00000000000000000000000000000000000000000047
+S31AFE01456F00000000000000000000000000000000000000000032
+S31AFE0145840000000000000000000000000000000000000000001D
+S31AFE01459900000000000000000000000000000000000000000008
+S31AFE0145AE000000000000000000000000000000000000000000F3
+S31AFE0145C3000000000000000000000000000000000000000000DE
+S31AFE0145D8000000000000000000000000000000000000000000C9
+S31AFE0145ED000000000000000000000000000000000000000000B4
+S31AFE0146020000000000000000000000000000000000000000009E
+S31AFE01461700000000000000000000000000000000000000000089
+S31AFE01462C00000000000000000000000000000000000000000074
+S31AFE0146410000000000000000000000000000000000000000005F
+S31AFE0146560000000000000000000000000000000000000000004A
+S31AFE01466B00000000000000000000000000000000000000000035
+S31AFE01468000000000000000000000000000000000000000000020
+S31AFE0146950000000000000000000000000000000000000000000B
+S31AFE0146AA000000000000000000000000000000000000000000F6
+S31AFE0146BF000000000000000000000000000000000000000000E1
+S31AFE0146D4000000000000000000000000000000000000000000CC
+S31AFE0146E900000000000000000000000000000000000000FE00B9
+S31AFE0146FE0000FE0000000040000000000000FF000000FF000066
+S31AFE014713000010000001000000FA100000FA1000000000000463
+S31AFE014728010000000000000000000000008000000000000000F6
+S31AFE01473D00000000000000000000000000000000000000000062
+S31AFE0147520000FE00834CFE0083A8000000000000000000000057
+S31AFE01476700FFFFFFFF0000000000000000FE0093F400000000B7
+S31AFE01477C0000000000011CE40000000000000000000000000022
+S31AFE01479100000000000000FFFFFFFEFFFFFFFE00000000000018
+S31AFE0147A61E1400001E14000001F40000000000000000000000A0
+S31AFE0147BB000000000000000000FE00E1C0FE00E668FE00E454C3
+S31AFE0147D0000000000000000000000000000003E80000000000E4
+S31AFE0147E5000000000000000000000000000000000000000000BA
+S31AFE0147FA000000000000000000000000000000000000000000A5
+S31AFE01480F000000000000000000FE012668FE012658FE0125E879
+S31AFE014824FE003DA4FE0125A4FE012574FE01256CFE0039C8FEAE
+S31AFE014839012564FE01254CFE012530FE003BCCFE012528FE01C7
+S31AFE01484E24E4FE0124A8FE004488FE0124A0FE01247CFE01242E
+S31AFE01486374FE004658FE0124DCFE0124ACFE0124A8FE004598B7
+S31AFE014878FE0125E0FE0125ACFE01256CFE003880FE011E1CFED5
+S31AFE01488D011E04FE011DF8FE002840FE011DF0FE011DC8FE0185
+S31AFE0148A21DACFE002A30FE012434FE012420FE012418FE0036D2
+S31AFE0148B7ECFE01246CFE012440FE012438FE002F48FE011DA875
+S31AFE0148CCFE011D8CFE011D74FE002B28FE011D6CFE011D58FE4F
+S31AFE0148E1011D50FE0029BCFE012084FE012078FE012050FE00C5
+S31AFE0148F64A14FE012C68FE012C54000000000000000100000037
+S31AFE01490B0100000000FE012C80FE012C74FE012C6800000001B3
+S31AFE0149200000000400000000FE012CA8FE012C94FE012C680054
+S31AFE0149350000010000000200000000FE013C2CFE013C080000BB
+S31AFE01494A0000000000010000000100000000FE013C48FE013C93
+S31AFE01495F34FE013C2C000000000000000500000000FE013C70F3
+S31AFE014974FE013C54FE013C2C000000000000000500000000FE30
+S31AFE014989013BD4FE013BC0000000000000000100000002000007
+S31AFE01499E0000FE013BFCFE013BE00000000000000001000000AE
+S31AFE0149B30100000000FE002CC000000000FE00DD2800000000FC
+S31AFE0149C8FE012018FE0059080000330C000000004E8000210011
+S310FE0149DD0000000000000000000000CA
+S705FE000100FB
--- a/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.h
+++ b/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.h
@@ -1,22 +1,37 @@
-// eCos memory layout - Thu Jun 15 15:44:21 2000
+// eCos memory layout - Fri Oct 20 10:35:23 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x400000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vectors) [];
+#endif
+#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (__reserved_vectors))
 #define CYGMEM_SECTION_reserved_vectors_SIZE (0x3000)
-extern char CYG_LABEL_NAME (_reserved_vsr_table) [];
-#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (_reserved_vsr_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vsr_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (__reserved_vsr_table))
 #define CYGMEM_SECTION_reserved_vsr_table_SIZE (0x200)
-extern char CYG_LABEL_NAME (_reserved_virtual_table) [];
-#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (_reserved_virtual_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_virtual_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (__reserved_virtual_table))
 #define CYGMEM_SECTION_reserved_virtual_table_SIZE (0x100)
-extern char CYG_LABEL_NAME (_reserved_for_rom) [];
-#define CYGMEM_SECTION_reserved_for_rom (CYG_LABEL_NAME (_reserved_for_rom))
-#define CYGMEM_SECTION_reserved_for_rom_SIZE (0xcd00)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_for_rom) [];
+#endif
+#define CYGMEM_SECTION_reserved_for_rom (CYG_LABEL_NAME (__reserved_for_rom))
+#define CYGMEM_SECTION_reserved_for_rom_SIZE (0x1cd00)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x400000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.ldi
+++ b/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Thu Jun 15 15:44:21 2000
+// eCos memory layout - Fri Oct 20 10:35:23 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0, LENGTH = 0x400000
@@ -10,10 +12,10 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
-    __reserved_vectors = 0; . = __reserved_vectors + 0x3000;
-    __reserved_vsr_table = ALIGN (0x10); . = __reserved_vsr_table + 0x200;
-    __reserved_virtual_table = ALIGN (0x10); . = __reserved_virtual_table + 0x100;
-    __reserved_for_rom = ALIGN (0x10); . = __reserved_for_rom + 0xcd00;
+    CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
+    CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
+    CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
+    CYG_LABEL_DEFN(__reserved_for_rom) = ALIGN (0x10); . = CYG_LABEL_DEFN(__reserved_for_rom) + 0x1cd00;
     SECTION_vectors (ram, ALIGN (0x10), LMA_EQ_VMA)
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
@@ -24,5 +26,6 @@ SECTIONS
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.mlt
+++ b/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_ram.mlt
@@ -3,7 +3,7 @@ region ram 0 400000 0 !
 section reserved_vectors 3000 1 0 0 1 1 1 1 0 0 reserved_vsr_table reserved_vsr_table !
 section reserved_vsr_table 200 10 0 0 0 1 0 1 reserved_virtual_table reserved_virtual_table !
 section reserved_virtual_table 100 10 0 0 0 1 0 1 reserved_for_rom reserved_for_rom !
-section reserved_for_rom cd00 10 0 0 0 1 0 1 vectors vectors !
+section reserved_for_rom 1cd00 10 0 0 0 1 0 1 vectors vectors !
 section vectors 0 10 0 1 0 1 0 1 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
@@ -13,4 +13,5 @@ section fixup 0 4 0 1 0 1 0 1 gcc_except
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 sbss sbss !
 section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.h
+++ b/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.h
@@ -1,22 +1,35 @@
-// eCos memory layout - Thu Jun 15 15:46:43 2000
+// eCos memory layout - Fri Oct 20 10:35:48 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0)
 #define CYGMEM_REGION_ram_SIZE (0x400000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xfe000000)
 #define CYGMEM_REGION_rom_SIZE (0x800000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
-extern char CYG_LABEL_NAME (_reserved_vectors) [];
-#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (_reserved_vectors))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vectors) [];
+#endif
+#define CYGMEM_SECTION_reserved_vectors (CYG_LABEL_NAME (__reserved_vectors))
 #define CYGMEM_SECTION_reserved_vectors_SIZE (0x3000)
-extern char CYG_LABEL_NAME (_reserved_vsr_table) [];
-#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (_reserved_vsr_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vsr_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (__reserved_vsr_table))
 #define CYGMEM_SECTION_reserved_vsr_table_SIZE (0x200)
-extern char CYG_LABEL_NAME (_reserved_virtual_table) [];
-#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (_reserved_virtual_table))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_virtual_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_virtual_table (CYG_LABEL_NAME (__reserved_virtual_table))
 #define CYGMEM_SECTION_reserved_virtual_table_SIZE (0x100)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x400000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.ldi
+++ b/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.ldi
@@ -1,54 +1,31 @@
-//===========================================================================
-//
-// ROM startup linker control script
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
-
-MEMORY
-{
-    rom : ORIGIN = 0xfe000000, LENGTH = 0x800000
-    ram : ORIGIN = 0x00000000, LENGTH = 0x400000
-}
-
-SECTIONS
-{
-    SECTIONS_BEGIN
-    SECTION_vectors (rom, 0xfe000000, LMA_EQ_VMA)
-    SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
-    __reserved_vectors = 0; . = __reserved_vectors + 0x3000;
-    __reserved_vsr_table = ALIGN (0x1); . = __reserved_vsr_table + 0x200;
-    __reserved_virtual_table = ALIGN (0x1); . = __reserved_virtual_table + 0x100;
-    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
-    SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
-    SECTIONS_END
-}
+// eCos memory layout - Fri Oct 20 10:35:48 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram : ORIGIN = 0, LENGTH = 0x400000
+    rom : ORIGIN = 0xfe000000, LENGTH = 0x800000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_vectors (rom, 0xfe000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__reserved_vectors) = 0; . = CYG_LABEL_DEFN(__reserved_vectors) + 0x3000;
+    CYG_LABEL_DEFN(__reserved_vsr_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
+    CYG_LABEL_DEFN(__reserved_virtual_table) = ALIGN (0x1); . = CYG_LABEL_DEFN(__reserved_virtual_table) + 0x100;
+    SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
+    SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
--- a/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.mlt
+++ b/packages/hal/powerpc/mbx/current/include/pkgconf/mlt_powerpc_mbx_rom.mlt
@@ -1,16 +1,17 @@
-version 0
-region ram 0 400000 0 !
-region rom fe000000 800000 1 !
-section reserved_vectors 3000 1 0 0 1 1 1 1 0 0 reserved_vsr_table reserved_vsr_table !
-section reserved_vsr_table 200 1 0 0 0 1 0 1 reserved_virtual_table reserved_virtual_table !
-section reserved_virtual_table 100 1 0 0 0 1 0 0 data !
-section data 0 10 1 1 0 1 0 0 sbss !
-section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
-section vectors 0 1 0 1 1 1 1 1 fe000000 fe000000 text text !
-section text 0 4 0 1 0 1 0 1 fini fini !
-section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
-section rodata 0 8 0 1 0 1 0 1 fixup fixup !
-section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 0 0 1 data !
+version 0
+region ram 0 400000 0 !
+region rom fe000000 800000 1 !
+section reserved_vectors 3000 1 0 0 1 1 1 1 0 0 reserved_vsr_table reserved_vsr_table !
+section reserved_vsr_table 200 1 0 0 0 1 0 1 reserved_virtual_table reserved_virtual_table !
+section reserved_virtual_table 100 1 0 0 0 1 0 0 data !
+section data 0 10 1 1 0 1 0 0 sbss !
+section sbss 0 4 0 1 0 1 0 1 bss bss !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
+section vectors 0 1 0 1 1 1 1 1 fe000000 fe000000 text text !
+section text 0 4 0 1 0 1 0 1 fini fini !
+section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
+section rodata 0 8 0 1 0 1 0 1 fixup fixup !
+section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
deleted file mode 100644
--- a/packages/hal/powerpc/mbx/current/misc/STUBS_config
+++ /dev/null
@@ -1,85 +0,0 @@
-#! /bin/sh
-# Configure PowerPC/cogent eCos to create Cogent GDB stubs
-# Ensure that PATH include the directory where the PPC tools reside.
-#
-# Run from an empty temporary directory with one argument: the path to
-# the packages directory (i.e., where pkgconf.tcl lives).
-#
-# Output will be ./stubrom.bin which is suitable for burning into ROM.
-# Remember to be careful with byte-endianess in the ROM programmer.
-
-if ( echo | tclsh ) 2>/dev/null ; then
-  TCL=tclsh
-elif ( echo | cygtclsh80 ) 2>/dev/null ; then
-  TCL=cygtclsh80
-else
-  echo Could not find TCL interpreter
-  exit 1
-fi
-
-$TCL $1/pkgconf.tcl                                                    \
-   --target=powerpc --platform=mbx --startup=rom                       \
-   --disable CYGPKG_KERNEL --disable CYGPKG_UITRON                     \
-   --disable CYGPKG_LIBC --disable CYGPKG_LIBM                         \
-   --disable CYGPKG_ERROR --disable CYGPKG_IO                          \
-   --disable CYGPKG_IO_SERIAL --disable CYGPKG_DEVICES_WALLCLOCK       \
-   --disable CYGPKG_DEVICES_WATCHDOG
-
-patch <<END_OF_PATCH -p0
---- pkgconf/hal.h.orig	Thu Feb 10 09:05:07 2000
-+++ pkgconf/hal.h	Thu Feb 10 09:04:56 2000
-@@ -122,7 +122,7 @@
-  }
- 
-  }}CFG_DATA */
--#define CYGFUN_HAL_COMMON_KERNEL_SUPPORT
-+#undef  CYGFUN_HAL_COMMON_KERNEL_SUPPORT
- #undef  CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL
- 
- #ifdef CYGDBG_HAL_DIAG_DISABLE_GDB_PROTOCOL
-@@ -243,7 +243,7 @@
- #define CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
- #define CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE 4096
- #undef  CYGSEM_HAL_COMMON_INTERRUPTS_ALLOW_NESTING
--#define CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
-+#undef  CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
- #undef  CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
- #undef  CYGIMP_HAL_COMMON_INTERRUPTS_IGNORE_SPURIOUS
- 
-@@ -272,7 +272,7 @@
-  }
-  
-  }}CFG_DATA */
--#define CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
-+#undef  CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
- 
- /* {{CFG_DATA
- 
-@@ -423,10 +423,10 @@
- 
-    }}CFG_DATA */
- 
--#undef   CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
-+#define  CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
- #undef   CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
--#define  CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
--#define  CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
-+#undef   CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT
-+#undef   CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
- 
- /*
-  * NOTE:
-@@ -522,7 +522,7 @@
-
- 
- /* Enable this when configuring as a ROM monitor (i.e., stub) */
--#undef  CYGSEM_HAL_ROM_MONITOR
-+#define CYGSEM_HAL_ROM_MONITOR
- 
- #include CYGBLD_HAL_TARGET_H
- #include CYGBLD_HAL_PLATFORM_H 
-END_OF_PATCH
-
-make
-make -C hal/common/current/src/stubrom
-powerpc-eabi-objcopy -O binary hal/common/current/src/stubrom/stubrom stubrom.bin
new file mode 100644
--- /dev/null
+++ b/packages/hal/powerpc/mbx/current/misc/redboot_RAM.cfg
@@ -0,0 +1,56 @@
+cdl_savefile_version 1;
+cdl_savefile_command cdl_savefile_version {};
+cdl_savefile_command cdl_savefile_command {};
+cdl_savefile_command cdl_configuration { description hardware template package };
+cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value };
+cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value };
+cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value };
+cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value };
+
+cdl_configuration eCos {
+    description "" ;
+    hardware    mbx ;
+    template    redboot ;
+    package -hardware CYGPKG_HAL_POWERPC current ;
+    package -hardware CYGPKG_HAL_POWERPC_MPC8xx current ;
+    package -hardware CYGPKG_HAL_POWERPC_MBX current ;
+    package -hardware CYGPKG_HAL_QUICC current ;
+    package -hardware CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC current ;
+    package -hardware CYGPKG_DEVS_ETH_POWERPC_QUICC current ;
+    package -template CYGPKG_HAL current ;
+    package -template CYGPKG_INFRA current ;
+    package -template CYGPKG_REDBOOT current ;
+    package CYGPKG_IO_ETH_DRIVERS current ;
+    package CYGPKG_IO_FLASH current ;
+    package CYGPKG_DEVS_FLASH_MBX current ;
+};
+
+cdl_option CYGBLD_BUILD_GDB_STUBS {
+    user_value 0
+};
+
+cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
+    user_value 0
+};
+
+cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
+    inferred_value 0
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
+    inferred_value 1
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT {
+    inferred_value 1
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT {
+    inferred_value 0
+};
+
+cdl_component CYGBLD_BUILD_REDBOOT {
+    user_value 1
+};
+
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/powerpc/mbx/current/misc/redboot_ROM.cfg
@@ -0,0 +1,64 @@
+cdl_savefile_version 1;
+cdl_savefile_command cdl_savefile_version {};
+cdl_savefile_command cdl_savefile_command {};
+cdl_savefile_command cdl_configuration { description hardware template package };
+cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value };
+cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value };
+cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value };
+cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value };
+
+cdl_configuration eCos {
+    description "" ;
+    hardware    mbx ;
+    template    redboot ;
+    package -hardware CYGPKG_HAL_POWERPC current ;
+    package -hardware CYGPKG_HAL_POWERPC_MPC8xx current ;
+    package -hardware CYGPKG_HAL_POWERPC_MBX current ;
+    package -hardware CYGPKG_HAL_QUICC current ;
+    package -hardware CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC current ;
+    package -hardware CYGPKG_DEVS_ETH_POWERPC_QUICC current ;
+    package -template CYGPKG_HAL current ;
+    package -template CYGPKG_INFRA current ;
+    package -template CYGPKG_REDBOOT current ;
+    package CYGPKG_IO_ETH_DRIVERS current ;
+    package CYGPKG_IO_FLASH current ;
+    package CYGPKG_DEVS_FLASH_MBX current ;
+};
+
+cdl_option CYGBLD_BUILD_GDB_STUBS {
+    user_value 0
+};
+
+cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
+    user_value 0
+};
+
+cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
+    inferred_value 0
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
+    inferred_value 1
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT {
+    inferred_value 1
+};
+
+cdl_option CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT {
+    inferred_value 0
+};
+
+cdl_component CYGBLD_BUILD_REDBOOT {
+    user_value 1
+};
+
+
+
+cdl_option CYGSEM_HAL_ROM_MONITOR {
+    user_value 1
+};
+
+cdl_component CYG_HAL_STARTUP {
+    user_value ROM
+};
--- a/packages/hal/powerpc/mbx/current/tests/mbxtime.cxx
+++ b/packages/hal/powerpc/mbx/current/tests/mbxtime.cxx
@@ -163,9 +163,17 @@ static Cyg_Thread thread2     CYG_INIT_P
 
 // -------------------------------------------------------------------------
 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+externC void
+cyg_hal_invoke_constructors();
+#endif
+
 externC void
 cyg_user_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     CYG_TEST_INIT();
     CYG_TEST_INFO( "cyg_user_start()" );
     thread1.resume();
--- a/packages/hal/powerpc/sim/current/ChangeLog
+++ b/packages/hal/powerpc/sim/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_sim_ram.h:
+	* include/pkgconf/mlt_powerpc_sim_ram.ldi:
+	Regenerated with updated host tools
+
+2000-10-19  Jesper Skov  <jskov@redhat.com>
+
+	* include/pkgconf/mlt_powerpc_sim_ram.h: Added heap1 label.
+	* include/pkgconf/mlt_powerpc_sim_ram.mlt: Same.
+	* include/pkgconf/mlt_powerpc_sim_ram.ldi: Same.
+
 2000-06-27  Jesper Skov  <jskov@redhat.com>
 
 	* src/hal_aux.c (hal_platform_init): Added.
--- a/packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.h
+++ b/packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.h
@@ -1,13 +1,22 @@
-// eCos memory layout - Mon Mar 06 11:00:56 2000
-
-// This is a generated file - do not edit
-
-#include <cyg/infra/cyg_type.h>
-#include <stddef.h>
-
-#define CYGMEM_REGION_ram (0)
-#define CYGMEM_REGION_ram_SIZE (0x100000)
-#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved_vsr_table) [];
-#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (_reserved_vsr_table))
-#define CYGMEM_SECTION_reserved_vsr_table_SIZE (0x200)
+// eCos memory layout - Fri Oct 20 10:36:41 2000
+
+// This is a generated file - do not edit
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_ram (0)
+#define CYGMEM_REGION_ram_SIZE (0x100000)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved_vsr_table) [];
+#endif
+#define CYGMEM_SECTION_reserved_vsr_table (CYG_LABEL_NAME (__reserved_vsr_table))
+#define CYGMEM_SECTION_reserved_vsr_table_SIZE (0x200)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x100000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.ldi
+++ b/packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.ldi
@@ -1,55 +1,28 @@
-//===========================================================================
-//
-// RAM startup linker control script
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
-
-// eCos memory layout - Mon Mar 06 11:00:56 2000
-
-// This is a generated file - do not edit
-
-MEMORY
-{
-    ram : ORIGIN = 0, LENGTH = 0x100000
-}
-
-SECTIONS
-{
-    SECTIONS_BEGIN
-    SECTION_vectors (ram, 0, LMA_EQ_VMA)
-    __reserved_vsr_table = 0x3000; . = __reserved_vsr_table + 0x200;
-    SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
-    SECTIONS_END
-}
+// eCos memory layout - Fri Oct 20 10:36:41 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram : ORIGIN = 0, LENGTH = 0x100000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_vectors (ram, 0, LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__reserved_vsr_table) = 0x3000; . = CYG_LABEL_DEFN(__reserved_vsr_table) + 0x200;
+    SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
--- a/packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.mlt
+++ b/packages/hal/powerpc/sim/current/include/pkgconf/mlt_powerpc_sim_ram.mlt
@@ -1,13 +1,14 @@
-version 0
-region ram 0 100000 0 !
-section vectors 0 1 0 1 1 0 1 0 0 0 !
-section reserved_vsr_table 200 1 0 0 1 1 1 1 3000 3000 text text !
-section text 0 4 0 1 0 1 0 1 fini fini !
-section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
-section rodata 0 8 0 1 0 1 0 1 fixup fixup !
-section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 1 0 1 data data !
-section data 0 8 0 1 0 1 0 1 sbss sbss !
-section sbss 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+version 0
+region ram 0 100000 0 !
+section vectors 0 1 0 1 1 0 1 0 0 0 !
+section reserved_vsr_table 200 1 0 0 1 1 1 1 3000 3000 text text !
+section text 0 4 0 1 0 1 0 1 fini fini !
+section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
+section rodata 0 8 0 1 0 1 0 1 fixup fixup !
+section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 1 0 1 data data !
+section data 0 8 0 1 0 1 0 1 sbss sbss !
+section sbss 0 4 0 1 0 1 0 1 bss bss !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/sh/arch/current/ChangeLog
+++ b/packages/hal/sh/arch/current/ChangeLog
@@ -1,3 +1,29 @@
+2000-10-23  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_misc.c: Always include hal_intr.h
+
+	* src/sh3_sci.c: Use specified value for default baud rate.
+	* src/sh3_scif.c: Same.
+
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_misc.c: Update __mem_fault_handler declaration.
+
+2000-10-19  Jesper Skov  <jskov@redhat.com>
+
+	* include/sh_regs.h (CYGARC_REG_WCR1_0WS, CYGARC_REG_WCR2_0WS):
+	Added for consistent init code.
+	
+2000-10-17  Jesper Skov  <jskov@redhat.com>
+
+	* src/vectors.S (__reset_platform): Rearrange constants used in
+	early init code.
+
+2000-10-16  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/hal_arch.h (CYGARC_JMP_BUF_SIZE): Define hal_jmp_buf in
+	terms of this.
+
 2000-10-11  Jesper Skov  <jskov@redhat.com>
 
 	* src/vectors.S (__reset_platform): Clear watchdog control flags.
--- a/packages/hal/sh/arch/current/cdl/hal_sh.cdl
+++ b/packages/hal/sh/arch/current/cdl/hal_sh.cdl
@@ -91,6 +91,18 @@ cdl_package CYGPKG_HAL_SH {
         @rm target.tmp
     }
 
+    cdl_interface CYGINT_HAL_SH_DMA_CHANNELS {
+        display       "Number of DMA channels"
+    }
+
+    cdl_interface CYGINT_HAL_SH_DMA_CHANNELS_USED {
+        display       "Number of requested DMA channels"
+        requires      CYGINT_HAL_SH_DMA_CHANNELS_USED <= CYGINT_HAL_SH_DMA_CHANNELS
+        description   "
+            Various drivers may request use of a DMA channel, but only
+            so many are available. These interfaces make sure the
+            DMA resources are not overcommitted."
+    }
 
     cdl_component CYGPKG_HAL_SH_CPU {
         display          "CPU type and endian mode controls"
--- a/packages/hal/sh/arch/current/include/hal_arch.h
+++ b/packages/hal/sh/arch/current/include/hal_arch.h
@@ -226,7 +226,9 @@ typedef struct {
     cyg_uint32 r14;
 } hal_jmp_buf_t;
 
-typedef cyg_uint32 hal_jmp_buf[sizeof(hal_jmp_buf_t) / sizeof(cyg_uint32)];
+#define CYGARC_JMP_BUF_SIZE      (sizeof(hal_jmp_buf_t) / sizeof(cyg_uint32))
+
+typedef cyg_uint32 hal_jmp_buf[ CYGARC_JMP_BUF_SIZE ];
 
 externC int hal_setjmp(hal_jmp_buf env);
 externC void hal_longjmp(hal_jmp_buf env, int val);
--- a/packages/hal/sh/arch/current/include/sh_regs.h
+++ b/packages/hal/sh/arch/current/include/sh_regs.h
@@ -208,6 +208,7 @@
 #define CYGARC_REG_WCR1_A0I_MASK        0x0003
 #define CYGARC_REG_WCR1_A0I_SHIFT       0
 
+#define CYGARC_REG_WCR1_0WS         0
 #define CYGARC_REG_WCR1_1WS         1
 #define CYGARC_REG_WCR1_2WS         2
 #define CYGARC_REG_WCR1_3WS         3
@@ -227,6 +228,7 @@
 #define CYGARC_REG_WCR2_A0_MASK         0x0007 // Wait states + burst pitch
 #define CYGARC_REG_WCR2_A0_SHIFT        0
 
+#define CYGARC_REG_WCR2_0WS             0
 #define CYGARC_REG_WCR2_1WS             1
 #define CYGARC_REG_WCR2_2WS             2
 #define CYGARC_REG_WCR2_3WS             3
--- a/packages/hal/sh/arch/current/src/hal_misc.c
+++ b/packages/hal/sh/arch/current/src/hal_misc.c
@@ -51,10 +51,7 @@
 
 #include <cyg/hal/hal_arch.h>           // HAL header
 #include <cyg/hal/hal_cache.h>          // HAL cache
-#if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS) || \
-    defined(CYGPKG_HAL_EXCEPTIONS)
-# include <cyg/hal/hal_intr.h>           // HAL interrupts/exceptions
-#endif
+#include <cyg/hal/hal_intr.h>           // HAL interrupts/exceptions
 
 //---------------------------------------------------------------------------
 // Functions used during initialization.
@@ -96,7 +93,7 @@ externC void __handle_exception (void);
 
 externC HAL_SavedRegisters *_hal_registers;
 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
-externC volatile void *__mem_fault_handler;
+externC void* volatile __mem_fault_handler;
 #endif
 
 void
--- a/packages/hal/sh/arch/current/src/sh.ld
+++ b/packages/hal/sh/arch/current/src/sh.ld
@@ -40,6 +40,8 @@
 //
 //========================================================================*/
 
+#include <pkgconf/system.h>
+
 STARTUP(vectors.o)
 ENTRY(__reset)
 #ifdef EXTRAS
@@ -53,66 +55,69 @@ GROUP(libtarget.a libgcc.a)
 #define FORCE_OUTPUT . = .
 
 
-#define SECTIONS_BEGIN
+# define SECTIONS_BEGIN
 
-#define SECTION_vectors(_region_, _vma_, _lma_)        \
-  .vectors _vma_ : _lma_                                              \
-  { FORCE_OUTPUT; KEEP(*(.vectors)) }         \
-  > _region_                                   \
+# define SECTION_vectors(_region_, _vma_, _lma_)		\
+  .vectors _vma_ : _lma_					\
+  { FORCE_OUTPUT; KEEP(*(.vectors))				\
+  }								\
+  > _region_							\
   __vector_code_lma = LOADADDR(.vectors);
 
-#define SECTION_text(_region_, _vma_, _lma_)           \
-  .text _vma_ : _lma_                                                 \
-  { __stext = .;       \
-    *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) }      \
-  > _region_                                                    \
+# define SECTION_text(_region_, _vma_, _lma_)			\
+  .text _vma_ : _lma_						\
+  { __stext = .;						\
+    *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) }	\
+  > _region_							\
   __etext = .;  PROVIDE (__etext = .);
 
-#define SECTION_fini(_region_, _vma_, _lma_)   \
-    .fini _vma_ : _lma_                                       \
-    { FORCE_OUTPUT; *(.fini) }        \
-    > _region_
+# define SECTION_data(_region_, _vma_, _lma_)			\
+    .data _vma_ : _lma_						\
+    { __ram_data_start = ABSOLUTE(.); *(.data*)			\
+     . = ALIGN(8); ___CTOR_LIST__ = ABSOLUTE(.);		\
+      KEEP(*(SORT(.ctors*))) ___CTOR_END__ = ABSOLUTE(.);	\
+    ___DTOR_LIST__ = ABSOLUTE(.);				\
+      KEEP(*(SORT(.dtors*))) ___DTOR_END__ = ABSOLUTE(.);	\
+    . = ALIGN(8);						\
+      KEEP(*( SORT (.ecos.table.*))) ;				\
+    } > _region_						\
+    __rom_data_start = LOADADDR(.data);				\
+    __ram_data_end = .; PROVIDE(__ram_data_end = .);		\
+    _edata = .; PROVIDE (edata = .);
 
-#define SECTION_rodata1(_region_, _vma_, _lma_)        \
-    .rodata1 _vma_ : _lma_                                            \
-    { FORCE_OUTPUT; *(.rodata1) }             \
-    > _region_
+
 
-#define SECTION_rodata(_region_, _vma_, _lma_) \
-    .rodata _vma_ : _lma_                                     \
-    { FORCE_OUTPUT; *(.rodata*) }     \
+#define SECTION_fini(_region_, _vma_, _lma_)	\
+    .fini _vma_ : _lma_				\
+    { FORCE_OUTPUT; *(.fini) }			\
     > _region_
 
-#define SECTION_fixup(_region_, _vma_, _lma_)                      \
-    .fixup _vma_ : _lma_                                                          \
-    { __FIXUP_START__ = ABSOLUTE(.); *(.fixup) __FIXUP_END__ = ABSOLUTE(.);}\
+#define SECTION_rodata1(_region_, _vma_, _lma_)	\
+    .rodata1 _vma_ : _lma_			\
+    { FORCE_OUTPUT; *(.rodata1) }		\
     > _region_
 
-#define SECTION_gcc_except_table(_region_, _vma_, _lma_)       \
-    .gcc_except_table _vma_ : _lma_                                           \
-    { __EXCEPT_START__ = ABSOLUTE(.); *(.gcc_except_table)              \
-      __EXCEPT_END__ = ABSOLUTE(.);}                                    \
+#define SECTION_rodata(_region_, _vma_, _lma_)	\
+    .rodata _vma_ : _lma_			\
+    { FORCE_OUTPUT; *(.rodata*) }		\
     > _region_
 
-#define SECTION_data(_region_, _vma_, _lma_)                                  \
-    .data _vma_ : _lma_                                                       \
-    { __ram_data_start = ABSOLUTE(.); *(.data*)                               \
-     . = ALIGN(8); ___CTOR_LIST__ = ABSOLUTE(.);                              \
-      KEEP(*(SORT(.ctors*))) ___CTOR_END__ = ABSOLUTE(.);                     \
-    ___DTOR_LIST__ = ABSOLUTE(.);                                             \
-      KEEP(*(SORT(.dtors*))) ___DTOR_END__ = ABSOLUTE(.);                     \
-    . = ALIGN(8);                                                             \
-      KEEP(*( SORT (.ecos.table.*))) ;                                        \
-    } > _region_                                                              \
-    __rom_data_start = LOADADDR(.data);                                       \
-    __ram_data_end = .; PROVIDE(__ram_data_end = .);                          \
-    _edata = .; PROVIDE (edata = .);
+#define SECTION_fixup(_region_, _vma_, _lma_)				     \
+    .fixup _vma_ : _lma_						     \
+    { __FIXUP_START__ = ABSOLUTE(.); *(.fixup) __FIXUP_END__ = ABSOLUTE(.);} \
+    > _region_
 
-#define SECTION_bss(_region_, _vma_, _lma_)                      \
-    .bss _vma_ : _lma_                                                          \
-    { __bss_start = ABSOLUTE (.);                       \
-      FORCE_OUTPUT; *(.dynbss) *(.bss) *(COMMON)        \
-      __bss_end = ABSOLUTE (.); }                       \
+#define SECTION_gcc_except_table(_region_, _vma_, _lma_)	\
+    .gcc_except_table _vma_ : _lma_				\
+    { __EXCEPT_START__ = ABSOLUTE(.); *(.gcc_except_table)	\
+      __EXCEPT_END__ = ABSOLUTE(.);}				\
+    > _region_
+
+#define SECTION_bss(_region_, _vma_, _lma_)		\
+    .bss _vma_ : _lma_					\
+    { __bss_start = ABSOLUTE (.);			\
+      FORCE_OUTPUT; *(.dynbss) *(.bss) *(COMMON)	\
+      __bss_end = ABSOLUTE (.); }			\
     > _region_
 
 #define SECTIONS_END . = ALIGN(4); _end = .; PROVIDE (end = .);
--- a/packages/hal/sh/arch/current/src/sh3_sci.c
+++ b/packages/hal/sh/arch/current/src/sh3_sci.c
@@ -58,6 +58,10 @@
 
 //--------------------------------------------------------------------------
 
+#ifndef CYGNUM_HAL_SH_SH3_SCI_DEFAULT_BAUD_RATE
+# define CYGNUM_HAL_SH_SH3_SCI_DEFAULT_BAUD_RATE 38400
+#endif
+
 void
 cyg_hal_plf_sci_init_channel(const channel_data_t* chan)
 {
@@ -71,12 +75,12 @@ cyg_hal_plf_sci_init_channel(const chann
     // 8-1-no parity.
     HAL_WRITE_UINT8(base+_REG_SCSMR, 0);
 
-    // Set speed to 38400
+    // Set speed to CYGNUM_HAL_SH_SH3_SCI_DEFAULT_BAUD_RATE
     HAL_READ_UINT8(base+_REG_SCSMR, tmp);
     tmp &= ~CYGARC_REG_SCSMR_CKSx_MASK;
-    tmp |= CYGARC_SCBRR_CKSx(38400);
+    tmp |= CYGARC_SCBRR_CKSx(CYGNUM_HAL_SH_SH3_SCI_DEFAULT_BAUD_RATE);
     HAL_WRITE_UINT8(base+_REG_SCSMR, tmp);
-    HAL_WRITE_UINT8(base+_REG_SCBRR, CYGARC_SCBRR_N(38400));
+    HAL_WRITE_UINT8(base+_REG_SCBRR, CYGARC_SCBRR_N(CYGNUM_HAL_SH_SH3_SCI_DEFAULT_BAUD_RATE));
 }
 
 static cyg_bool
--- a/packages/hal/sh/arch/current/src/sh3_scif.c
+++ b/packages/hal/sh/arch/current/src/sh3_scif.c
@@ -64,6 +64,10 @@
 
 //--------------------------------------------------------------------------
 
+#ifndef CYGNUM_HAL_SH_SH3_SCIF_DEFAULT_BAUD_RATE
+# define CYGNUM_HAL_SH_SH3_SCIF_DEFAULT_BAUD_RATE 38400
+#endif
+
 void
 cyg_hal_plf_scif_init_channel(const channel_data_t* chan)
 {
@@ -81,18 +85,20 @@ cyg_hal_plf_scif_init_channel(const chan
     // 8-1-no parity.
     HAL_WRITE_UINT8(base+_REG_SCSMR, 0);
 
-    // Set speed to 38400
+    // Set speed to CYGNUM_HAL_SH_SH3_SCIF_DEFAULT_BAUD_RATE
     HAL_READ_UINT8(base+_REG_SCSMR, tmp);
     tmp &= ~CYGARC_REG_SCSMR2_CKSx_MASK;
-    tmp |= CYGARC_SCBRR_CKSx(38400);
+    tmp |= CYGARC_SCBRR_CKSx(CYGNUM_HAL_SH_SH3_SCIF_DEFAULT_BAUD_RATE);
     HAL_WRITE_UINT8(base+_REG_SCSMR, tmp);
-    HAL_WRITE_UINT8(base+_REG_SCBRR, CYGARC_SCBRR_N(38400));
+    HAL_WRITE_UINT8(base+_REG_SCBRR, CYGARC_SCBRR_N(CYGNUM_HAL_SH_SH3_SCIF_DEFAULT_BAUD_RATE));
 
     // Let things settle: Here we should should wait the equivalent of
-    // one bit interval, i.e. 1/38400 second, but until we have
-    // something like the Linux delay loop, it's hard to do reliably. So
-    // just move on and hope for the best (this is unlikely to cause
-    // problems since the CPU has just come out of reset anyway).
+    // one bit interval,
+    // i.e. 1/CYGNUM_HAL_SH_SH3_SCIF_DEFAULT_BAUD_RATE second, but
+    // until we have something like the Linux delay loop, it's hard to
+    // do reliably. So just move on and hope for the best (this is
+    // unlikely to cause problems since the CPU has just come out of
+    // reset anyway).
 
     // Clear status register (read back first).
     HAL_READ_UINT16(base+_REG_SCSSR, sr);
--- a/packages/hal/sh/arch/current/src/vectors.S
+++ b/packages/hal/sh/arch/current/src/vectors.S
@@ -740,6 +740,44 @@ restore_state:
         mov     #13,r13
         mov     #14,r14
 #endif
+
+         bra    hal_hw_init
+          nop
+
+$nCYG_WTCSR:
+	.word	0xa500		! clear all CSR bits
+
+	.align	2
+
+$nCYG_SR:
+        .long   CYG_SR
+$CYGARC_REG_TSTR:
+        .long   CYGARC_REG_TSTR
+$CYGARC_REG_IPRA:
+        .long   CYGARC_REG_IPRA
+$CYGARC_REG_IPRB:
+        .long   CYGARC_REG_IPRB
+#ifdef CYGARC_SH_MOD_INTC_V2
+$CYGARC_REG_IPRC:
+        .long   CYGARC_REG_IPRC
+$CYGARC_REG_IPRD:
+        .long   CYGARC_REG_IPRD
+$CYGARC_REG_IPRE:
+        .long   CYGARC_REG_IPRE
+$CYGARC_REG_ICR1:
+        .long   CYGARC_REG_ICR1
+#endif
+#ifdef CYGARC_SH_MOD_INTC_V2
+$CYGARC_REG_IPRF:
+        .long   CYGARC_REG_IPRF
+$nCYG_ICR1_INIT:
+	.word	CYGARC_REG_ICR1_INIT
+	.align	2
+#endif
+$__reset:
+        .long   __reset
+	
+hal_hw_init:
         
         # Call platform specific hardware initialization
         # This may include memory controller initialization. It is not
@@ -748,7 +786,7 @@ restore_state:
 
         # Now copy necessary bits to RAM and jump to the VMA base
 
-#ifdef CYG_HAL_STARTUP_ROM
+#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_SUBSETROMRAM)
 
         # Copy data from ROM to ram
         mov.l   $__rom_data_start,r3    ! r3 = rom start
@@ -764,6 +802,7 @@ 1:      mov.l   @r3+,r0                 
         bf      1b                      ! loop if not yet done
 2:
 
+
         # Jump to the proper VMA base of the code.
         mov.l   $_complete_setup,r0
         jmp     @r0
@@ -773,13 +812,14 @@ 2:
         .extern __rom_data_start
         .extern __ram_data_start
         .extern __ram_data_end
-
 $__rom_data_start:
         .long   __rom_data_start
 $__ram_data_start:
         .long   __ram_data_start
 $__ram_data_end:
         .long   __ram_data_end
+
+
 $_complete_setup:
         .long _complete_setup
 
@@ -818,39 +858,6 @@ 1:      mov.l   @r0+,r3                 
                 
 #endif
 
-$nCYG_WTCSR:
-	.word	0xa500		! clear all CSR bits
-
-	.align	2
-
-$nCYG_SR:
-        .long   CYG_SR
-$CYGARC_REG_TSTR:
-        .long   CYGARC_REG_TSTR
-$CYGARC_REG_IPRA:
-        .long   CYGARC_REG_IPRA
-$CYGARC_REG_IPRB:
-        .long   CYGARC_REG_IPRB
-#ifdef CYGARC_SH_MOD_INTC_V2
-$CYGARC_REG_IPRC:
-        .long   CYGARC_REG_IPRC
-$CYGARC_REG_IPRD:
-        .long   CYGARC_REG_IPRD
-$CYGARC_REG_IPRE:
-        .long   CYGARC_REG_IPRE
-$CYGARC_REG_ICR1:
-        .long   CYGARC_REG_ICR1
-#endif
-#ifdef CYGARC_SH_MOD_INTC_V2
-$CYGARC_REG_IPRF:
-        .long   CYGARC_REG_IPRF
-$nCYG_ICR1_INIT:
-	.word	CYGARC_REG_ICR1_INIT
-	.align	2
-#endif
-$__reset:
-        .long   __reset
-
 #-----------------------------------------------------------------------------
 # Complete target initialization and setup.
 # After this point we can use absolute addressing modes and access all the
--- a/packages/hal/sh/cq7708/current/ChangeLog
+++ b/packages/hal/sh/cq7708/current/ChangeLog
@@ -1,3 +1,20 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_sh_sh7708_cq7708_ram.h:
+	* include/pkgconf/mlt_sh_sh7708_cq7708_rom.h:
+	* include/pkgconf/mlt_sh_sh7708_cq7708_ram.ldi:
+	* include/pkgconf/mlt_sh_sh7708_cq7708_rom.ldi:
+	Regenerated with updated host tools
+
+2000-10-17  Jesper Skov  <jskov@redhat.com>
+
+	* include/pkgconf/mlt_sh_sh7708_cq7708_ram.h: Adding heap1.
+	* include/pkgconf/mlt_sh_sh7708_cq7708_ram.mlt: Ditto.
+	* include/pkgconf/mlt_sh_sh7708_cq7708_ram.ldi: Ditto.
+	* include/pkgconf/mlt_sh_sh7708_cq7708_rom.h: Ditto.
+	* include/pkgconf/mlt_sh_sh7708_cq7708_rom.mlt: Ditto.
+	* include/pkgconf/mlt_sh_sh7708_cq7708_rom.ldi: Ditto.
+
 2000-10-10  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_sh_sh7708_cq7708.cdl: Fix legal OCC ranges.
--- a/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.h
+++ b/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Tue Apr 11 12:43:47 2000
+// eCos memory layout - Fri Oct 20 09:45:54 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0xc004000)
 #define CYGMEM_REGION_ram_SIZE (0x3fc000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xc400000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.ldi
+++ b/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Apr 11 12:43:47 2000
+// eCos memory layout - Fri Oct 20 09:45:54 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0xc004000, LENGTH = 0x3fc000
@@ -19,5 +21,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.mlt
+++ b/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_ram.mlt
@@ -8,4 +8,5 @@ section rodata 0 8 0 1 0 1 0 1 fixup fix
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.h
+++ b/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Tue Apr 11 12:40:10 2000
+// eCos memory layout - Fri Oct 20 09:49:06 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0xc000200)
 #define CYGMEM_REGION_ram_SIZE (0x3ffe00)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xa0000000)
 #define CYGMEM_REGION_rom_SIZE (0x8000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0xc400000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.ldi
+++ b/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Apr 11 12:40:10 2000
+// eCos memory layout - Fri Oct 20 09:49:06 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0xc000200, LENGTH = 0x3ffe00
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, 0xc000200, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.mlt
+++ b/packages/hal/sh/cq7708/current/include/pkgconf/mlt_sh_sh7708_cq7708_rom.mlt
@@ -2,7 +2,8 @@ version 0
 region ram c000200 3ffe00 0 !
 region rom a0000000 8000 1 !
 section data 0 1 1 1 1 1 0 0 c000200 bss !
-section bss 0 10 0 1 0 0 0 0 !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
 section vectors 0 1 0 1 1 1 1 1 a0000000 a0000000 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
--- a/packages/hal/sh/edk/current/ChangeLog
+++ b/packages/hal/sh/edk/current/ChangeLog
@@ -1,3 +1,25 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_sh_edk7708_ram.h:
+	* include/pkgconf/mlt_sh_edk7708_rom.h:
+	* include/pkgconf/mlt_sh_edk7708_romram.h:
+	* include/pkgconf/mlt_sh_edk7708_ram.ldi:
+	* include/pkgconf/mlt_sh_edk7708_rom.ldi:
+	* include/pkgconf/mlt_sh_edk7708_romram.ldi:
+	Regenerated with updated host tools
+
+2000-10-17  Jesper Skov  <jskov@redhat.com>
+
+	* include/pkgconf/mlt_sh_edk7708_ram.h: Adding heap1.
+	* include/pkgconf/mlt_sh_edk7708_ram.mlt: Ditto.
+	* include/pkgconf/mlt_sh_edk7708_ram.ldi: Ditto.
+	* include/pkgconf/mlt_sh_edk7708_rom.h: Ditto.
+	* include/pkgconf/mlt_sh_edk7708_rom.mlt: Ditto.
+	* include/pkgconf/mlt_sh_edk7708_rom.ldi: Ditto.
+	* include/pkgconf/mlt_sh_edk7708_romram.h: Ditto.
+	* include/pkgconf/mlt_sh_edk7708_romram.mlt: Ditto.
+	* include/pkgconf/mlt_sh_edk7708_romram.ldi: Ditto.
+
 2000-10-10  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_sh_edk7708.cdl: Fix legal OCC ranges.
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.h
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 15:34:41 1999
-
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
-
-#include <cyg/infra/cyg_type.h>
-#include <stddef.h>
-
-#define CYGMEM_REGION_ram (0x8008000)
-#define CYGMEM_REGION_ram_SIZE (0xf8000)
-#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+// eCos memory layout - Fri Oct 20 09:50:36 2000
+
+// This is a generated file - do not edit
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_ram (0x8008000)
+#define CYGMEM_REGION_ram_SIZE (0xf8000)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x8100000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.ldi
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.ldi
@@ -1,49 +1,26 @@
-//===========================================================================
-//
-// RAM start linker control script
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
-
-MEMORY
-{
-    ram : ORIGIN = 0x08008000, LENGTH = 0xf8000
-}
-
-SECTIONS
-{
-    SECTIONS_BEGIN
-    SECTION_vectors (ram, 0x08008000, LMA_EQ_VMA)
-    SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
-    SECTIONS_END
-}
+// eCos memory layout - Fri Oct 20 09:50:36 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram : ORIGIN = 0x8008000, LENGTH = 0xf8000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_vectors (ram, 0x8008000, LMA_EQ_VMA)
+    SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.mlt
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_ram.mlt
@@ -1,11 +1,12 @@
-version 0
-region ram 8008000 f8000 0 !
-section vectors 0 1 0 1 1 1 1 1 8008000 8008000 text text !
-section text 0 4 0 1 0 1 0 1 fini fini !
-section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
-section rodata 0 8 0 1 0 1 0 1 fixup fixup !
-section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 1 0 1 data data !
-section data 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 10 0 1 0 0 0 0 !
+version 0
+region ram 8008000 f8000 0 !
+section vectors 0 1 0 1 1 1 1 1 8008000 8008000 text text !
+section text 0 4 0 1 0 1 0 1 fini fini !
+section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
+section rodata 0 8 0 1 0 1 0 1 fixup fixup !
+section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 1 0 1 data data !
+section data 0 8 0 1 0 1 0 1 bss bss !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.h
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Wed Nov 24 11:54:50 1999
-
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
-
-#include <cyg/infra/cyg_type.h>
-#include <stddef.h>
-
-#define CYGMEM_REGION_ram (0x8000200)
-#define CYGMEM_REGION_ram_SIZE (0xffe00)
-#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-#define CYGMEM_REGION_rom (0xa0000000)
-#define CYGMEM_REGION_rom_SIZE (0x20000)
-#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+// eCos memory layout - Fri Oct 20 09:51:04 2000
+
+// This is a generated file - do not edit
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_ram (0x8000200)
+#define CYGMEM_REGION_ram_SIZE (0xffe00)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#define CYGMEM_REGION_rom (0xa0000000)
+#define CYGMEM_REGION_rom_SIZE (0x20000)
+#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x8100000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.ldi
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.ldi
@@ -1,50 +1,27 @@
-//===========================================================================
-//
-// ROM start linker control script
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
-
-MEMORY
-{
-    rom : ORIGIN = 0xa0000000, LENGTH = 0x20000
-    ram : ORIGIN = 0x08000200, LENGTH = 0xffe00
-}
-
-SECTIONS
-{
-    SECTIONS_BEGIN
-    SECTION_vectors (rom, 0xa0000000, LMA_EQ_VMA)
-    SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
-    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
-    SECTION_data (ram, 0x08000200, FOLLOWING (.gcc_except_table))
-    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
-    SECTIONS_END
-}
+// eCos memory layout - Fri Oct 20 09:51:04 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram : ORIGIN = 0x8000200, LENGTH = 0xffe00
+    rom : ORIGIN = 0xa0000000, LENGTH = 0x20000
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_vectors (rom, 0xa0000000, LMA_EQ_VMA)
+    SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
+    SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA)
+    SECTION_data (ram, 0x8000200, FOLLOWING (.gcc_except_table))
+    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.mlt
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_rom.mlt
@@ -1,12 +1,13 @@
-version 0
-region ram 8000200 ffe00 0 !
-region rom a0000000 20000 1 !
-section data 0 1 1 1 1 1 0 0 8000200 bss !
-section bss 0 10 0 1 0 0 0 0 !
-section vectors 0 1 0 1 1 1 1 1 a0000000 a0000000 text text !
-section text 0 4 0 1 0 1 0 1 fini fini !
-section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
-section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
-section rodata 0 8 0 1 0 1 0 1 fixup fixup !
-section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
-section gcc_except_table 0 1 0 1 0 0 0 1 data !
+version 0
+region ram 8000200 ffe00 0 !
+region rom a0000000 20000 1 !
+section data 0 1 1 1 1 1 0 0 8000200 bss !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
+section vectors 0 1 0 1 1 1 1 1 a0000000 a0000000 text text !
+section text 0 4 0 1 0 1 0 1 fini fini !
+section fini 0 4 0 1 0 1 0 1 rodata1 rodata1 !
+section rodata1 0 8 0 1 0 1 0 1 rodata rodata !
+section rodata 0 8 0 1 0 1 0 1 fixup fixup !
+section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
+section gcc_except_table 0 1 0 1 0 0 0 1 data !
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.h
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Wed Apr 12 15:28:35 2000
+// eCos memory layout - Fri Oct 20 09:51:30 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x8000200)
 #define CYGMEM_REGION_ram_SIZE (0xffe00)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
 #define CYGMEM_REGION_rom (0xa0000000)
 #define CYGMEM_REGION_rom_SIZE (0x20000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x8100000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.ldi
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Wed Apr 12 15:28:35 2000
+// eCos memory layout - Fri Oct 20 09:51:30 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0x8000200, LENGTH = 0xffe00
@@ -19,6 +21,7 @@ SECTIONS
     SECTION_fixup (ram, ALIGN (0x10), FOLLOWING (.rodata))
     SECTION_gcc_except_table (ram, ALIGN (0x10), FOLLOWING (.fixup))
     SECTION_data (ram, ALIGN (0x10), FOLLOWING (.gcc_except_table))
-    SECTION_bss (ram, ALIGN (0x10), FOLLOWING (.data))
+    SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.mlt
+++ b/packages/hal/sh/edk/current/include/pkgconf/mlt_sh_edk7708_romram.mlt
@@ -8,5 +8,6 @@ section rodata1 0 10 1 1 0 1 0 1 rodata 
 section rodata 0 10 1 1 0 1 0 1 fixup fixup !
 section fixup 0 10 1 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 10 1 1 0 1 0 1 data data !
-section data 0 10 1 1 0 1 0 1 bss bss !
-section bss 0 10 1 1 0 0 0 0 !
+section data 0 10 1 1 0 1 0 0 bss !
+section bss 0 10 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/sparclite/arch/current/ChangeLog
+++ b/packages/hal/sparclite/arch/current/ChangeLog
@@ -1,3 +1,8 @@
+2000-10-16  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/hal_arch.h (CYGARC_JMP_BUF_SIZE): Define hal_jmp_buf in
+	terms of this.
+
 2000-08-07  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* src/sparclite.ld: Remove extra underscore from below. It was
--- a/packages/hal/sparclite/arch/current/include/hal_arch.h
+++ b/packages/hal/sparclite/arch/current/include/hal_arch.h
@@ -241,11 +241,11 @@ CYG_MACRO_END
 //---------------------------------------------------------------------------
 // HAL setjmp
 
-#define HAL_JMP_BUF_SIZE 32 // (words)
+#define CYGARC_JMP_BUF_SIZE 32 // (words)
 
 // this too must be doubleword aligned (64 bit)
 
-typedef cyg_uint64 hal_jmp_buf[ HAL_JMP_BUF_SIZE / 2 ];
+typedef cyg_uint64 hal_jmp_buf[ CYGARC_JMP_BUF_SIZE / 2 ];
 
 externC int hal_setjmp(hal_jmp_buf env);
 externC void hal_longjmp(hal_jmp_buf env, int val);
--- a/packages/hal/sparclite/sim/current/ChangeLog
+++ b/packages/hal/sparclite/sim/current/ChangeLog
@@ -1,3 +1,12 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_sparclite_sim_ram.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_sparclite_sim_ram.h:
+	* include/pkgconf/mlt_sparclite_sim_ram.ldi:
+	Regenerated
+
 2000-02-10  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_sparclite_sim.cdl: Added.
--- a/packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.h
+++ b/packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 12:00:24 1999
+// eCos memory layout - Fri Oct 20 08:18:20 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x2000000)
 #define CYGMEM_REGION_ram_SIZE (0x80000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x2080000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.ldi
+++ b/packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.ldi
@@ -1,36 +1,12 @@
-//===========================================================================
-//
-// MLT linker script export - Wed Jan 13 10:41:43 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 08:18:20 2000
+
+// This is a generated file - do not edit
+
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x02000000, LENGTH = 0x80000
+    ram : ORIGIN = 0x2000000, LENGTH = 0x80000
 }
 
 SECTIONS
@@ -45,5 +21,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x1), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.mlt
+++ b/packages/hal/sparclite/sim/current/include/pkgconf/mlt_sparclite_sim_ram.mlt
@@ -8,4 +8,5 @@ section rodata1 0 1 0 1 0 1 0 1 fixup fi
 section fixup 0 1 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 1 0 1 0 1 0 1 data data !
 section data 0 1 0 1 0 1 0 1 bss bss !
-section bss 0 8 0 1 0 0 0 0 !
+section bss 0 8 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/sparclite/sleb/current/ChangeLog
+++ b/packages/hal/sparclite/sleb/current/ChangeLog
@@ -1,3 +1,20 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* tests/slebtime.cxx: Ensure default priority constructors
+	are called.
+
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_sparclite_sleb_ram.mlt:
+	* include/pkgconf/mlt_sparclite_sleb_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_sparclite_sleb_ram.h:
+	* include/pkgconf/mlt_sparclite_sleb_rom.h:
+	* include/pkgconf/mlt_sparclite_sleb_ram.ldi:
+	* include/pkgconf/mlt_sparclite_sleb_rom.ldi:
+	Regenerated
+
 2000-02-16  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/hal_sparclite_sleb.cdl: removed fix me
--- a/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.h
+++ b/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.h
@@ -1,10 +1,17 @@
-// eCos memory layout - Wed Nov 24 11:58:30 1999
+// eCos memory layout - Fri Oct 20 09:29:47 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0x4010000)
 #define CYGMEM_REGION_ram_SIZE (0x3f0000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x4400000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.ldi
+++ b/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.ldi
@@ -1,47 +1,12 @@
-//===========================================================================
-//
-// MLT linker script export - Wed Jan 13 10:41:43 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 09:29:47 2000
 
+// This is a generated file - do not edit
 
-// The ram_vectors section is to allow some free space to copy vectors into
-// from the ROM.  This is required to be variable size to accomodate SVT or
-// MVT; 80 bytes vs 4kB.  Copying is not necessary with MVT, but it is
-// optional because it may offer performance gains.  Copying is required
-// for SVT because the (aligned) start of ROM contains initialization
-// instructions.  RAM copy is used rather than leave a big gap in the ROM
-// to get an aligned address for the trampoline code.  For RAM startup,
-// ram_vectors will usually be of size zero, unless MVT and copying are
-// enabled for memory estimation reasons.
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    ram : ORIGIN = 0x04010000, LENGTH = 0x3f0000
+    ram : ORIGIN = 0x4010000, LENGTH = 0x3f0000
 }
 
 SECTIONS
@@ -57,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.mlt
+++ b/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_ram.mlt
@@ -1,6 +1,6 @@
 version 0
 region ram 4010000 3f0000 0 !
-section ram_vectors 0 1 0 1 1 1 1 1 4010000 4010000 rom_vectors rom_vectors !
+section ram_vectors 0 1 0 1 1 1 1 1 4010000 4010000 rom_vectors rom_vectors !The ram_vectors section is to allow some free space to copy vectors into from the ROM.  This is required to be variable size to accomodate SVT or MVT; 80 bytes vs 4kB.  Copying is not necessary with MVT, but it is optional because it may offer performance gains.  Copying is required for SVT because the (aligned) start of ROM contains initialization instructions.  RAM copy is used rather than leave a big gap in the ROM to get an aligned address for the trampoline code.  For RAM startup, ram_vectors will usually be of size zero, unless MVT and copying are enabled for memory estimation reasons.
 section rom_vectors 0 8 0 1 0 1 0 1 text text !
 section text 0 4 0 1 0 1 0 1 fini fini !
 section fini 0 4 0 1 0 1 0 1 rodata rodata !
@@ -9,4 +9,5 @@ section rodata1 0 8 0 1 0 1 0 1 fixup fi
 section fixup 0 8 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 8 0 1 0 1 0 1 data data !
 section data 0 8 0 1 0 1 0 1 bss bss !
-section bss 0 8 0 1 0 0 0 0 !
+section bss 0 8 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.h
+++ b/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Wed Nov 24 11:59:23 1999
+// eCos memory layout - Fri Oct 20 09:30:14 2000
 
-// This is a generated file - changes will be lost if ConfigTool(MLT) is run
+// This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_rom (0)
 #define CYGMEM_REGION_rom_SIZE (0x20000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
 #define CYGMEM_REGION_ram (0x4000000)
 #define CYGMEM_REGION_ram_SIZE (0x400000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x4400000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.ldi
+++ b/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.ldi
@@ -1,62 +1,28 @@
-//===========================================================================
-//
-// MLT linker script export - Wed Jan 13 10:41:43 1999
-//
-//===========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//===========================================================================
+// eCos memory layout - Fri Oct 20 09:30:14 2000
 
+// This is a generated file - do not edit
 
-// The ram_vectors section is to allow some free space to copy vectors into
-// from the ROM.  This is required to be variable size to accomodate SVT or
-// MVT; 80 bytes vs 4kB.  Copying is not necessary with MVT, but it is
-// optional because it may offer performance gains.  Copying is required
-// for SVT because the (aligned) start of ROM contains initialization
-// instructions.  RAM copy is used rather than leave a big gap in the ROM
-// to get an aligned address for the trampoline code.  For RAM startup,
-// ram_vectors will usually be of size zero, unless MVT and copying are
-// enabled for memory estimation reasons.
+#include <cyg/infra/cyg_type.inc>
 
 MEMORY
 {
-    rom : ORIGIN = 0x00000000, LENGTH = 0x020000
-    ram : ORIGIN = 0x04000000, LENGTH = 0x400000
+    rom : ORIGIN = 0, LENGTH = 0x20000
+    ram : ORIGIN = 0x4000000, LENGTH = 0x400000
 }
 
 SECTIONS
 {
     SECTIONS_BEGIN
-    SECTION_rom_vectors (rom, 0x0, LMA_EQ_VMA)
+    SECTION_rom_vectors (rom, 0, LMA_EQ_VMA)
     SECTION_text (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_fixup (rom, ALIGN (0x8), LMA_EQ_VMA)
     SECTION_gcc_except_table (rom, ALIGN (0x8), LMA_EQ_VMA)
-    SECTION_ram_vectors(ram, 0x04000000, LMA_EQ_VMA)
+    SECTION_ram_vectors (ram, 0x4000000, LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x8), FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.mlt
+++ b/packages/hal/sparclite/sleb/current/include/pkgconf/mlt_sparclite_sleb_rom.mlt
@@ -8,6 +8,7 @@ section rodata 0 8 0 1 0 1 0 1 rodata1 r
 section rodata1 0 8 0 1 0 1 0 1 fixup fixup !
 section fixup 0 8 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 8 0 1 0 0 0 1 data !
-section ram_vectors 0 1 0 1 1 1 1 0 4000000 4000000 data !
+section ram_vectors 0 1 0 1 1 1 1 0 4000000 4000000 data !The ram_vectors section is to allow some free space to copy vectors into from the ROM.  This is required to be variable size to accomodate SVT or MVT; 80 bytes vs 4kB.  Copying is not necessary with MVT, but it is optional because it may offer performance gains.  Copying is required for SVT because the (aligned) start of ROM contains initialization instructions.  RAM copy is used rather than leave a big gap in the ROM to get an aligned address for the trampoline code.  For RAM startup, ram_vectors will usually be of size zero, unless MVT and copying are enabled for memory estimation reasons.
 section data 0 8 1 1 0 1 0 0 bss !
-section bss 0 8 0 1 0 0 0 0 !
+section bss 0 8 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/sparclite/sleb/current/tests/slebtime.cxx
+++ b/packages/hal/sparclite/sleb/current/tests/slebtime.cxx
@@ -147,9 +147,17 @@ static Cyg_Thread thread2     CYG_INIT_P
 
 // -------------------------------------------------------------------------
 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+externC void
+cyg_hal_invoke_constructors();
+#endif
+
 externC void
 cyg_user_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     CYG_TEST_INIT();
     CYG_TEST_INFO( "cyg_user_start()" );
     thread1.resume();
--- a/packages/hal/v85x/arch/current/ChangeLog
+++ b/packages/hal/v85x/arch/current/ChangeLog
@@ -1,3 +1,12 @@
+2000-10-20  Jesper Skov  <jskov@redhat.com>
+
+	* src/hal_misc.c: Update __mem_fault_handler declaration.
+
+2000-10-16  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/hal_arch.h (CYGARC_JMP_BUF_SIZE): Define hal_jmp_buf in
+	terms of this.
+
 2000-10-09  Gary Thomas  <gthomas@redhat.com>
 
 	* src/vectors.S (start): Need to handle ^C for all applications.
--- a/packages/hal/v85x/arch/current/include/hal_arch.h
+++ b/packages/hal/v85x/arch/current/include/hal_arch.h
@@ -196,7 +196,9 @@ typedef struct {
     cyg_uint32 lp;
 } hal_jmp_buf_t;
 
-typedef cyg_uint32 hal_jmp_buf[sizeof(hal_jmp_buf_t) / sizeof(cyg_uint32)];
+#define CYGARC_JMP_BUF_SIZE      (sizeof(hal_jmp_buf_t) / sizeof(cyg_uint32))
+
+typedef cyg_uint32 hal_jmp_buf[ CYGARC_JMP_BUF_SIZE ];
 
 externC int hal_setjmp(hal_jmp_buf env);
 externC void hal_longjmp(hal_jmp_buf env, int val);
--- a/packages/hal/v85x/arch/current/src/hal_misc.c
+++ b/packages/hal/v85x/arch/current/src/hal_misc.c
@@ -65,7 +65,7 @@
 externC void __handle_exception (void);
 
 externC HAL_SavedRegisters *_hal_registers;
-extern void *__mem_fault_handler;
+externC void* volatile __mem_fault_handler;
 
 void
 exception_handler(HAL_SavedRegisters *regs)
--- a/packages/hal/v85x/ceb_v850/current/ChangeLog
+++ b/packages/hal/v85x/ceb_v850/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* include/pkgconf/mlt_v85x_v850_ceb_ram.mlt:
+	* include/pkgconf/mlt_v85x_v850_ceb_rom.mlt:
+	Add heap1 section
+
+	* include/pkgconf/mlt_v85x_v850_ceb_ram.h:
+	* include/pkgconf/mlt_v85x_v850_ceb_rom.h:
+	* include/pkgconf/mlt_v85x_v850_ceb_ram.ldi:
+	* include/pkgconf/mlt_v85x_v850_ceb_rom.ldi:
+	Regenerated
+
 2000-06-30  Jesper Skov  <jskov@redhat.com>
 
 	* src/hal_diag.c: calling i/f macro changes.
--- a/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.h
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.h
@@ -1,13 +1,22 @@
-// eCos memory layout - Fri Mar 17 13:07:05 2000
+// eCos memory layout - Fri Oct 20 08:31:56 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_ram (0xfc0000)
 #define CYGMEM_REGION_ram_SIZE (0x40000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
-extern char CYG_LABEL_NAME (_reserved) [];
-#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (_reserved))
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__reserved) [];
+#endif
+#define CYGMEM_SECTION_reserved (CYG_LABEL_NAME (__reserved))
 #define CYGMEM_SECTION_reserved_SIZE (0x4000)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x1000000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.ldi
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Fri Mar 17 13:07:05 2000
+// eCos memory layout - Fri Oct 20 08:31:56 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     ram : ORIGIN = 0xfc0000, LENGTH = 0x40000
@@ -10,7 +12,7 @@ MEMORY
 SECTIONS
 {
     SECTIONS_BEGIN
-    __reserved = 0xfc0000; . = __reserved + 0x4000;
+    CYG_LABEL_DEFN(__reserved) = 0xfc0000; . = CYG_LABEL_DEFN(__reserved) + 0x4000;
     SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
@@ -19,5 +21,6 @@ SECTIONS
     SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.mlt
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.mlt
@@ -8,4 +8,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 1 0 1 data data !
 section data 0 4 0 1 0 1 0 1 bss bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.h
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.h
@@ -1,13 +1,20 @@
-// eCos memory layout - Tue Mar 21 04:31:59 2000
+// eCos memory layout - Fri Oct 20 08:32:23 2000
 
 // This is a generated file - do not edit
 
+#ifndef __ASSEMBLER__
 #include <cyg/infra/cyg_type.h>
 #include <stddef.h>
 
+#endif
 #define CYGMEM_REGION_rom (0x100000)
 #define CYGMEM_REGION_rom_SIZE (0x80000)
 #define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
 #define CYGMEM_REGION_ram (0xfc0000)
 #define CYGMEM_REGION_ram_SIZE (0x40000)
 #define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (0x1000000 - (size_t) CYG_LABEL_NAME (__heap1))
--- a/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.ldi
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.ldi
@@ -1,7 +1,9 @@
-// eCos memory layout - Tue Mar 21 04:31:59 2000
+// eCos memory layout - Fri Oct 20 08:32:23 2000
 
 // This is a generated file - do not edit
 
+#include <cyg/infra/cyg_type.inc>
+
 MEMORY
 {
     rom : ORIGIN = 0x100000, LENGTH = 0x80000
@@ -20,5 +22,6 @@ SECTIONS
     SECTION_gcc_except_table (rom, ALIGN (0x4), LMA_EQ_VMA)
     SECTION_data (ram, 0xfc0000, FOLLOWING (.gcc_except_table))
     SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
     SECTIONS_END
 }
--- a/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.mlt
+++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_rom.mlt
@@ -9,4 +9,5 @@ section rodata1 0 4 0 1 0 1 0 1 fixup fi
 section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
 section gcc_except_table 0 4 0 1 0 0 0 1 data !
 section data 0 4 1 1 1 1 0 0 fc0000 bss !
-section bss 0 4 0 1 0 0 0 0 !
+section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
+section heap1 0 8 0 0 0 0 0 0 !
--- a/packages/io/eth/current/ChangeLog
+++ b/packages/io/eth/current/ChangeLog
@@ -1,3 +1,10 @@
+2000-10-17  Hugo Tyson  <hmt@redhat.com>
+2000-10-10  Andrew Lunn <Andrew.Lunn@ascom.ch>
+	* cdl/eth_drivers.cdl: Add configury to disable the warnings about
+	out of mbufs for receives.
+
+	* src/net/eth_drv.c: The changes required for the above.
+
 2000-09-28  Hugo Tyson  <hmt@redhat.com>
 
 	* src/net/eth_drv.c (eth_drv_run_deliveries): Remove race
--- a/packages/io/eth/current/cdl/eth_drivers.cdl
+++ b/packages/io/eth/current/cdl/eth_drivers.cdl
@@ -54,6 +54,20 @@ cdl_package CYGPKG_IO_ETH_DRIVERS {
         default_value 1
         compile       net/eth_drv.c
 
+    	cdl_option CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS {
+	    display	"Warn when there are no more mbufs"
+	    flavor	bool
+	    default_value 1
+	    description "
+	        Warnings about running out of mbufs are printed to the
+	        diagnostic output channel via diag_printf() if this option
+	        is enabled.  Mbufs are the network stack's basic dynamic
+	        memory objects that hold all packets in transit; running
+	        out is bad for performance but not fatal, not a crash.
+                You might want to turn off the warnings to preserve realtime
+                properties of the system even in extremis."
+	}
+
 	cdl_component CYGPKG_IO_ETH_DRIVERS_SIMULATED_FAILURES {
 	    display		"Simulate network failures for testing"
 	    flavor		bool
--- a/packages/io/eth/current/src/net/eth_drv.c
+++ b/packages/io/eth/current/src/net/eth_drv.c
@@ -605,7 +605,9 @@ eth_drv_recv(struct eth_drv_sc *sc, int 
     /* Pull packet off interface. */
     MGETHDR(m, M_DONTWAIT, MT_DATA);
     if (m == 0) {
+#ifdef CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS
         diag_printf("warning: eth_recv out of MBUFs\n");
+#endif
     }
 
     // Set up buffers
@@ -636,7 +638,13 @@ eth_drv_recv(struct eth_drv_sc *sc, int 
             MGET(m, M_DONTWAIT, MT_DATA);
             if (m == 0) {
                 m_freem(top);
-                panic("out of MBUFs [2]");
+#ifdef CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS
+                diag_printf("out of MBUFs [2]");
+#endif
+                sg_list[sg_len].buf = (CYG_ADDRESS)0;
+                sg_list[sg_len].len = 0;
+                sg_len = 1;
+                break;
             }
             mlen = MLEN;
         }
@@ -644,7 +652,9 @@ eth_drv_recv(struct eth_drv_sc *sc, int 
             MCLGET(m, M_DONTWAIT);
             if ((m->m_flags & M_EXT) == 0) {
                 m_freem(top);
+#ifdef CYGPKG_IO_ETH_DRIVERS_WARN_NO_MBUFS
                 diag_printf("warning: eth_recv out of MBUFs\n");
+#endif
                 sg_list[sg_len].buf = (CYG_ADDRESS)0;
                 sg_list[sg_len].len = min(total_len, MCLBYTES);
                 sg_len++;
--- a/packages/io/fileio/current/ChangeLog
+++ b/packages/io/fileio/current/ChangeLog
@@ -1,3 +1,14 @@
+2000-10-13  Nick Garnett  <nickg@cygnus.co.uk>
+
+	* src/io.cxx (readwrite): Merged both read() and write() functions
+	into this single common routine.  
+
+	* include/fileio.h: Introduced a common typedef for both read and
+	write operations.
+
+	* doc/fileio.txt: Added some text about getcwd() and tidied up
+	some other parts.
+
 2000-10-05  Nick Garnett  <nickg@cygnus.co.uk>
 
 	* src/file.cxx: Added support for getcwd(). There are three
--- a/packages/io/fileio/current/doc/fileio.txt
+++ b/packages/io/fileio/current/doc/fileio.txt
@@ -2,7 +2,7 @@ File System Support Infrastructure
 ==================================
 
 Nick Garnett
-v0.1
+v0.2
 
 
 This document describes the filesystem infrastructure provided in
@@ -30,12 +30,6 @@ document. Object accessed through these 
 network protocol sockets, device drivers, fifos, message queues or any
 other object that can present a file-like interface.
 
-    [Note: Additional notes and comments appear in square brackets,
-    just like this. They do not form part of the text of this
-    document.]
-
-    [Note: Words and phrases that should be emphasized in some way are
-    surrounded by underscores, like _this_.]
     
 File System Table
 -----------------
@@ -45,10 +39,6 @@ filesystem implementation that is part o
 resident filesystem should export an entry to this table using the
 FSTAB_ENTRY() macro.
 
-    [Note: at present we do not support dynamic addition or removal of
-    table entries. If dynamic code loading is ever implemented, this
-    may need to change.]
-
 The table entries are described by the following structure:
 
 struct cyg_fstab_entry
@@ -239,7 +229,7 @@ responsibility of the file operation fun
 to date.
 
 The _f_data_ field contains private data placed here by the underlying
-filesystem. Normally this will be a pointer or handle on the
+filesystem. Normally this will be a pointer to or handle on the
 filesystem object that implements this file.
 
 The _f_xops_ field contains a pointer to any extra type specific
@@ -342,6 +332,21 @@ Most of these considerations are invisib
 since they will access directories via the POSIX
 opendir()/readdir()/closedir() functions.
 
+Support for the _getcwd()_ function is provided by three mechanisms.
+The first is to use the _FS_INFO_GETCWD_ getinfo key on the filesystem
+to use any internal support that it has for this. If that fails it
+falls back on one of the two other mechanisms. If
+_CYGPKG_IO_FILEIO_TRACK_CWD_ is set then the current directory is
+tracked textually in chdir() and the result of that is reported in
+getcwd(). Otherwise an attempt is made to traverse the directory tree
+to its root using ".." entries.
+
+This last option is complicated and expensive, and relies on the
+filesystem supporting "." and ".."  entries. This is not always the
+case, particularly if the filesystem has been ported from a
+non-UNIX-compatible source. Tracking the pathname textually will
+usually work, but might not produce optimum results when symbolic
+links are being used.
 
 
 Synchronization
@@ -449,15 +454,6 @@ and the entry _name_ field. When a match
 is invalidated by setting its _valid_ field false and the _name_ field
 to NULL.
 
-    [Note: The umount() function could also match on the _devname_
-    field when searching. This would be compatible with various
-    flavors of Unix.]
-
-    [Note: These calls fall outside the scope of any standard. The
-    mount() function given above is most similar to the Linux
-    function, with the omission of the rwflag and data arguments. It
-    remains to be seen whether these need to be introduced.]
-
 Sockets
 -------
 
@@ -483,29 +479,19 @@ struct cyg_nstab_entry
 		       int protocol, cyg_file *file );
 };
 
-This table is analogous to the filesystem and mount tables combined.
+This table is analogous to a combination of the filesystem and mount
+tables.
 
 The _valid_ field is set true if the stack's _init_ function returned
 successfully and the _syncmode_ field contains the CYG_SYNCMODE_SOCK_*
 bits described above.
 
-    [Note: Currently there are no plans to support the dynamic loading
-    of network protocol stacks.]
-
 The _name_ field contains the name of the protocol stack.
 
-    [Note: This field is currently unused, but may be used in the
-    future to allow direct access to a specific stack via an as-yet
-    unspecified API.]
-
 The _devname_ field names the device that the stack is using. This may
 reference a device under "/dev", or may be a name that is only
 meaningful to the stack itself.
 
-    [Note: Many network protocol stacks may have several concurrent
-    devices, and have their own mechanisms for attaching to them, so
-    it is not clear that this field is actually very useful.]
-
 The _init_ function is called during system initialization to start
 the protocol stack running. If it returns non-zero the _valid_ field
 is set false and the stack will be ignored subsequently.
@@ -557,7 +543,7 @@ The main part of the mechanism is the se
 processes its arguments and calls the _fo_select_ function on all file
 objects referenced by the file descriptor sets passed to it. If the
 same descriptor appears in more than one descriptor set, the
-_fo_select_ function will be called for each appearance.
+_fo_select_ function will be called separately for each appearance.
 
 The _which_ argument of the _fo_select_ function will either be
 CYG_FREAD to test for read conditions, CYG_FWRITE to test for write
@@ -583,7 +569,16 @@ cause a select condition to become true 
 activities of other threads. Whenever a selectable condition is
 satisfied, the object should call cyg_selwakeup() with a pointer to
 the appropriate cyg_selinfo structure. If the thread is still waiting,
-this will cause it to wake up and return from the select() function.
+this will cause it to wake up and repeat its poll of the file
+descriptors. This time around, the object that caused the wakeup
+should indicate that the select condition is satisfied, and the
+_select()_ API call will return.
+
+Note that _select()_ does not exhibit real time behaviour: the
+iterative poll of the descriptors, and the wakeup mechanism mitigate
+against this. If real time response to device or socket I/O is
+required then separate threads should be devoted to each device of
+interest.
 
 
 Devices
--- a/packages/io/fileio/current/include/fileio.h
+++ b/packages/io/fileio/current/include/fileio.h
@@ -253,8 +253,9 @@ struct CYG_UIO_TAG
 //=============================================================================
 // Description of open file
 
-typedef int cyg_fileop_read    (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio);
-typedef int cyg_fileop_write   (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio);
+typedef int cyg_fileop_readwrite (struct CYG_FILE_TAG *fp, struct CYG_UIO_TAG *uio);
+typedef cyg_fileop_readwrite cyg_fileop_read;
+typedef cyg_fileop_readwrite cyg_fileop_write;
 typedef int cyg_fileop_lseek   (struct CYG_FILE_TAG *fp, off_t *pos, int whence );
 typedef int cyg_fileop_ioctl   (struct CYG_FILE_TAG *fp, CYG_ADDRWORD com,
                                 CYG_ADDRWORD data);
--- a/packages/io/fileio/current/src/io.cxx
+++ b/packages/io/fileio/current/src/io.cxx
@@ -66,9 +66,12 @@
 #define UNLOCK_FILE( fp ) cyg_file_unlock( fp, fp->f_syncmode )
 
 //==========================================================================
-// Read from a file
+// Read from or write to a file
+// This is a common routine for doing both read and write
+// operations. The direction argument controls slight the differences
+// between them.
 
-__externC ssize_t read( int fd, void *buf, size_t len )
+static ssize_t readwrite( int fd, void *buf, size_t len, int direction )
 {
     FILEIO_ENTRY();
 
@@ -86,7 +89,7 @@
     if( fp == NULL )
         FILEIO_RETURN(EBADF);
 
-    if( (fp->f_flag & CYG_FREAD) == 0 )
+    if( (fp->f_flag & direction) == 0 )
     {
         cyg_fp_free( fp );
         FILEIO_RETURN(EBADF);        
@@ -94,21 +97,27 @@
 
     cyg_uio uio;
     cyg_iovec iov;
-
+    cyg_fileop_readwrite *op;
+    
     iov.iov_base        = buf;
     iov.iov_len         = len;
     uio.uio_iov         = &iov;
     uio.uio_iovcnt      = 1;
     uio.uio_resid       = len;
-    uio.uio_rw          = UIO_READ;
     uio.uio_segflg      = UIO_USERSPACE;
 
     cnt = len;
 
+    if( direction == O_RDONLY )
+        uio.uio_rw = UIO_READ, op = fp->f_ops->fo_read;
+    else
+        uio.uio_rw = UIO_WRITE, op = fp->f_ops->fo_write;
+
+        
     LOCK_FILE( fp );
     
-    ret = fp->f_ops->fo_read( fp, &uio );
-
+    ret = op( fp, &uio );
+    
     UNLOCK_FILE( fp );
     
     cnt -= uio.uio_resid;
@@ -122,58 +131,19 @@
 }
 
 //==========================================================================
+// Read from file
+
+__externC ssize_t read( int fd, void *buf, size_t len )
+{
+    return readwrite( fd, buf, len, O_RDONLY );
+}
+
+//==========================================================================
 // Write to a file
 
 __externC ssize_t write( int fd, const void *buf, size_t len )
 {
-    FILEIO_ENTRY();
-
-    CYG_CANCELLATION_POINT;
-    
-    ssize_t cnt;
-    int ret;
-    cyg_file *fp;
-    
-    if( len > SSIZE_MAX )
-        FILEIO_RETURN(EINVAL);
-    
-    fp = cyg_fp_get( fd );
-
-    if( fp == NULL )
-        FILEIO_RETURN(EBADF);
-
-    if(  (fp->f_flag & CYG_FWRITE) == 0)
-    {
-        cyg_fp_free( fp );
-        FILEIO_RETURN(EBADF);
-    }
-    cyg_uio uio;
-    cyg_iovec iov;
-
-    iov.iov_base        = (void *)buf;
-    iov.iov_len         = len;
-    uio.uio_iov         = &iov;
-    uio.uio_iovcnt      = 1;
-    uio.uio_resid       = len;
-    uio.uio_rw          = UIO_WRITE;
-    uio.uio_segflg      = UIO_USERSPACE;
-
-    cnt = len;
-    
-    LOCK_FILE( fp );
-    
-    ret = fp->f_ops->fo_write( fp, &uio );
-
-    UNLOCK_FILE( fp );
-    
-    cnt -= uio.uio_resid;
-
-    cyg_fp_free( fp );
-
-    CYG_CANCELLATION_POINT;
-    
-    CYG_REPORT_RETVAL(cnt);
-    return cnt;
+    return readwrite( fd, (void *)buf, len, O_WRONLY );
 }
 
 //==========================================================================
--- a/packages/io/serial/current/ChangeLog
+++ b/packages/io/serial/current/ChangeLog
@@ -1,3 +1,15 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* src/common/serial.c: Include cyg/infra/cyg_ass.h for assertion
+	support since we have assertions here!
+
+2000-10-12  Jesper Skov  <jskov@redhat.com>
+
+	* tests/ser_test_protocol.inl: Moved most testing parameters into
+	device driver CDL.
+
+	* cdl/io_serial.cdl: Added comment.
+
 2000-10-06  Jesper Skov  <jskov@redhat.com>
 
 	* src/common/serial.c (serial_rcv_char): Register overruns.
--- a/packages/io/serial/current/cdl/io_serial.cdl
+++ b/packages/io/serial/current/cdl/io_serial.cdl
@@ -304,7 +304,9 @@ cdl_package CYGPKG_IO_SERIAL {
 	    serial devices."
     }
 
-
+    # These could be regular define_proc outputs, but keeping them as
+    # CDL interfaces allow us to possibly skip building/running some
+    # tests.
     cdl_component CYGPKG_IO_SERIAL_TEST_SPECS {
         display "Serial testing specification"
         flavor     bool
--- a/packages/io/serial/current/src/common/serial.c
+++ b/packages/io/serial/current/src/common/serial.c
@@ -47,7 +47,8 @@
 #include <cyg/io/io.h>
 #include <cyg/io/devtab.h>
 #include <cyg/io/serial.h>
-#include <cyg/infra/diag.h>
+#include <cyg/infra/cyg_ass.h>      // assertion support
+#include <cyg/infra/diag.h>         // diagnostic output
 
 static Cyg_ErrNo serial_write(cyg_io_handle_t handle, const void *buf, cyg_uint32 *len);
 static Cyg_ErrNo serial_read(cyg_io_handle_t handle, void *buf, cyg_uint32 *len);
--- a/packages/io/serial/current/tests/ser_test_protocol.inl
+++ b/packages/io/serial/current/tests/ser_test_protocol.inl
@@ -58,10 +58,6 @@
 
 #include <cyg/hal/hal_intr.h>           // for reclaiming interrup vector
 
-#ifdef CYG_HAL_SPARCLITE_SLEB
-#include <pkgconf/hal_sparclite_sleb.h> // CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT
-#endif
-
 //----------------------------------------------------------------------------
 // Definition of which device to run tests on on various platforms.
 
@@ -76,15 +72,10 @@
 # define TEST_TTY_DEV  CYGPRI_SER_TEST_TTY_DEV
 #endif
 
-#if defined(CYGPKG_HAL_POWERPC_COGENT)                          \
-    && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT)                 \
-    && defined(CYGPKG_IO_SERIAL_POWERPC_COGENT_SERIAL_B)
-# define TEST_CRASH_ID "ppccog"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_POWERPC_COGENT_SERIAL_B_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY2)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY2_DEV
-# endif
-#endif
+// Note that CYGPRI_SER_TEST_OVERRIDE_INT_1 and CYGPRI_SER_TEST_OVERRIDE_INT_2
+// may also be exported. These identify interrupts that should be reclaimed
+// from the ROM monitor before the test is started.
+
 #if defined(CYGPKG_HAL_POWERPC_MBX)                          \
     && defined(CYGPKG_HAL_QUICC)                 \
     && defined(CYGPKG_IO_SERIAL_POWERPC_QUICC_SMC)                 \
@@ -95,69 +86,6 @@
 #  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
 # endif
 #endif
-#if defined(CYGPKG_HAL_ARM_AEB)                                 \
-    && defined(CYGPKG_IO_SERIAL_ARM_AEB)                        \
-    && defined(CYGPKG_IO_SERIAL_ARM_AEB_SERIAL1)
-# define TEST_CRASH_ID "armaeb"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_AEB_SERIAL1_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
-# endif
-#endif
-#if defined(CYGPKG_HAL_ARM_EDB7XXX)                         \
-    && defined(CYGPKG_IO_SERIAL_ARM_EDB7XXX)                \
-    && defined(CYGPKG_IO_SERIAL_ARM_EDB7XXX_SERIAL1)
-# define TEST_CRASH_ID "armedb7xxx"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_EDB7XXX_SERIAL1_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
-# endif
-#endif
-#if defined(CYGPKG_HAL_ARM_CMA230)                         \
-    && defined(CYGPKG_IO_SERIAL_ARM_CMA230)                \
-    && defined(CYGPKG_IO_SERIAL_ARM_CMA230_SERIAL_A)
-# define TEST_CRASH_ID "armcma"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_CMA230_SERIAL_A_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
-# endif
-#endif
-#if defined(CYGPKG_HAL_ARM_EBSA285) \
-    && defined(CYGPKG_IO_SERIAL_ARM_EBSA285) \
-    && defined(CYGPKG_IO_SERIAL_ARM_EBSA285_SERIAL)
-# define TEST_CRASH_ID "arm285"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_EBSA285_SERIAL_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
-# endif
-#endif
-#if defined(CYGPKG_HAL_ARM_SA11X0_ASSABET)                    \
-    && defined(CYGPKG_IO_SERIAL_ARM_SA11X0)                \
-    && defined(CYGPKG_IO_SERIAL_ARM_SA11X0_SERIAL1)
-# define TEST_CRASH_ID "assabet"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_ARM_SA11X0_SERIAL1_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY1)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY1_DEV
-# endif
-#endif
-#if defined(CYGPKG_HAL_MIPS_TX39_JMR3904)               \
-    && defined(CYGPKG_IO_SERIAL_TX39_JMR3904)           \
-    && defined(CYGPKG_IO_SERIAL_TX39_JMR3904_SERIAL0)
-# define TEST_CRASH_ID "tx3jmr"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_TX39_JMR3904_SERIAL0_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
-# endif
-#endif
-#if defined(CYGPKG_HAL_MIPS_VR4300_VRC4373)               \
-    && defined(CYGPKG_IO_SERIAL_MIPS_VRC4373)           \
-    && defined(CYGPKG_IO_SERIAL_MIPS_VRC4373_SERIAL0)
-# define TEST_CRASH_ID "vrc4373"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_MIPS_VRC4373_SERIAL0_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
-# endif
-#endif
 #if defined(CYGPKG_HAL_MN10300_AM31_STDEVAL1)           \
     && defined(CYGPKG_IO_SERIAL_MN10300)                \
     && defined(CYGPKG_IO_SERIAL_MN10300_SERIAL2)
@@ -176,52 +104,6 @@
 #  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
 # endif
 #endif
-#if defined(CYGPKG_HAL_SPARCLITE_SLEB)                    \
-    && defined(CYGPKG_IO_SERIAL_SPARCLITE_SLEB)           \
-    && defined(CYGPKG_IO_SERIAL_SPARCLITE_SLEB_CON1)
-# undef NA_MSG
-# define NA_MSG "CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT is unset"
-# if !defined(CYG_HAL_STARTUP_RAM) \
-     || defined(CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT)
-#  define TEST_CRASH_ID "sparcl"
-#  define TEST_SER_DEV CYGDAT_IO_SERIAL_SPARCLITE_SLEB_CON1_NAME
-// The interrupt vectors are normally in CygMon's control. Steal them back,
-// but beware that this results in GDB acknowledge characters showing up in
-// the serial driver if CygMon is used for hal_diag output.
-// Set CYG_KERNEL_DIAG_GDB_SERIAL_DIRECT in hal_sparclite_sleb as a workaround.
-#  define SER_OVERRIDE_INT_1 CYGNUM_HAL_INTERRUPT_9
-#  define SER_OVERRIDE_INT_2 CYGNUM_HAL_INTERRUPT_10
-#  if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
-#   define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
-#  endif
-# endif
-#endif
-#if defined(CYGPKG_HAL_I386_PC)                         \
-    && defined(CYGPKG_IO_SERIAL_I386_PC)                \
-    && defined(CYGPKG_IO_SERIAL_I386_PC_SERIAL0)
-# define TEST_CRASH_ID "i386pc"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_I386_PC_SERIAL0_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
-# endif
-#endif
-#if defined(CYGPKG_HAL_V85X_V850)                       \
-    && defined(CYGPKG_IO_SERIAL_V85X_V850)              \
-    && defined(CYGPKG_IO_SERIAL_V85X_V850_SERIAL0)
-# define TEST_CRASH_ID "v85x/v850"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_V85X_V850_SERIAL0_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
-# endif
-#endif
-#if defined(CYGPKG_IO_SERIAL_LOOP)                   \
-    && defined(CYGPKG_IO_SERIAL_LOOP_SERIAL0)
-# define TEST_CRASH_ID "loop"
-# define TEST_SER_DEV CYGDAT_IO_SERIAL_LOOP_SERIAL0_NAME
-# if defined(CYGPKG_IO_SERIAL_TTY_TTY0)
-#  define TEST_TTY_DEV CYGDAT_IO_SERIAL_TTY_TTY0_DEV
-# endif
-#endif
 
 // We can't rely on haldiag for ser_filter detection - it may not define
 // a working character reading function.
@@ -368,12 +250,10 @@ typedef enum {
 // given target until change_config is behaving correctly.
 cyg_ser_cfg_t test_configs[] = {
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_9600)
-#if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904)
     { CYGNUM_SERIAL_BAUD_9600, CYGNUM_SERIAL_WORD_LENGTH_8, 
       CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE,
       CYGNUM_SERIAL_FLOW_NONE },
 #endif
-#endif
 
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_14400)
 #if !defined(CYGPKG_HAL_MN10300_AM31) &&    \
@@ -389,19 +269,13 @@ cyg_ser_cfg_t test_configs[] = {
       CYGNUM_SERIAL_FLOW_NONE },
 
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_38400)
-#if !defined(CYGPKG_HAL_SPARCLITE_SLEB) &&      \
-    !defined(CYGPKG_HAL_ARM_AEB)
     { CYGNUM_SERIAL_BAUD_38400, CYGNUM_SERIAL_WORD_LENGTH_8, 
       CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE,
       CYGNUM_SERIAL_FLOW_NONE },
 #endif
-#endif
 
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_57600)
-#if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) &&   \
-    !defined(CYGPKG_HAL_ARM_AEB) &&             \
-    !defined(CYGPKG_HAL_SPARCLITE_SLEB) &&      \
-    !defined(CYGPKG_HAL_MN10300_AM33)
+#if !defined(CYGPKG_HAL_MN10300_AM33)
     { CYGNUM_SERIAL_BAUD_57600, CYGNUM_SERIAL_WORD_LENGTH_8, 
       CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE,
       CYGNUM_SERIAL_FLOW_NONE },
@@ -409,12 +283,7 @@ cyg_ser_cfg_t test_configs[] = {
 #endif
 
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_115200)
-#if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) &&   \
-    !defined(CYGPKG_HAL_ARM_AEB) &&             \
-    !defined(CYGPKG_HAL_MN10300_STDEVAL1) &&    \
-    !defined(CYGPKG_HAL_ARM_CMA230) &&          \
-    !defined(CYGPKG_HAL_ARM_EDB7XXX) &&         \
-    !defined(CYGPKG_HAL_SPARCLITE_SLEB)
+#if !defined(CYGPKG_HAL_MN10300_STDEVAL1)
     { CYGNUM_SERIAL_BAUD_115200, CYGNUM_SERIAL_WORD_LENGTH_8, 
       CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_NONE,
       CYGNUM_SERIAL_FLOW_NONE },
@@ -422,35 +291,27 @@ cyg_ser_cfg_t test_configs[] = {
 #endif
 
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN)
-#if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) &&   \
-    !defined(CYGPKG_HAL_ARM_AEB)
     // One stop bit, even parity
     { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8, 
       CYGNUM_SERIAL_STOP_1, CYGNUM_SERIAL_PARITY_EVEN,
       CYGNUM_SERIAL_FLOW_NONE },
 #endif
-#endif
 
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_PARITY_EVEN)
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_STOP_2)
-#if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904) &&   \
-    !defined(CYGPKG_HAL_ARM_AEB)
     // Two stop bits, even parity
     { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8, 
       CYGNUM_SERIAL_STOP_2, CYGNUM_SERIAL_PARITY_EVEN,
       CYGNUM_SERIAL_FLOW_NONE },
 #endif
 #endif
-#endif
 
 #if (0 == CYGINT_IO_SERIAL_TEST_SKIP_STOP_2)
-#if !defined(CYGPKG_HAL_MIPS_TX39_JMR3904)
     // Two stop bits, no parity
     { CYGNUM_SERIAL_BAUD_19200, CYGNUM_SERIAL_WORD_LENGTH_8, 
       CYGNUM_SERIAL_STOP_2, CYGNUM_SERIAL_PARITY_NONE,
       CYGNUM_SERIAL_FLOW_NONE },
 #endif
-#endif
 };
 
 //----------------------------------------------------------------------------
@@ -1153,11 +1014,11 @@ test_open_ser( cyg_io_handle_t* handle )
         CYG_TEST_NA("Cannot run from simulator");
 
 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER)
-# if defined(SER_OVERRIDE_INT_1)
-    HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_1, NULL);
+# if defined(CYGPRI_SER_TEST_OVERRIDE_INT_1)
+    HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_1, NULL);
 # endif
-# if defined(SER_OVERRIDE_INT_2)
-    HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_2, NULL);
+# if defined(CYGPRI_SER_TEST_OVERRIDE_INT_2)
+    HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_2, NULL);
 # endif
 #endif
 
@@ -1180,11 +1041,11 @@ test_open_tty( cyg_io_handle_t* handle )
         CYG_TEST_NA("Cannot run from simulator");
 
 #if defined(HAL_VSR_SET_TO_ECOS_HANDLER)
-# if defined(SER_OVERRIDE_INT_1)
-    HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_1, NULL);
+# if defined(CYGPRI_SER_TEST_OVERRIDE_INT_1)
+    HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_1, NULL);
 # endif
-# if defined(SER_OVERRIDE_INT_2)
-    HAL_VSR_SET_TO_ECOS_HANDLER(SER_OVERRIDE_INT_2, NULL);
+# if defined(CYGPRI_SER_TEST_OVERRIDE_INT_2)
+    HAL_VSR_SET_TO_ECOS_HANDLER(CYGPRI_SER_TEST_OVERRIDE_INT_2, NULL);
 # endif
 #endif
 
--- a/packages/io/wallclock/current/ChangeLog
+++ b/packages/io/wallclock/current/ChangeLog
@@ -1,3 +1,10 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* tests/wallclock2.cxx: Play better with main() startup configury
+
+	* tests/wallclock.cxx: Ensure default priority constructors
+	are called.
+
 2000-07-24  Jonathan Larmour  <jlarmour@redhat.co.uk>
 
 	* tests/wallclock2.cxx: Depend on CYGPKG_LIBC_TIME not CYGPKG_LIBC
--- a/packages/io/wallclock/current/tests/wallclock.cxx
+++ b/packages/io/wallclock/current/tests/wallclock.cxx
@@ -40,6 +40,7 @@
 //####DESCRIPTIONEND####
 // -------------------------------------------------------------------------
 
+#include <pkgconf/hal.h>
 #include <pkgconf/kernel.h>
 
 #include <cyg/kernel/thread.hxx>
@@ -169,9 +170,17 @@ void wallclock_thread( CYG_ADDRWORD id )
 // -------------------------------------------------------------------------
 
 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+externC void
+cyg_hal_invoke_constructors();
+#endif
+
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     CYG_TEST_INIT();
 
     CYG_TEST_INFO("Starting wallclock test");
@@ -203,7 +212,7 @@ externC void
 cyg_start( void )
 {
     CYG_TEST_INIT();
-    CYG_TEST_PASS_FINISH("N/A: Kernel real-time clock/threads timer disabled");
+    CYG_TEST_NA("Kernel real-time clock/threads timer disabled");
 }
 
 #endif // if defined(CYGFUN_KERNEL_THREADS_TIMER) etc...
--- a/packages/io/wallclock/current/tests/wallclock2.cxx
+++ b/packages/io/wallclock/current/tests/wallclock2.cxx
@@ -48,9 +48,19 @@
 #ifdef CYGPKG_LIBC_TIME
 #include <pkgconf/libc_time.h>
 #endif
+#ifdef CYGPKG_LIBC_STARTUP
+#include <pkgconf/libc_startup.h>
+#endif
 
-#if defined(CYGSEM_LIBC_TIME_CLOCK_WORKING)
+#if !defined(CYGSEM_LIBC_TIME_CLOCK_WORKING)
+# define NA_MSG "Requires libc time functions"
+#elif !defined(CYGPKG_LIBC_STARTUP)
+# define NA_MSG "Requires libc startup package"
+#elif !defined(CYGINT_LIBC_STARTUP_CONTEXT)
+# define NA_MSG "Requires main to be invoked"
+#endif
 
+#ifndef NA_MSG
 #include <time.h>
 #include <cyg/io/wallclock.hxx>         // The WallClock API
 
@@ -97,10 +107,6 @@ main (void )
 }
 
 #else 
-#define NA_MSG "Requires libc time functions"
-#endif
-
-#ifdef NA_MSG
 
 externC void
 cyg_start( void )
--- a/packages/kernel/current/ChangeLog
+++ b/packages/kernel/current/ChangeLog
@@ -1,3 +1,57 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* tests/bin_sem0.cxx:
+	* tests/bin_sem1.cxx:
+	* tests/bin_sem2.cxx:
+	* tests/clock0.cxx:
+	* tests/clock1.cxx:
+	* tests/clockcnv.cxx:
+	* tests/cnt_sem0.cxx:
+	* tests/cnt_sem1.cxx:
+	* tests/except1.cxx:
+	* tests/flag0.cxx:
+	* tests/flag1.cxx:
+	* tests/intr0.cxx:
+	* tests/kill.cxx:
+	* tests/mbox1.cxx:
+	* tests/mqueue1.cxx:
+	* tests/mutex0.cxx:
+	* tests/mutex1.cxx:
+	* tests/mutex2.cxx:
+	* tests/mutex3.cxx:
+	* tests/philo.cxx:
+	* tests/release.cxx:
+	* tests/sched1.cxx:
+	* tests/sync2.cxx:
+	* tests/sync3.cxx:
+	* tests/testaux.hxx:
+	* tests/thread0.cxx:
+	* tests/thread1.cxx:
+	* tests/thread2.cxx:
+	* tests/tm_basic.cxx:
+	Make sure default priority constructors have been invoked.
+
+	* include/intr.hxx (class Cyg_Interrupt): Make dsr_count volatile
+	to prevent a potential race condition with overzealous C
+	compilers.
+
+2000-10-13  Nick Garnett  <nickg@cygnus.co.uk>
+
+	* src/sched/sched.cxx (unlock_inner): Added condition to test for
+	DSRs to only call DSRs when the scheduler lock is making a 0->1
+	transition. Otherwise there is the danger of calling DSRs when the
+	scheduler lock is > 1. This violates our original assumptions
+	about how the scheduler lock worked with respect to DSR. 
+
+	* src/intr/intr.cxx (call_pending_DSRs): Added assert to check
+	that DSRs are only called when the scheduler lock is exactly 1.
+
+2000-10-13  Jesper Skov  <jskov@redhat.com>
+
+	* include/intr.hxx: Fixing syntax mistake; volatile keyword must
+	appear after the type for it to affect the pointer variable.
+	* src/intr/intr.cxx: Same. Remove volatile from local block.
+
 2000-10-05  Jesper Skov  <jskov@redhat.co.uk>
 
 	* src/intr/intr.cxx: Made dsr_table_tail volatile as well.
--- a/packages/kernel/current/include/intr.hxx
+++ b/packages/kernel/current/include/intr.hxx
@@ -163,11 +163,11 @@ class Cyg_Interrupt
 #endif
 #ifdef CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST
 
-    cyg_ucount32 dsr_count;	      // Number of DSR posts made
+    volatile cyg_ucount32 dsr_count;	      // Number of DSR posts made
 
-    volatile Cyg_Interrupt *next_dsr; // next DSR in list
+    Cyg_Interrupt* volatile next_dsr; // next DSR in list
     
-    static volatile Cyg_Interrupt *dsr_list; // static list of pending DSRs
+    static Cyg_Interrupt* volatile dsr_list; // static list of pending DSRs
     
 #endif
 
--- a/packages/kernel/current/src/intr/intr.cxx
+++ b/packages/kernel/current/src/intr/intr.cxx
@@ -125,7 +125,7 @@ volatile cyg_ucount32 Cyg_Interrupt::dsr
 
 #ifdef CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST
 
-volatile Cyg_Interrupt *Cyg_Interrupt::dsr_list = NULL;
+Cyg_Interrupt* volatile Cyg_Interrupt::dsr_list = NULL;
 
 #endif
 
@@ -160,7 +160,7 @@ Cyg_Interrupt::call_pending_DSRs_inner(v
 
     while( dsr_list != NULL )
     {
-        volatile Cyg_Interrupt *intr;
+        Cyg_Interrupt* intr;
         cyg_uint32 old_intr;
         cyg_count32 count;
         
@@ -198,6 +198,9 @@ cyg_interrupt_call_pending_DSRs(void)
 void
 Cyg_Interrupt::call_pending_DSRs(void)
 {
+    CYG_ASSERT( Cyg_Scheduler::get_sched_lock() == 1,
+                "DSRs being called with sched_lock not equal to 1");
+    
     HAL_INTERRUPT_STACK_CALL_PENDING_DSRS();
 }
 
--- a/packages/kernel/current/src/sched/sched.cxx
+++ b/packages/kernel/current/src/sched/sched.cxx
@@ -130,7 +130,7 @@ void Cyg_Scheduler::unlock_inner( cyg_uc
         // Call any pending DSRs. Do this here to ensure that any
         // threads that get awakened are properly scheduled.
 
-        if( Cyg_Interrupt::DSRs_pending() )
+        if( new_lock == 0 && Cyg_Interrupt::DSRs_pending() )
             Cyg_Interrupt::call_pending_DSRs();
 #endif
 
--- a/packages/kernel/current/tests/bin_sem0.cxx
+++ b/packages/kernel/current/tests/bin_sem0.cxx
@@ -72,6 +72,9 @@ void bin_sem0_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     bin_sem0_main();
 }   
 // EOF bin_sem0.cxx
--- a/packages/kernel/current/tests/bin_sem1.cxx
+++ b/packages/kernel/current/tests/bin_sem1.cxx
@@ -113,6 +113,9 @@ void bin_sem1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     bin_sem1_main();
 }
 // EOF bin_sem1.cxx
--- a/packages/kernel/current/tests/bin_sem2.cxx
+++ b/packages/kernel/current/tests/bin_sem2.cxx
@@ -207,6 +207,9 @@ void bin_sem2_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     bin_sem2_main();
 }
 // EOF bin_sem2.cxx
--- a/packages/kernel/current/tests/clock0.cxx
+++ b/packages/kernel/current/tests/clock0.cxx
@@ -258,6 +258,9 @@ void clock0_main(void)
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     clock0_main();
 }
 
--- a/packages/kernel/current/tests/clock1.cxx
+++ b/packages/kernel/current/tests/clock1.cxx
@@ -103,6 +103,9 @@ void clock1_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     clock1_main();
 }
 
--- a/packages/kernel/current/tests/clockcnv.cxx
+++ b/packages/kernel/current/tests/clockcnv.cxx
@@ -257,6 +257,9 @@ void clockcnv_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     clockcnv_main();
 }
 
--- a/packages/kernel/current/tests/cnt_sem0.cxx
+++ b/packages/kernel/current/tests/cnt_sem0.cxx
@@ -71,6 +71,9 @@ void cnt_sem0_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     cnt_sem0_main();
 }
 
--- a/packages/kernel/current/tests/cnt_sem1.cxx
+++ b/packages/kernel/current/tests/cnt_sem1.cxx
@@ -117,6 +117,9 @@ void cnt_sem1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     cnt_sem1_main();
 }
 
--- a/packages/kernel/current/tests/except1.cxx
+++ b/packages/kernel/current/tests/except1.cxx
@@ -244,6 +244,9 @@ void except0_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     except0_main();
 }
 #else // def CYGPKG_KERNEL_EXCEPTIONS
--- a/packages/kernel/current/tests/flag0.cxx
+++ b/packages/kernel/current/tests/flag0.cxx
@@ -71,6 +71,9 @@ void flag0_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     flag0_main();
 }   
 // EOF flag0.cxx
--- a/packages/kernel/current/tests/flag1.cxx
+++ b/packages/kernel/current/tests/flag1.cxx
@@ -198,6 +198,9 @@ void flag1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     flag1_main();
 }
 
--- a/packages/kernel/current/tests/intr0.cxx
+++ b/packages/kernel/current/tests/intr0.cxx
@@ -192,6 +192,9 @@ void intr0_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     intr0_main();
 }
 // EOF intr0.cxx
--- a/packages/kernel/current/tests/kill.cxx
+++ b/packages/kernel/current/tests/kill.cxx
@@ -174,6 +174,9 @@ void release_main(void)
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     release_main();
 }
 
--- a/packages/kernel/current/tests/mbox1.cxx
+++ b/packages/kernel/current/tests/mbox1.cxx
@@ -183,6 +183,9 @@ void mbox1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     mbox1_main();
 }
 
--- a/packages/kernel/current/tests/mqueue1.cxx
+++ b/packages/kernel/current/tests/mqueue1.cxx
@@ -378,6 +378,9 @@ t1( CYG_ADDRWORD data )
 externC void
 cyg_user_start(void)
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     CYG_TEST_INIT();
 
     CYG_TEST_INFO( "Starting kernel mqueue test 1" );
--- a/packages/kernel/current/tests/mutex0.cxx
+++ b/packages/kernel/current/tests/mutex0.cxx
@@ -79,6 +79,9 @@ void mutex0_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     mutex0_main();
 }   
 // EOF mutex0.cxx
--- a/packages/kernel/current/tests/mutex1.cxx
+++ b/packages/kernel/current/tests/mutex1.cxx
@@ -145,6 +145,9 @@ void mutex1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     mutex1_main();
 }
 // EOF mutex1.cxx
--- a/packages/kernel/current/tests/mutex2.cxx
+++ b/packages/kernel/current/tests/mutex2.cxx
@@ -217,6 +217,9 @@ void mutex2_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     mutex2_main();
 }
 
--- a/packages/kernel/current/tests/mutex3.cxx
+++ b/packages/kernel/current/tests/mutex3.cxx
@@ -37,6 +37,7 @@
 // Description:   Tests mutex priority inheritance
 //####DESCRIPTIONEND####
 
+#include <pkgconf/hal.h>
 #include <pkgconf/kernel.h>
 
 #include <cyg/kernel/sched.hxx>        // Cyg_Scheduler::start()
@@ -51,6 +52,11 @@
 
 #include <cyg/infra/diag.h>             // diag_printf
 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+externC void
+cyg_hal_invoke_constructors();
+#endif
+
 // ------------------------------------------------------------------------
 //
 // These checks should be enough; any other scheduler which has priorities
@@ -406,6 +412,9 @@ static void control_thread( CYG_ADDRWORD
 externC void
 cyg_user_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     new_thread( control_thread, 0, 2, 1 );
 }
 
--- a/packages/kernel/current/tests/philo.cxx
+++ b/packages/kernel/current/tests/philo.cxx
@@ -195,6 +195,9 @@ void Philosopher( CYG_ADDRESS id )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     diag_init();
 
     diag_write_string("Philosophers\n");
--- a/packages/kernel/current/tests/release.cxx
+++ b/packages/kernel/current/tests/release.cxx
@@ -105,6 +105,9 @@ void release_main(void)
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     release_main();
 }
    
--- a/packages/kernel/current/tests/sched1.cxx
+++ b/packages/kernel/current/tests/sched1.cxx
@@ -94,6 +94,9 @@ void sched1_main(void)
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     sched1_main();
 }
 // EOF sched1.cxx
--- a/packages/kernel/current/tests/sync2.cxx
+++ b/packages/kernel/current/tests/sync2.cxx
@@ -183,6 +183,9 @@ void sync2_main(void)
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     sync2_main();
 }
 
--- a/packages/kernel/current/tests/sync3.cxx
+++ b/packages/kernel/current/tests/sync3.cxx
@@ -200,6 +200,9 @@ void sync3_main(void)
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     sync3_main();
 }
    
--- a/packages/kernel/current/tests/testaux.hxx
+++ b/packages/kernel/current/tests/testaux.hxx
@@ -49,6 +49,12 @@
 static inline void *operator new(size_t size, void *ptr) { return ptr; };
 
 
+#include <pkgconf/hal.h>
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+externC void
+cyg_hal_invoke_constructors();
+#endif
+
 #ifdef NTHREADS
 
 #ifndef STACKSIZE
--- a/packages/kernel/current/tests/thread0.cxx
+++ b/packages/kernel/current/tests/thread0.cxx
@@ -97,6 +97,9 @@ void thread0_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     thread0_main();
 }
 // EOF thread0.cxx
--- a/packages/kernel/current/tests/thread1.cxx
+++ b/packages/kernel/current/tests/thread1.cxx
@@ -143,6 +143,9 @@ void thread1_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     thread1_main();
 }
 
--- a/packages/kernel/current/tests/thread2.cxx
+++ b/packages/kernel/current/tests/thread2.cxx
@@ -181,6 +181,9 @@ void thread2_main( void )
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     thread2_main();
 }
 
--- a/packages/kernel/current/tests/tm_basic.cxx
+++ b/packages/kernel/current/tests/tm_basic.cxx
@@ -1708,9 +1708,17 @@ void tm_basic_main( void )
 
 }
 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+externC void
+cyg_hal_invoke_constructors();
+#endif
+
 externC void
 cyg_start( void )
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     tm_basic_main();
 }   
 
--- a/packages/net/tcpip/current/ChangeLog
+++ b/packages/net/tcpip/current/ChangeLog
@@ -1,3 +1,37 @@
+2000-10-17  Hugo Tyson  <hmt@redhat.com>
+2000-10-10  Andrew Lunn <Andrew.Lunn@ascom.ch>
+
+	* src/ecos/support.c (setsoftnet,cyg_panic): Less chatter,
+	particularly not when we're out of MBUFs.
+
+2000-10-17  Hugo Tyson  <hmt@redhat.com>
+2000-10-10  Andrew Lunn <Andrew.Lunn@ascom.ch>
+
+	* src/sys/net/if_bridge.c: Intergrated a more up to date version
+	from the OpenBSD sources. This fixes a few bugs.
+
+2000-10-17  Hugo Tyson  <hmt@redhat.com>
+
+	* src/ecos/support.c (cyg_ktime_init): Start time at 1 Second so
+	that all visible time values are valid; offset time by 1 Second
+	subsequently, for ever.
+
+	* src/sys/netinet/if_ether.c (arpresolve): Undo the change below;
+	instead make "kernel time" be valid ie. more than 1 second into
+	its life.  Dumb stack assumes it takes UNIX-like time to start.
+
+2000-10-16  Hugo Tyson  <hmt@redhat.com>
+
+	* src/sys/netinet/if_ether.c (arpresolve): Deal with the initial
+	case when the route timeout is zero (as initialized).  Otherwise
+	it never actually sent out the initial ARP request packet.  This
+	caused connect() not to work, and thus ftp_test, for example.
+
+	* src/lib/dhcp_support.c (dhcp_start_dhcp_mgt_thread): Also
+	initialize the dhcp semaphore here.  The other place it is init'd
+	[correctly] didn't fire if we use the standard support.  Fixed
+	some absent return value warnings.
+
 2000-10-10  Hugo Tyson  <hmt@redhat.com>
 
 	* src/lib/tftp_server.c (tftpd_server): Modify the server to
--- a/packages/net/tcpip/current/src/ecos/support.c
+++ b/packages/net/tcpip/current/src/ecos/support.c
@@ -110,6 +110,7 @@ void
 cyg_panic(const char *msg, ...)
 {
     cyg_uint32 old_ints;
+    CYG_FAIL( msg );
     HAL_DISABLE_INTERRUPTS(old_ints);
     diag_printf("PANIC: %s\n", msg);
     cyg_test_exit();  // FIXME
@@ -473,7 +474,11 @@ cyg_netint(cyg_addrword_t param)
 void
 setsoftnet(void)
 {
-    diag_printf("setsoftnet\n");
+    // This is called if we are out of MBUFs - it doesn't do anything, and
+    // that situation is handled OK, so don't bother with the diagnostic:
+
+    // diag_printf("setsoftnet\n");
+
     // No need to do this because it is ignored anyway:
     // schednetisr(NETISR_SOFTNET);
 }
@@ -483,37 +488,44 @@ setsoftnet(void)
 static void 
 cyg_ktime_func(cyg_handle_t alarm,cyg_addrword_t data)
 {
-  cyg_tick_count_t now = cyg_current_time();
+    cyg_tick_count_t now = cyg_current_time();
 
-  ktime.tv_usec = (now % hz) * tick;
-  ktime.tv_sec = now / hz;
+    ktime.tv_usec = (now % hz) * tick;
+    ktime.tv_sec = 1 + now / hz;
 }
 
 static void
 cyg_ktime_init(void)
 {
-  static cyg_handle_t ktime_alarm_handle;
-  static cyg_alarm ktime_alarm;
-  cyg_handle_t counter;
+    cyg_handle_t ktime_alarm_handle;
+    static cyg_alarm ktime_alarm;
+    cyg_handle_t counter;
   
-  cyg_clock_to_counter(cyg_real_time_clock(),&counter);
-  cyg_alarm_create(counter,
-		   cyg_ktime_func,
-		   0,
-		   &ktime_alarm_handle,
-		   &ktime_alarm);
+    // Do not start at 0 - net stack thinks 0 an invalid time;
+    // Have a valid time available from right now:
+    ktime.tv_usec = 0;
+    ktime.tv_sec = 1;
 
-  /* We want one alarm every 10ms. */
-  cyg_alarm_initialize(ktime_alarm_handle,cyg_current_time()+1,1);
-  cyg_alarm_enable(ktime_alarm_handle);
+    cyg_clock_to_counter(cyg_real_time_clock(),&counter);
+    cyg_alarm_create(counter,
+                     cyg_ktime_func,
+                     0,
+                     &ktime_alarm_handle,
+                     &ktime_alarm);
+
+    /* We want one alarm every 10ms. */
+    cyg_alarm_initialize(ktime_alarm_handle,cyg_current_time()+1,1);
+    cyg_alarm_enable(ktime_alarm_handle);
 }
 
 //
 // Network initialization
 //   This function is called during system initialization to setup the whole
 // networking environment.
-//
-extern void cyg_do_net_init(void);  // Linker magic to execute this function as 'init'
+
+// Linker magic to execute this function as 'init'
+extern void cyg_do_net_init(void);
+
 extern void ifinit(void);
 extern void loopattach(int);
 extern void bridgeattach(int);
@@ -530,7 +542,7 @@ cyg_net_init(void)
 
     if (_init) return;
 
-    cyg_do_net_init();  // Just forces the linking in of the initializer/constructor
+    cyg_do_net_init();  // Just forces linking in the initializer/constructor
     // Initialize interrupt "flags"
     cyg_flag_init(&netint_flags);
     // Initialize timeouts and net service thread (pseudo-DSRs)
@@ -564,7 +576,7 @@ cyg_net_init(void)
             t->status = 0;  // Device not [currently] available
         }
     }
-    // And attack the loopback interface
+    // And attach the loopback interface
 #ifdef CYGPKG_NET_NLOOP
 #if 0 < CYGPKG_NET_NLOOP
     loopattach(0);
--- a/packages/net/tcpip/current/src/lib/dhcp_support.c
+++ b/packages/net/tcpip/current/src/lib/dhcp_support.c
@@ -90,7 +90,7 @@ int dhcp_bind( void )
 #endif
 
     // If there are no interfaces at all, init it every time, doesn't
-    // matter.
+    // matter.  In case we are called from elsewhere...
     if ( 1
 #ifdef CYGHWR_NET_DRIVER_ETH0
          && eth0_dhcpstate == 0
@@ -165,6 +165,7 @@ int dhcp_halt( void )
     }
     eth1_up = false;
 #endif
+    return 1;
 }
 
 
@@ -180,6 +181,7 @@ int dhcp_release( void )
     if (eth1_up)
         do_dhcp_release(eth1_name, &eth1_bootp_data, &eth1_dhcpstate, &eth1_lease);
 #endif
+    return 1;
 }
 
 
@@ -212,6 +214,7 @@ static cyg_uint8 dhcp_mgt_stack[ STACK_S
 void dhcp_start_dhcp_mgt_thread( void )
 {
     if ( ! dhcp_mgt_thread_h ) {
+        cyg_semaphore_init( &dhcp_needs_attention, 0 );
         cyg_thread_create(
             CYGPKG_NET_DHCP_THREAD_PRIORITY, /* scheduling info (eg pri) */
             dhcp_mgt_entry,             /* entry point function */
--- a/packages/net/tcpip/current/src/sys/net/if_bridge.c
+++ b/packages/net/tcpip/current/src/sys/net/if_bridge.c
@@ -51,9 +51,7 @@
 //####DESCRIPTIONEND####
 //
 //==========================================================================
-
-
-/*	$OpenBSD: if_bridge.c,v 1.25 2000/01/25 22:06:27 jason Exp $	*/
+/*	$OpenBSD: if_bridge.c,v 1.33 2000/06/20 05:50:16 jason Exp $	*/
 
 /*
  * Copyright (c) 1999, 2000 Jason L. Wright (jason@thought.net)
@@ -142,7 +140,7 @@
 
 #ifdef __ECOS
 #include <stdio.h> /* for sprintf */
-#endif
+#endif 
 
 #ifndef	BRIDGE_RTABLE_SIZE
 #define	BRIDGE_RTABLE_SIZE	1024
@@ -163,13 +161,6 @@
 #define BRIDGE_RTABLE_TIMEOUT	240
 #endif
 
-/*
- * This really should be defined in if_llc.h but in case it isn't.
- */
-#ifndef llc_snap
-#define llc_snap        llc_un.type_snap
-#endif
-
 extern int ifqmaxlen;
 
 /*
@@ -217,12 +208,13 @@ struct bridge_softc {
 	LIST_HEAD(bridge_rthead, bridge_rtnode)	*sc_rts;/* hash table */
 };
 
-/*
- * Ethernet header and SNAP header
- */
-struct ehllc {
-	struct ether_header eh;
-	struct llc llc;
+/* SNAP LLC header */
+struct snap {
+	u_int8_t dsap;
+	u_int8_t ssap;
+	u_int8_t control;
+	u_int8_t org[3];
+	u_int16_t type;
 };
 
 struct bridge_softc bridgectl[NBRIDGE];
@@ -232,7 +224,7 @@ int	bridge_ioctl __P((struct ifnet *, u_
 void	bridge_start __P((struct ifnet *));
 void	bridgeintr_frame __P((struct bridge_softc *, struct mbuf *));
 void	bridge_broadcast __P((struct bridge_softc *, struct ifnet *,
-    struct ether_header *, struct mbuf *));
+    struct ether_header *, struct mbuf *)) __attribute ((weak));
 void	bridge_stop __P((struct bridge_softc *));
 void	bridge_init __P((struct bridge_softc *));
 int	bridge_bifconf __P((struct bridge_softc *, struct ifbifconf *));
@@ -248,7 +240,7 @@ struct ifnet *	bridge_rtupdate __P((stru
 struct ifnet *	bridge_rtlookup __P((struct bridge_softc *,
     struct ether_addr *));
 u_int32_t	bridge_hash __P((struct ether_addr *));
-struct mbuf *bridge_blocknonip __P((struct mbuf *));
+int bridge_blocknonip __P((struct ether_header *, struct mbuf *));
 int		bridge_addrule __P((struct bridge_iflist *,
     struct ifbrlreq *, int out));
 int		bridge_flushrule __P((struct bridge_iflist *));
@@ -266,10 +258,8 @@ u_int8_t bridge_filterrule __P((struct b
 /*
  * Filter hooks
  */
-#define	BRIDGE_FILTER_PASS	0
-#define	BRIDGE_FILTER_DROP	1
-int	bridge_filter __P((struct bridge_softc *, struct ifnet *,
-    struct ether_header *, struct mbuf **));
+struct mbuf *bridge_filter __P((struct bridge_softc *, struct ifnet *,
+    struct ether_header *, struct mbuf *m));
 #endif
 
 void
@@ -281,7 +271,7 @@ bridgeattach(unused)
 
 	for (i = 0; i < NBRIDGE; i++) {
 		bridgectl[i].sc_brtmax = BRIDGE_RTABLE_MAX;
-		bridgectl[i].sc_brttimeout = BRIDGE_RTABLE_TIMEOUT * hz;
+		bridgectl[i].sc_brttimeout = BRIDGE_RTABLE_TIMEOUT;
 		LIST_INIT(&bridgectl[i].sc_iflist);
 		ifp = &bridgectl[i].sc_if;
 		sprintf(ifp->if_xname, "bridge%d", i);
@@ -327,7 +317,7 @@ bridge_ioctl(ifp, cmd, data)
 	s = splimp();
 	switch (cmd) {
 	case SIOCBRDGADD:
-#ifndef __ECOS          
+#ifndef __ECOS
 		if ((error = suser(prc->p_ucred, &prc->p_acflag)) != 0)
 			break;
 #endif
@@ -382,15 +372,17 @@ bridge_ioctl(ifp, cmd, data)
 					break;
 			}
 		}
-		else if (ifs->if_type == IFT_ENC) {
 #ifndef __ECOS
 #if NENC > 0
+		else if (ifs->if_type == IFT_ENC) {
 			/* Can't bind enc0 to a bridge */
-			if (ifs->if_softc == &encif[0])
-				return EINVAL;
+			if (ifs->if_softc == &encif[0]) {
+				error = EINVAL;
+				break;
+			}
+		}
 #endif /* NENC */
 #endif
-		}
 		else {
 			error = EINVAL;
 			break;
@@ -539,13 +531,13 @@ bridge_ioctl(ifp, cmd, data)
 		if ((error = suser(prc->p_ucred, &prc->p_acflag)) != 0)
 			break;
 #endif
-		sc->sc_brttimeout = bcacheto->ifbct_time * hz;
+		sc->sc_brttimeout = bcacheto->ifbct_time;
 		untimeout(bridge_rtage, sc);
 		if (bcacheto->ifbct_time != 0)
 			timeout(bridge_rtage, sc, sc->sc_brttimeout);
 		break;
 	case SIOCBRDGGTO:
-		bcacheto->ifbct_time = sc->sc_brttimeout / hz;
+		bcacheto->ifbct_time = sc->sc_brttimeout;
 		break;
 	case SIOCSIFFLAGS:
 		if ((ifp->if_flags & IFF_UP) == IFF_UP)
@@ -645,6 +637,7 @@ bridge_ifdetach(ifp)
 			bridge_rtdelete(bsc, ifp);
 			bridge_flushrule(bif);
 			free(bif, M_DEVBUF);
+			ifp->if_bridge = NULL;
 			break;
 		}
 }
@@ -807,7 +800,7 @@ bridge_init(sc)
 	splx(s);
 
 	if (sc->sc_brttimeout != 0)
-		timeout(bridge_rtage, sc, sc->sc_brttimeout);
+		timeout(bridge_rtage, sc, sc->sc_brttimeout * hz);
 }
 
 /*
@@ -847,8 +840,6 @@ bridge_output(ifp, m, sa, rt)
 	struct ifnet *dst_if;
 	struct ether_addr *src, *dst;
 	struct bridge_softc *sc;
-	struct bridge_iflist *p;
-	struct mbuf *mc;
 	int s;
 
 	if (m->m_len < sizeof(*eh)) {
@@ -879,20 +870,28 @@ bridge_output(ifp, m, sa, rt)
 	 */
 	dst_if = bridge_rtlookup(sc, dst);
 	if (dst_if == NULL || eh->ether_dhost[0] & 1) {
+		struct bridge_iflist *p;
+		struct mbuf *mc;
+		int used = 0;
+
 		for (p = LIST_FIRST(&sc->sc_iflist); p != NULL;
-		    p = LIST_NEXT(p, next)) {
+		     p = LIST_NEXT(p, next)) {
 			if ((p->ifp->if_flags & IFF_RUNNING) == 0)
 				continue;
-
 			if (IF_QFULL(&p->ifp->if_snd)) {
 				sc->sc_if.if_oerrors++;
 				continue;
 			}
 
-			mc = m_copym(m, 0, M_COPYALL, M_NOWAIT);
-			if (mc == NULL) {
-				sc->sc_if.if_oerrors++;
-				continue;
+			if (LIST_NEXT(p, next) == NULL) {
+				used = 1;
+				mc = m;
+			} else {
+				mc = m_copym(m, 0, M_COPYALL, M_NOWAIT);
+				if (mc == NULL) {
+					sc->sc_if.if_oerrors++;
+					continue;
+				}
 			}
 
 			sc->sc_if.if_opackets++;
@@ -901,7 +900,8 @@ bridge_output(ifp, m, sa, rt)
 			if ((p->ifp->if_flags & IFF_OACTIVE) == 0)
 				(*p->ifp->if_start)(p->ifp);
 		}
-		m_freem(m);
+		if (!used)
+			m_freem(m);
 		splx(s);
 		return (0);
 	}
@@ -968,7 +968,7 @@ bridgeintr_frame(sc, m)
 	struct ifnet *src_if, *dst_if;
 	struct bridge_iflist *ifl;
 	struct ether_addr *dst, *src;
-	struct ether_header *eh;
+	struct ether_header eh;
 
 	if ((sc->sc_if.if_flags & IFF_RUNNING) == 0) {
 		m_freem(m);
@@ -995,34 +995,33 @@ bridgeintr_frame(sc, m)
 		return;
 	}
 
-	if (m->m_len < sizeof(*eh)) {
-		m = m_pullup(m, sizeof(*eh));
-		if (m == NULL)
-			return;
+	if (m->m_pkthdr.len < sizeof(eh)) {
+		m_freem(m);
+		return;
 	}
-	eh = mtod(m, struct ether_header *);
-	dst = (struct ether_addr *)&eh->ether_dhost[0];
-	src = (struct ether_addr *)&eh->ether_shost[0];
+	m_copydata(m, 0, sizeof(struct ether_header), (caddr_t)&eh);
+	dst = (struct ether_addr *)&eh.ether_dhost[0];
+	src = (struct ether_addr *)&eh.ether_shost[0];
 
 	/*
 	 * If interface is learning, and if source address
 	 * is not broadcast or multicast, record it's address.
 	 */
 	if ((ifl->bif_flags & IFBIF_LEARNING) &&
-	    (eh->ether_shost[0] & 1) == 0 &&
-	    !(eh->ether_shost[0] == 0 &&
-	      eh->ether_shost[1] == 0 &&
-	      eh->ether_shost[2] == 0 &&
-	      eh->ether_shost[3] == 0 &&
-	      eh->ether_shost[4] == 0 &&
-	      eh->ether_shost[5] == 0))
+	    (eh.ether_shost[0] & 1) == 0 &&
+	    !(eh.ether_shost[0] == 0 &&
+	      eh.ether_shost[1] == 0 &&
+	      eh.ether_shost[2] == 0 &&
+	      eh.ether_shost[3] == 0 &&
+	      eh.ether_shost[4] == 0 &&
+	      eh.ether_shost[5] == 0))
 		bridge_rtupdate(sc, src, src_if, 0, IFBAF_DYNAMIC);
 
 	/*
 	 * If packet is unicast, destined for someone on "this"
 	 * side of the bridge, drop it.
 	 */
-	if (m->m_flags & (M_BCAST | M_MCAST)) {
+	if ((m->m_flags & (M_BCAST | M_MCAST)) == 0) {
 		dst_if = bridge_rtlookup(sc, dst);
 		if (dst_if == src_if) {
 			m_freem(m);
@@ -1061,28 +1060,22 @@ bridgeintr_frame(sc, m)
 		}
 	}
 
-	if (ifl->bif_flags & IFBIF_BLOCKNONIP) {
-		m = bridge_blocknonip(m);
-		if (m == NULL)
-			return;
-		eh = mtod(m, struct ether_header *);
-		dst = (struct ether_addr *)&eh->ether_dhost[0];
-		src = (struct ether_addr *)&eh->ether_shost[0];
+	if (ifl->bif_flags & IFBIF_BLOCKNONIP && bridge_blocknonip(&eh, m)) {
+		m_freem(m);
+		return;
 	}
 
 	if (SIMPLEQ_FIRST(&ifl->bif_brlin) &&
-	    bridge_filterrule(SIMPLEQ_FIRST(&ifl->bif_brlin), eh) ==
+	    bridge_filterrule(SIMPLEQ_FIRST(&ifl->bif_brlin), &eh) ==
 	    BRL_ACTION_BLOCK) {
 		m_freem(m);
 		return;
 	}
 
 #if defined(INET) && (defined(IPFILTER) || defined(IPFILTER_LKM))
-	if (bridge_filter(sc, src_if, eh, &m) == BRIDGE_FILTER_DROP) {
-		if (m != NULL)
-			m_freem(m);
+	m = bridge_filter(sc, src_if, &eh, m);
+	if (m == NULL)
 		return;
-	}
 #endif
 
 	/*
@@ -1091,7 +1084,9 @@ bridgeintr_frame(sc, m)
 	 */
 	if ((m->m_flags & (M_BCAST | M_MCAST)) || dst_if == NULL) {
 		sc->sc_if.if_imcasts++;
-		bridge_broadcast(sc, src_if, eh, m);
+		s = splimp();
+		bridge_broadcast(sc, src_if, &eh, m);
+		splx(s);
 		return;
 	}
 
@@ -1107,7 +1102,7 @@ bridgeintr_frame(sc, m)
 	while (ifl != NULL && ifl->ifp != dst_if)
 		ifl = LIST_NEXT(ifl, next);
 	if (SIMPLEQ_FIRST(&ifl->bif_brlout) &&
-	    bridge_filterrule(SIMPLEQ_FIRST(&ifl->bif_brlout), eh) ==
+	    bridge_filterrule(SIMPLEQ_FIRST(&ifl->bif_brlout), &eh) ==
 	    BRL_ACTION_BLOCK) {
 		m_freem(m);
 		return;
@@ -1128,8 +1123,8 @@ bridgeintr_frame(sc, m)
 }
 
 /*
- * Receive input from an interface.  Rebroadcast if necessary to other
- * bridge members.
+ * Receive input from an interface.  Queue the packet for bridging if its
+ * not for us, and schedule an interrupt.
  */
 struct mbuf *
 bridge_input(ifp, eh, m)
@@ -1141,7 +1136,6 @@ bridge_input(ifp, eh, m)
 	int s;
 	struct bridge_iflist *ifl;
 	struct arpcom *ac;
-	struct ether_header *neh;
 	struct mbuf *mc;
 
 	/*
@@ -1150,6 +1144,9 @@ bridge_input(ifp, eh, m)
 	if (ifp == NULL || ifp->if_bridge == NULL || m == NULL)
 		return (m);
 
+	if ((m->m_flags & M_PKTHDR) == 0)
+		panic("bridge_input(): no HDR");
+
 	sc = (struct bridge_softc *)ifp->if_bridge;
 	if ((sc->sc_if.if_flags & IFF_RUNNING) == 0)
 		return (m);
@@ -1163,11 +1160,10 @@ bridge_input(ifp, eh, m)
 		mc = m_copym2(m, 0, M_COPYALL, M_NOWAIT);
 		if (mc == NULL)
 			return (m);
-		M_PREPEND(mc, sizeof(*eh), M_DONTWAIT);
+		M_PREPEND(mc, sizeof(struct ether_header), M_DONTWAIT);
 		if (mc == NULL)
 			return (m);
-		neh = mtod(mc, struct ether_header *);
-		bcopy(eh, neh, sizeof(struct ether_header));
+		bcopy(eh, mtod(mc, caddr_t), sizeof(struct ether_header));
 		s = splimp();
 		if (IF_QFULL(&sc->sc_if.if_snd)) {
 			m_freem(mc);
@@ -1183,30 +1179,27 @@ bridge_input(ifp, eh, m)
 	/*
 	 * Unicast, make sure it's not for us.
 	 */
-	ifl = LIST_FIRST(&sc->sc_iflist);
-	while (ifl != NULL) {
-		if (ifl->ifp->if_type == IFT_ETHER) {
-			ac = (struct arpcom *)ifl->ifp;
-			if (bcmp(ac->ac_enaddr, eh->ether_dhost,
-			    ETHER_ADDR_LEN) == 0) {
+	for (ifl = LIST_FIRST(&sc->sc_iflist);ifl; ifl = LIST_NEXT(ifl,next)) {
+		if (ifl->ifp->if_type != IFT_ETHER)
+			continue;
+		ac = (struct arpcom *)ifl->ifp;
+		if (bcmp(ac->ac_enaddr, eh->ether_dhost, ETHER_ADDR_LEN) == 0) {
+			if (ifl->bif_flags & IFBIF_LEARNING)
 				bridge_rtupdate(sc,
-				    (struct ether_addr *)&eh->ether_dhost[0],
+				    (struct ether_addr *)&eh->ether_dhost,
 				    ifp, 0, IFBAF_DYNAMIC);
-				return (m);
-			}
-			if (bcmp(ac->ac_enaddr, eh->ether_shost,
-			    ETHER_ADDR_LEN) == 0) {
-				m_freem(m);
-				return (NULL);
-			}
+			m->m_pkthdr.rcvif = ifl->ifp;
+			return (m);
 		}
-		ifl = LIST_NEXT(ifl, next);
+		if (bcmp(ac->ac_enaddr, eh->ether_shost, ETHER_ADDR_LEN) == 0) {
+			m_freem(m);
+			return (NULL);
+		}
 	}
-	M_PREPEND(m, sizeof(*eh), M_DONTWAIT);
+	M_PREPEND(m, sizeof(struct ether_header), M_DONTWAIT);
 	if (m == NULL)
 		return (NULL);
-	neh = mtod(m, struct ether_header *);
-	bcopy(eh, neh, sizeof(struct ether_header));
+	bcopy(eh, mtod(m, caddr_t), sizeof(struct ether_header));
 	s = splimp();
 	if (IF_QFULL(&sc->sc_if.if_snd)) {
 		m_freem(m);
@@ -1257,16 +1250,14 @@ bridge_broadcast(sc, ifp, eh, m)
 
 		if (SIMPLEQ_FIRST(&p->bif_brlout) &&
 		    bridge_filterrule(SIMPLEQ_FIRST(&p->bif_brlout), eh) ==
-		    BRL_ACTION_BLOCK) {
+		    BRL_ACTION_BLOCK)
 			continue;
-		}
 
 		/* If last one, reuse the passed-in mbuf */
 		if (LIST_NEXT(p, next) == NULL) {
 			mc = m;
 			used = 1;
-		}
-		else {
+		} else {
 			mc = m_copym(m, 0, M_COPYALL, M_DONTWAIT);
 			if (mc == NULL) {
 				sc->sc_if.if_oerrors++;
@@ -1274,10 +1265,10 @@ bridge_broadcast(sc, ifp, eh, m)
 			}
 		}
 
-		if (p->bif_flags & IFBIF_BLOCKNONIP) {
-			mc = bridge_blocknonip(mc);
-			if (mc == NULL)
-				continue;
+		if (p->bif_flags & IFBIF_BLOCKNONIP &&
+		    bridge_blocknonip(eh, mc)) {
+			m_freem(mc);
+			continue;
 		}
 
 		sc->sc_if.if_opackets++;
@@ -1318,8 +1309,7 @@ bridge_rtupdate(sc, ea, ifp, setflags, f
 
 			for (h = 0; h < BRIDGE_RTABLE_SIZE; h++)
 				LIST_INIT(&sc->sc_rts[h]);
-		}
-		else
+		} else
 			goto done;
 	}
 
@@ -1351,7 +1341,7 @@ bridge_rtupdate(sc, ea, ifp, setflags, f
 		q = p;
 		p = LIST_NEXT(p, brt_next);
 
-		dir = bcmp(ea, &q->brt_addr, sizeof(q->brt_addr));
+		dir = memcmp(ea, &q->brt_addr, sizeof(q->brt_addr));
 		if (dir == 0) {
 			if (setflags) {
 				q->brt_if = ifp;
@@ -1435,7 +1425,7 @@ bridge_rtlookup(sc, ea)
 	h = bridge_hash(ea);
 	p = LIST_FIRST(&sc->sc_rts[h]);
 	while (p != NULL) {
-		dir = bcmp(ea, &p->brt_addr, sizeof(p->brt_addr));
+		dir = memcmp(ea, &p->brt_addr, sizeof(p->brt_addr));
 		if (dir == 0) {
 			splx(s);
 			return (p->brt_if);
@@ -1566,12 +1556,10 @@ bridge_rtage(vsc)
 				if (n->brt_age)
 					n->brt_age = 0;
 				n = LIST_NEXT(n, brt_next);
-			}
-			else if (n->brt_age) {
+			} else if (n->brt_age) {
 				n->brt_age = 0;
 				n = LIST_NEXT(n, brt_next);
-			}
-			else {
+			} else {
 				p = LIST_NEXT(n, brt_next);
 				LIST_REMOVE(n, brt_next);
 				sc->sc_brtcnt--;
@@ -1583,7 +1571,7 @@ bridge_rtage(vsc)
 	splx(s);
 
 	if (sc->sc_brttimeout != 0)
-		timeout(bridge_rtage, sc, sc->sc_brttimeout);
+		timeout(bridge_rtage, sc, sc->sc_brttimeout * hz);
 }
 
 /*
@@ -1750,41 +1738,52 @@ done:
 	return (error);
 }
 
-struct mbuf *
-bridge_blocknonip(m)
+/*
+ * Block non-ip frames:
+ * Returns 0 if frame is ip, and 1 if it should be dropped.
+ */
+int
+bridge_blocknonip(eh, m)
+	struct ether_header *eh;
 	struct mbuf *m;
 {
-	struct ehllc *ehllc;
+	struct snap snap;
 	u_int16_t etype;
 
-	if (m->m_len < sizeof(struct ehllc)) {
-		m = m_pullup(m, sizeof(struct ehllc));
-		if (m == NULL)
-			return (m);
+	if (m->m_pkthdr.len < sizeof(struct ether_header))
+		return (1);
+
+	etype = ntohs(eh->ether_type);
+	switch (etype) {
+	case ETHERTYPE_ARP:
+	case ETHERTYPE_REVARP:
+	case ETHERTYPE_IP:
+	case ETHERTYPE_IPV6:
+		return (0);
 	}
 
-	ehllc = mtod(m, struct ehllc *);
-	etype = ntohs(ehllc->eh.ether_type);
+	if (etype > ETHERMTU)
+		return (1);
 
-	if (etype == ETHERTYPE_ARP || etype == ETHERTYPE_REVARP ||
-	    etype == ETHERTYPE_IP  || etype == ETHERTYPE_IPV6)
-		return (m);
+	if (m->m_pkthdr.len <
+	    (sizeof(struct ether_header) + sizeof(struct snap)))
+		return (1);
+
+	m_copydata(m, sizeof(struct ether_header), sizeof(struct snap),
+	    (caddr_t)&snap);
 
-	if (etype > ETHERMTU)
-		goto notip;
-
-	if (ehllc->llc.llc_control == LLC_UI &&
-	    ehllc->llc.llc_dsap == LLC_SNAP_LSAP &&
-	    ehllc->llc.llc_ssap == LLC_SNAP_LSAP) {
-		etype = ntohs(ehllc->llc.llc_snap.ether_type);
-		if (etype == ETHERTYPE_ARP || etype == ETHERTYPE_REVARP ||
-		    etype == ETHERTYPE_IP  || etype == ETHERTYPE_IPV6)
-			return (m);
+	etype = ntohs(snap.type);
+	if (snap.dsap == LLC_SNAP_LSAP && snap.ssap == LLC_SNAP_LSAP &&
+	    snap.control == LLC_UI &&
+	    snap.org[0] == 0 && snap.org[1] == 0 && snap.org[2] == 0 &&
+	    (etype == ETHERTYPE_ARP ||
+	     etype == ETHERTYPE_REVARP ||
+	     etype == ETHERTYPE_IP ||
+	     etype == ETHERTYPE_IPV6)) {
+		return (0);
 	}
 
-notip:
-	m_freem(m);
-	return (NULL);
+	return (1);
 }
 
 u_int8_t
@@ -1838,8 +1837,7 @@ bridge_addrule(bif, req, out)
 		n->brl_flags &= ~BRL_FLAG_IN;
 		n->brl_flags |= BRL_FLAG_OUT;
 		SIMPLEQ_INSERT_TAIL(&bif->bif_brlout, n, brl_next);
-	}
-	else {
+	} else {
 		n->brl_flags &= ~BRL_FLAG_OUT;
 		n->brl_flags |= BRL_FLAG_IN;
 		SIMPLEQ_INSERT_TAIL(&bif->bif_brlin, n, brl_next);
@@ -1873,110 +1871,87 @@ bridge_flushrule(bif)
 #if defined(INET) && (defined(IPFILTER) || defined(IPFILTER_LKM))
 
 /*
+ * Maximum sized IP header
+ */
+union maxip {
+	struct ip ip;
+	u_int32_t _padding[16];
+};
+
+/*
  * Filter IP packets by peeking into the ethernet frame.  This violates
  * the ISO model, but allows us to act as a IP filter at the data link
  * layer.  As a result, most of this code will look familiar to those
  * who've read net/if_ethersubr.c and netinet/ip_input.c
  */
-int
-bridge_filter(sc, ifp, eh, np)
+struct mbuf *
+bridge_filter(sc, ifp, eh, m)
 	struct bridge_softc *sc;
 	struct ifnet *ifp;
 	struct ether_header *eh;
-	struct mbuf **np;
+	struct mbuf *m;
 {
-	struct mbuf *m = *np;
-	struct ehllc *ehllc;
+	struct snap snap;
+	int hassnap = 0;
 	struct ip *ip;
-	u_int16_t etype;
-	int hlen, r, off = sizeof(struct ether_header);
+	int hlen;
 
 	if (fr_checkp == NULL)
-		return (BRIDGE_FILTER_PASS);
+		return (m);
 
-	if (m->m_len < sizeof(struct ehllc)) {
-		m = m_pullup(m, sizeof(struct ehllc));
-		*np = m;
-		if (m == NULL)
-			return (BRIDGE_FILTER_DROP);
-	}
+	if (eh->ether_type != htons(ETHERTYPE_IP)) {
+		if (eh->ether_type > ETHERMTU ||
+		    m->m_pkthdr.len < (sizeof(struct snap) +
+		    sizeof(struct ether_header)))
+			return (m);
 
-	ehllc = mtod(m, struct ehllc *);
-	etype = ntohs(ehllc->eh.ether_type);
-	if (etype != ETHERTYPE_IP) {
-		if (etype > ETHERMTU)	/* Can't be SNAP */
-			return (BRIDGE_FILTER_PASS);
+		m_copydata(m, sizeof(struct ether_header),
+		    sizeof(struct snap), (caddr_t)&snap);
 
-		if (ehllc->llc.llc_control != LLC_UI ||
-		    ehllc->llc.llc_dsap != LLC_SNAP_LSAP ||
-		    ehllc->llc.llc_ssap != LLC_SNAP_LSAP ||
-		    ehllc->llc.llc_snap.org_code[0] != 0 ||
-		    ehllc->llc.llc_snap.org_code[1] != 0 ||
-		    ehllc->llc.llc_snap.org_code[2] != 0 ||
-		    ntohs(ehllc->llc.llc_snap.ether_type) != ETHERTYPE_IP)
-			return (BRIDGE_FILTER_PASS);
-		off += 8;
+		if (snap.dsap != LLC_SNAP_LSAP || snap.ssap != LLC_SNAP_LSAP ||
+		    snap.control != LLC_UI ||
+		    snap.org[0] != 0 || snap.org[1] != 0 || snap.org[2] ||
+		    snap.type != htons(ETHERTYPE_IP))
+			return (m);
+		hassnap = 1;
 	}
 
-	/*
-	 * We need a full copy because we're going to be destructive
-	 * to the packet before we pass it to the ip filter code.
-	 * XXX This needs to be turned into a munge -> check ->
-	 * XXX unmunge section, for now, we copy.
-	 * XXX Copy at offset 0 so that the mbuf header is copied, too.
-	 */
-	m = m_copym2(m, 0, M_COPYALL, M_NOWAIT);
-	m_adj(m, off);
-	if (m == NULL)
-		return (BRIDGE_FILTER_DROP);
+	m_adj(m, sizeof(struct ether_header));
+	if (hassnap)
+		m_adj(m, sizeof(struct snap));
+
+	if (m->m_pkthdr.len < sizeof(struct ip))
+		goto dropit;
 
-	/*
-	 * Pull up the IP header
-	 */
-	if (m->m_len < sizeof(struct ip)) {
-		m = m_pullup(m, sizeof(struct ip));
-		if (m == NULL)
-			return (BRIDGE_FILTER_DROP);
+	/* Copy minimal header, and drop invalids */
+	if (m->m_len < sizeof(struct ip) &&
+	    (m = m_pullup(m, sizeof(struct ip))) == NULL)
+		return (NULL);
+	ip = mtod(m, struct ip *);
+
+	if (ip->ip_v != IPVERSION)
+		goto dropit;
+
+	hlen = ip->ip_hl << 2;	/* get whole header length */
+	if (hlen < sizeof(struct ip))
+		goto dropit;
+	if (hlen > m->m_len) {
+		if ((m = m_pullup(m, sizeof(struct ip))) == NULL)
+			return (NULL);
+		ip = mtod(m, struct ip *);
 	}
 
-	/*
-	 * Examine the ip header, and drop invalid packets
-	 */
-	ip = mtod(m, struct ip *);
-	if (ip->ip_v != IPVERSION) {
-		r = BRIDGE_FILTER_DROP;
-		goto out;
-	}
-
-	hlen = ip->ip_hl << 2;		/* get whole header length */
-	if (hlen < sizeof(struct ip)) {
-		r = BRIDGE_FILTER_DROP;
-		goto out;
-	}
-	if (hlen > m->m_len) {		/* pull up whole header */
-		if ((m = m_pullup(m, hlen)) == 0) {
-			r = BRIDGE_FILTER_DROP;
-			goto out;
-		}
-		ip = mtod(m, struct ip *);
-	}
-	if ((ip->ip_sum = in_cksum(m, hlen)) != 0) {
-		r = BRIDGE_FILTER_DROP;
-		goto out;
-	}
+	if ((ip->ip_sum = in_cksum(m, hlen)) != 0)
+		goto dropit;
 
 	NTOHS(ip->ip_len);
-	if (ip->ip_len < hlen) {
-		r = BRIDGE_FILTER_DROP;
-		goto out;
-	}
+	if (ip->ip_len < hlen)
+		goto dropit;
 	NTOHS(ip->ip_id);
 	NTOHS(ip->ip_off);
 
-	if (m->m_pkthdr.len < ip->ip_len) {
-		r = BRIDGE_FILTER_DROP;
-		goto out;
-	}
+	if (m->m_pkthdr.len < ip->ip_len)
+		goto dropit;
 	if (m->m_pkthdr.len > ip->ip_len) {
 		if (m->m_len == m->m_pkthdr.len) {
 			m->m_len = ip->ip_len;
@@ -1987,13 +1962,39 @@ bridge_filter(sc, ifp, eh, np)
 
 	/* Finally, we get to filter the packet! */
 	if (fr_checkp && (*fr_checkp)(ip, hlen, ifp, 0, &m))
-		return (BRIDGE_FILTER_DROP);
+		return (NULL);
 
-	r = BRIDGE_FILTER_PASS;
+	/* Rebuild the IP header */
+	if (m->m_len < hlen && ((m = m_pullup(m, hlen)) == NULL))
+		return (NULL);
+	if (m->m_len < sizeof(struct ip))
+		goto dropit;
+	ip = mtod(m, struct ip *);
+	HTONS(ip->ip_len);
+	HTONS(ip->ip_id);
+	HTONS(ip->ip_off);
+	ip->ip_sum = in_cksum(m, hlen);
 
-out:
-	m_freem(m);
-	return (r);
+	/* Reattach SNAP header */
+	if (hassnap) {
+		M_PREPEND(m, sizeof(snap), M_DONTWAIT);
+		if (m == NULL)
+			goto dropit;
+		bcopy(&snap, mtod(m, caddr_t), sizeof(snap));
+	}
+
+	/* Reattach ethernet header */
+	M_PREPEND(m, sizeof(*eh), M_DONTWAIT);
+	if (m == NULL)
+		goto dropit;
+	bcopy(eh, mtod(m, caddr_t), sizeof(*eh));
+
+	return (m);
+
+dropit:
+	if (m != NULL)
+		m_freem(m);
+	return (NULL);
 }
 #endif
 
--- a/packages/redboot/current/ChangeLog
+++ b/packages/redboot/current/ChangeLog
@@ -1,3 +1,50 @@
+2000-10-23  Gary Thomas  <gthomas@redhat.com>
+
+	* cdl/redboot.cdl: 
+	* src/main.c (cyg_start): 
+	* src/flash.c: Script timeout now has a configurable resolution.
+
+2000-10-21  Gary Thomas  <gthomas@redhat.com>
+
+	* src/net/eth_drv.c: Removed obsolete file - now provided by
+	standard IO/ETH package.
+
+2000-10-20  Gary Thomas  <gthomas@redhat.com>
+
+	* src/net/pktbuf.c: Diagnostc - add buffer [list] dumper.
+
+	* src/net/enet.c: Diagnostic - dump when run out of buffers.
+
+	* src/flash.c: Make sure RedBoot flash image size meets
+	certain minimums - currently at least 128K.
+
+2000-10-19  Gary Thomas  <gthomas@redhat.com>
+
+	* cdl/redboot.cdl: Add dependency on 'vectors.o'.
+
+	* include/redboot.h: 
+	* src/misc_funs.c (strcpy, memcmp): 
+	Make function signature [prototype] conform to standards.
+	(memmove, memset): Remove.
+
+2000-10-18  Gary Thomas  <gthomas@redhat.com>
+
+	* cdl/redboot.cdl: Improve dependency checking in make rules.
+
+2000-10-17  Gary Thomas  <gthomas@redhat.com>
+
+	* src/flash.c (fis_create): Add new "-s" option to support padded
+	images (data size not the same as image size in FLASH).
+
+	* include/fis.h: New file - make structure available for export.
+
+	* src/parse.c: New file.
+
+	* include/redboot.h: 
+	* src/main.c: 
+	* cdl/redboot.cdl: Split command line parsing functions to separate 
+	file.
+
 2000-10-05  Gary Thomas  <gthomas@redhat.com>
 
 	* src/net/net_io.c (net_io_revert_console): 
--- a/packages/redboot/current/cdl/redboot.cdl
+++ b/packages/redboot/current/cdl/redboot.cdl
@@ -77,13 +77,13 @@ cdl_package CYGPKG_REDBOOT {
                      stripping before being converted to a binary image.
                      This is handled by a rule in the target CDL."
 
-	compile printf.c misc_funs.c io.c ticks.c
+	compile printf.c misc_funs.c io.c parse.c ticks.c
         compile -library=libextras.a load.c
 
         make -priority 320 {
-            <PREFIX>/bin/redboot.elf : $(PREFIX)/lib/libtarget.a main.o
+            <PREFIX>/bin/redboot.elf : $(PREFIX)/lib/target.ld $(PREFIX)/lib/vectors.o $(PREFIX)/lib/libtarget.a $(PREFIX)/lib/libextras.a main.o
                     @sh -c "mkdir -p $(dir $@)"
-	            $(CC) $(LDFLAGS) -L$(PREFIX)/lib -Ttarget.ld -o $@ $^
+	            $(CC) $(LDFLAGS) -L$(PREFIX)/lib -Ttarget.ld -o $@ main.o
         }
 	make -priority 319 {
            main.o: $(REPOSITORY)/$(PACKAGE)/src/main.c $(PREFIX)/lib/libtarget.a
@@ -160,6 +160,27 @@ cdl_package CYGPKG_REDBOOT {
               data in a separate block of FLASH memory.  This data will
               include such items as the node IP address or startup scripts."
         }
+
+        cdl_option CYGNUM_REDBOOT_FLASH_SCRIPT_TIMEOUT_RESOLUTION {
+            display       "Resolution (in ms) for script timeout value."
+            flavor        data
+            default_value 1000
+            active_if     CYGSEM_REDBOOT_FLASH_CONFIG
+            description "
+              This option controls the resolution of the script timeout.
+              The value is specified in milliseconds (ms), thus to have the
+              script timeout be defined in terms of tenths of seconds, use 100."
+        }
+
+        cdl_option CYGNUM_REDBOOT_FLASH_SCRIPT_DEFAULT_TIMEOUT {
+            display       "Default script timeout value"
+            flavor        data
+            default_value 10
+            active_if     CYGSEM_REDBOOT_FLASH_CONFIG
+            description "
+              This option is used to set the default timeout for startup
+              scripts, when they are enabled."
+        }
     }
 }
 
new file mode 100644
--- /dev/null
+++ b/packages/redboot/current/include/fis.h
@@ -0,0 +1,55 @@
+//==========================================================================
+//
+//      fis.h
+//
+//      RedBoot - FLASH image directory layout
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-07-28
+// Purpose:      
+// Description:  
+//              
+// This code is part of RedBoot (tm).
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+struct fis_image_desc {
+    unsigned char name[16];      // Null terminated name
+    unsigned long flash_base;    // Address within FLASH of image
+    unsigned long mem_base;      // Address in memory where it executes
+    unsigned long size;          // Length of image
+    unsigned long entry_point;   // Execution entry point
+    unsigned char _pad[256-40];
+    unsigned long desc_cksum;    // Checksum over image descriptor
+    unsigned long file_cksum;    // Checksum over image data
+};
--- a/packages/redboot/current/include/redboot.h
+++ b/packages/redboot/current/include/redboot.h
@@ -98,6 +98,7 @@ int  strcmp(const char *s1, const char *
 int  strncmp(const char *s1, const char *s2, int len);
 int  strcmpci(const char *s1, const char *s2);
 int  strncmpci(const char *s1, const char *s2, int len);
+char *strcpy(char *s1, const char *s2);
 
 void mon_write_char(char c);
 int  gets(char *line, int len, int timeout);
@@ -159,6 +160,9 @@ struct option_info {
 #define OPTION_ARG_TYPE_STR 1    // Generic string
 #define OPTION_ARG_TYPE_FLG 2    // Flag only
 
+// Command line parsing
+struct cmd *parse(char *line, int *argc, char **argv);
+
 extern void init_opts(struct option_info *opts, char flag, bool takes_arg, 
                       int arg_type, void **arg, bool *arg_set, char *name);
 extern bool scan_opts(int argc, char *argv[], int first, 
--- a/packages/redboot/current/src/flash.c
+++ b/packages/redboot/current/src/flash.c
@@ -45,17 +45,7 @@
 
 #include <redboot.h>
 #include <cyg/io/flash.h>
-
-struct image_desc {
-    unsigned char name[16];      // Null terminated name
-    unsigned long flash_base;    // Address within FLASH of image
-    unsigned long mem_base;      // Address in memory where it executes
-    unsigned long size;          // Length of image
-    unsigned long entry_point;   // Execution entry point
-    unsigned char _pad[256-40];
-    unsigned long desc_cksum;    // Checksum over image descriptor
-    unsigned long file_cksum;    // Checksum over image data
-};
+#include <fis.h>
 
 // Exported CLI functions
 RedBoot_cmd("fis", 
@@ -124,7 +114,7 @@ local_cmd_entry("load",
     );
 local_cmd_entry("create",
                 "Create an image",
-                "-b <mem_base> -l <length> [-f <flash_addr>] [-e <entry_point>] [-r <ram_addr>] <name>",
+                "-b <mem_base> -l <image_length> [-s <data_length>] [-f <flash_addr>] [-e <entry_point>] [-r <ram_addr>] <name>",
                 fis_create,
                 FIS_cmds
     );
@@ -151,13 +141,14 @@ static void
 fis_init(int argc, char *argv[])
 {
     int stat, img_count = 0;
-    struct image_desc *img;
+    struct fis_image_desc *img;
     void *fis_base, *err_addr;
 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
     void *cfg_base;
 #endif
     bool full_init = false;
     struct option_info opts[1];
+    unsigned long redboot_image_size;
 
     init_opts(&opts[0], 'f', false, OPTION_ARG_TYPE_FLG, 
               (void **)&full_init, (bool *)0, "full initialization, erases all of flash");
@@ -180,19 +171,21 @@ fis_init(int argc, char *argv[])
         printf("    Warning: device contents not erased, some blocks may not be usable\n");
     }
     // Create a pseudo image for RedBoot
-    img = (struct image_desc *)fis_work_block;
+#define MIN_REDBOOT_IMAGE_SIZE 0x20000
+    redboot_image_size = block_size > MIN_REDBOOT_IMAGE_SIZE ? block_size : MIN_REDBOOT_IMAGE_SIZE;
+    img = (struct fis_image_desc *)fis_work_block;
     memset(img, 0, sizeof(*img));
     strcpy(img->name, "RedBoot");
     img->flash_base = (unsigned long)flash_start;
     img->mem_base = (unsigned long)flash_start;
-    img->size = block_size;
+    img->size = redboot_image_size;
     img++;  img_count++;
     // And a backup image
     memset(img, 0, sizeof(*img));
     strcpy(img->name, "RedBoot[backup]");
-    img->flash_base = (unsigned long)flash_start+block_size;
-    img->mem_base = (unsigned long)flash_start+block_size;
-    img->size = block_size;
+    img->flash_base = (unsigned long)flash_start+redboot_image_size;
+    img->mem_base = (unsigned long)flash_start+redboot_image_size;
+    img->size = redboot_image_size;
     img++;  img_count++;
 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
     // And a descriptor for the configuration data
@@ -226,10 +219,10 @@ fis_init(int argc, char *argv[])
 static void
 fis_list(int argc, char *argv[])
 {
-    struct image_desc *img;
+    struct fis_image_desc *img;
     int i;
 
-    img = (struct image_desc *)((unsigned long)flash_end - block_size);    
+    img = (struct fis_image_desc *)((unsigned long)flash_end - block_size);    
     printf("Name              FLASH addr   Mem addr    Length    Entry point\n");
     for (i = 0;  i < block_size/sizeof(*img);  i++, img++) {
         if (img->name[0] != (unsigned char)0xFF) {
@@ -320,17 +313,18 @@ static void
 fis_create(int argc, char *argv[])
 {
     int i, stat;
-    unsigned long mem_addr, exec_addr, flash_addr, entry_addr, length;
+    unsigned long mem_addr, exec_addr, flash_addr, entry_addr, length, img_size;
     char *name;
     bool mem_addr_set = false;
     bool exec_addr_set = false;
     bool entry_addr_set = false;
     bool flash_addr_set = false;
     bool length_set = false;
+    bool img_size_set = false;
     void *fis_addr, *err_addr;
-    struct image_desc *img;
+    struct fis_image_desc *img;
     bool slot_found;
-    struct option_info opts[5];
+    struct option_info opts[6];
     bool prog_ok;
 
     init_opts(&opts[0], 'b', true, OPTION_ARG_TYPE_NUM, 
@@ -342,8 +336,10 @@ fis_create(int argc, char *argv[])
     init_opts(&opts[3], 'f', true, OPTION_ARG_TYPE_NUM, 
               (void **)&flash_addr, (bool *)&flash_addr_set, "FLASH memory base address");
     init_opts(&opts[4], 'l', true, OPTION_ARG_TYPE_NUM, 
-              (void **)&length, (bool *)&length_set, "length");
-    if (!scan_opts(argc, argv, 2, opts, 5, (void *)&name, OPTION_ARG_TYPE_STR, "file name"))
+              (void **)&length, (bool *)&length_set, "image length [in FLASH]");
+    init_opts(&opts[5], 's', true, OPTION_ARG_TYPE_NUM, 
+              (void **)&img_size, (bool *)&img_size_set, "image size [actual data]");
+    if (!scan_opts(argc, argv, 2, opts, 6, (void *)&name, OPTION_ARG_TYPE_STR, "file name"))
     {
         fis_usage("invalid arguments");
         return;
@@ -353,15 +349,25 @@ fis_create(int argc, char *argv[])
         fis_usage("required parameter missing");
         return;
     }
+    if (!img_size_set) {
+        img_size = length;
+    }
+    // 'length' is size of FLASH image, 'img_size' is actual data size
+    // Round up length to FLASH block size
+    length = ((length + block_size - 1) / block_size) * block_size;
+    if (length < img_size) {
+        printf("Invalid FLASH image size/length combination");
+        return;
+    }
     if (flash_addr_set &&
         ((stat = flash_verify_addr((void *)flash_addr)) ||
-         (stat = flash_verify_addr((void *)(flash_addr+length-1))))) {
+         (stat = flash_verify_addr((void *)(flash_addr+img_size-1))))) {
         printf("Invalid FLASH address: %p (%s)\n", (void *)flash_addr, flash_errmsg(stat));
         printf("   valid range is %p-%p\n", (void *)flash_start, (void *)flash_end);
         return;
     }
     if ((mem_addr < (unsigned long)ram_start) ||
-        ((mem_addr+length) >= (unsigned long)ram_end)) {
+        ((mem_addr+img_size) >= (unsigned long)ram_end)) {
         printf("** WARNING: RAM address: %p may be invalid\n", (void *)mem_addr);
         printf("   valid range is %p-%p\n", (void *)ram_start, (void *)ram_end);
     }
@@ -378,7 +384,7 @@ fis_create(int argc, char *argv[])
     slot_found = false;
     fis_addr = (void *)((unsigned long)flash_end - block_size);
     memcpy(fis_work_block, fis_addr, block_size);
-    img = (struct image_desc *)fis_work_block;
+    img = (struct fis_image_desc *)fis_work_block;
     for (i = 0;  i < block_size/sizeof(*img);  i++, img++) {
         if ((img->name[0] != (unsigned char)0xFF) && (strcmp(name, img->name) == 0)) {
             if (flash_addr_set && (img->flash_base != flash_addr)) {
@@ -399,7 +405,7 @@ fis_create(int argc, char *argv[])
     }
     // If not found, try and find an empty slot
     if (!slot_found) {
-        img = (struct image_desc *)fis_work_block;
+        img = (struct fis_image_desc *)fis_work_block;
         for (i = 0;  i < block_size/sizeof(*img);  i++, img++) {
             if (img->name[0] == (unsigned char)0xFF) {
                 slot_found = true;
@@ -408,7 +414,7 @@ fis_create(int argc, char *argv[])
         }
     }
     // Safety check - make sure the address range is not within the code we're running
-    if (flash_code_overlaps((void *)flash_addr, (void *)(flash_addr+length-1))) {
+    if (flash_code_overlaps((void *)flash_addr, (void *)(flash_addr+img_size-1))) {
         printf("Can't program this region - contains code in use!\n");
         return;
     }
@@ -422,7 +428,7 @@ fis_create(int argc, char *argv[])
     }
     if (prog_ok) {
         // Now program it
-        if ((stat = flash_program((void *)flash_addr, (void *)mem_addr, length, (void **)&err_addr)) != 0) {
+        if ((stat = flash_program((void *)flash_addr, (void *)mem_addr, img_size, (void **)&err_addr)) != 0) {
             printf("Can't program region at %p: %x(%s)\n", err_addr, stat, flash_errmsg(stat));
             prog_ok = false;
         }
@@ -567,7 +573,7 @@ fis_delete(int argc, char *argv[])
     char *name;
     int i, stat;
     void *fis_addr, *err_addr;
-    struct image_desc *img;
+    struct fis_image_desc *img;
     bool slot_found;
 
     if (!scan_opts(argc, argv, 2, 0, 0, (void **)&name, OPTION_ARG_TYPE_STR, "image name"))
@@ -579,7 +585,7 @@ fis_delete(int argc, char *argv[])
     slot_found = false;
     fis_addr = (void *)((unsigned long)flash_end - block_size);
     memcpy(fis_work_block, fis_addr, block_size);
-    img = (struct image_desc *)fis_work_block;
+    img = (struct fis_image_desc *)fis_work_block;
     img += 2;  // Skip reserved files
     for (i = 2;  i < block_size/sizeof(*img);  i++, img++) {
         if ((img->name[0] != (unsigned char)0xFF) && (strcmp(name, img->name) == 0)) {
@@ -618,7 +624,7 @@ fis_load(int argc, char *argv[])
     char *name;
     int i;
     void *fis_addr;
-    struct image_desc *img;
+    struct fis_image_desc *img;
     bool slot_found;
 
     if (!scan_opts(argc, argv, 2, 0, 0, (void **)&name, OPTION_ARG_TYPE_STR, "image name"))
@@ -630,7 +636,7 @@ fis_load(int argc, char *argv[])
     slot_found = false;
     fis_addr = (void *)((unsigned long)flash_end - block_size);
     memcpy(fis_work_block, fis_addr, block_size);
-    img = (struct image_desc *)fis_work_block;
+    img = (struct fis_image_desc *)fis_work_block;
     for (i = 0;  i < block_size/sizeof(*img);  i++, img++) {
         if ((img->name[0] != (unsigned char)0xFF) && (strcmp(name, img->name) == 0)) {
             slot_found = true;
@@ -728,11 +734,18 @@ RedBoot_config_option("Boot script",
                       "boot_script", true,
                       CONFIG_SCRIPT
     );
-RedBoot_config_option("Boot script timeout",
+// Some preprocessor magic for building the [constant] prompt string
+#define __cat(s1,c2,s3) s1 ## #c2 ## s3
+#define _cat(s1,c2,s3) __cat(s1,c2,s3)
+RedBoot_config_option(_cat("Boot script timeout (",
+                           CYGNUM_REDBOOT_FLASH_SCRIPT_TIMEOUT_RESOLUTION,
+                           "ms resolution)"),
                       boot_script_timeout,
                       "boot_script", true,
                       CONFIG_INT
     );
+#undef __cat
+#undef _cat
 
 CYG_HAL_TABLE_BEGIN( __CONFIG_options_TAB__, RedBoot_config_options);
 CYG_HAL_TABLE_END( __CONFIG_options_TAB_END__, RedBoot_config_options);
--- a/packages/redboot/current/src/main.c
+++ b/packages/redboot/current/src/main.c
@@ -55,9 +55,6 @@
 // GDB interfaces
 extern void breakpoint(void);
 
-// Internal functions
-static struct cmd *parse(char *line, int *argc, char **argv);
-
 // CLI command processing (defined in this file)
 RedBoot_cmd("help", 
             "Help about help?", 
@@ -71,7 +68,7 @@ RedBoot_cmd("go",
     );
 RedBoot_cmd("dump", 
             "Display (hex dump) a range of memory", 
-            "<location> [<length>]",
+            "-b <location> [-l <length>]",
             do_dump 
     );
 RedBoot_cmd("cache", 
@@ -81,14 +78,13 @@ RedBoot_cmd("cache",
     );
 
 // Define table boundaries
+CYG_HAL_TABLE_BEGIN( __RedBoot_INIT_TAB__, RedBoot_inits );
+CYG_HAL_TABLE_END( __RedBoot_INIT_TAB_END__, RedBoot_inits );
+extern struct init_tab_entry __RedBoot_INIT_TAB__[], __RedBoot_INIT_TAB_END__;
 CYG_HAL_TABLE_BEGIN( __RedBoot_CMD_TAB__, RedBoot_commands );
 CYG_HAL_TABLE_END( __RedBoot_CMD_TAB_END__, RedBoot_commands );
 extern struct cmd __RedBoot_CMD_TAB__[], __RedBoot_CMD_TAB_END__;
 
-CYG_HAL_TABLE_BEGIN( __RedBoot_INIT_TAB__, RedBoot_inits );
-CYG_HAL_TABLE_END( __RedBoot_INIT_TAB_END__, RedBoot_inits );
-extern struct init_tab_entry __RedBoot_INIT_TAB__[], __RedBoot_INIT_TAB_END__;
-
 //
 // This is the main entry point for RedBoot
 //
@@ -129,9 +125,11 @@ cyg_start(void)
     // Give the guy a chance to abort any boot script
     if (script) {
         unsigned char *hold_script = script;
-        printf("== Executing boot script in %d seconds - enter ^C to abort\n", script_timeout);
+        int script_timeout_ms = script_timeout * CYGNUM_REDBOOT_FLASH_SCRIPT_TIMEOUT_RESOLUTION;
+        printf("== Executing boot script in %d.%03d seconds - enter ^C to abort\n", 
+               script_timeout_ms/1000, script_timeout_ms%1000);
         script = (unsigned char *)0;
-        res = gets(line, sizeof(line), script_timeout*1000);
+        res = gets(line, sizeof(line), script_timeout_ms);
         if (res == -2) {
             script = (unsigned char *)0;  // Disable script
         } else {
@@ -164,7 +162,7 @@ cyg_start(void)
                     if ((cmd = parse(line, &argc, &argv[0])) != (struct cmd *)0) {
                         (cmd->fun)(argc, argv);
                     } else {
-                        printf("Illegal command: %s\n", line);
+                        printf("** Error: Illegal command: %s\n", line);
                     }
                 }
                 prompt = true;
@@ -173,285 +171,6 @@ cyg_start(void)
     }
 }
 
-//
-// Scan through an input line and break it into "arguments".  These
-// are space delimited strings.  Return a structure which points to
-// the strings, similar to a Unix program.
-// Note: original input is destroyed by replacing the delimiters with 
-// null ('\0') characters for ease of use.
-//
-struct cmd *
-parse(char *line, int *argc, char **argv)
-{
-    char *cp = line;
-    int indx = 0;
-
-    while (*cp) {
-        // Skip leading spaces
-        while (*cp && *cp == ' ') cp++;
-        if (!*cp) {
-            break;  // Line ended with a string of spaces
-        }
-        argv[indx++] = cp;
-        while (*cp) {
-            if (*cp == ' ') {
-                *cp++ = '\0';
-                break;
-            } else if (*cp == '"') {
-                // Swallow quote, scan till following one
-                if (argv[indx-1] == cp) {
-                    argv[indx-1] = ++cp;
-                }
-                while (*cp && *cp != '"') cp++;
-                if (!*cp) {
-                    printf("Unbalanced string!\n");
-                } else {
-                    *cp++ = '\0';
-                    break;
-                }
-            } else {
-                cp++;
-            }
-        }
-    }
-    *argc = indx;
-    return cmd_search(__RedBoot_CMD_TAB__, &__RedBoot_CMD_TAB_END__, argv[0]);
-}
-
-//
-// Search through a list of commands
-//
-struct cmd *
-cmd_search(struct cmd *tab, struct cmd *tabend, char *arg)
-{
-    int cmd_len;
-    struct cmd *cmd, *cmd2;
-    // Search command table
-    cmd_len = strlen(arg);
-    cmd = tab;
-    while (cmd != tabend) {
-        if (strncmpci(arg, cmd->str, cmd_len) == 0) {
-            if (strlen(cmd->str) > cmd_len) {
-                // Check for ambiguous commands here
-                // Note: If there are commands which are not length-unique
-                // then this check will be invalid.  E.g. "du" and "dump"
-                bool first = true;
-                cmd2 = tab;
-                while (cmd2 != tabend) {
-                    if ((cmd != cmd2) && 
-                        (strncmpci(arg, cmd2->str, cmd_len) == 0)) {
-                        if (first) {
-                            printf("Ambiguous command '%s', choices are: %s", arg, cmd->str);
-                            first = false;
-                        }
-                        printf(" %s", cmd2->str);
-                    }
-                    cmd2++;
-                }
-                if (!first) {
-                    // At least one ambiguity found - fail the lookup
-                    printf("\n");
-                    return (struct cmd *)0;
-                }
-            }
-            return cmd;
-        }
-        cmd++;
-    }
-    return (struct cmd *)0;
-}
-
-void
-cmd_usage(struct cmd *tab, struct cmd *tabend, char *prefix)
-{
-    struct cmd *cmd;
-    printf("Usage:\n"); for (cmd = tab;  cmd != tabend;  cmd++) {
-        printf("  %s%s %s\n", prefix, cmd->str, cmd->usage);
-    }
-}
-
-// Option processing
-
-// Initialize option table entry (required because these entries
-// may have dynamic contents, thus cannot be statically initialized)
-//
-void
-init_opts(struct option_info *opts, char flag, bool takes_arg, 
-          int arg_type, void **arg, bool *arg_set, char *name)
-{
-    opts->flag = flag;
-    opts->takes_arg = takes_arg;
-    opts->arg_type = arg_type,
-    opts->arg = arg;
-    opts->arg_set = arg_set;
-    opts->name = name;
-}
-
-//
-// Scan command line arguments (argc/argv), processing options, etc.
-//
-bool
-scan_opts(int argc, char *argv[], int first, 
-          struct option_info *opts, int num_opts, 
-          void **def_arg, int def_arg_type, char *def_descr)
-{
-    bool ret = true;
-    bool flag_ok;
-    bool def_arg_set = false;
-    int i, j;
-    char c, *s;
-    struct option_info *opt;
-
-    if (def_arg && (def_arg_type == OPTION_ARG_TYPE_STR)) {
-        *def_arg = (char *)0;
-    }
-    opt = opts;
-    for (j = 0;  j < num_opts;  j++, opt++) {
-        if (opt->arg_set) {
-            *opt->arg_set = false;
-        }
-        if (!opt->takes_arg) {
-            switch (opt->arg_type) {
-            case OPTION_ARG_TYPE_NUM:
-                *(int *)opt->arg = 0;
-                break;
-            case OPTION_ARG_TYPE_FLG:
-                *(bool *)opt->arg = false;
-                break;
-            }
-        }
-    }
-    for (i = first;  i < argc;  i++) {
-        if (argv[i][0] == '-') {
-            c = argv[i][1];
-            flag_ok = false;
-            opt = opts;
-            for (j = 0;  j < num_opts;  j++, opt++) {
-                if (c == opt->flag) {
-                    if (opt->arg_set && *opt->arg_set) {
-                        printf("%s alread set\n", opt->name);
-                        ret = false;
-                    }
-                    if (opt->takes_arg) {
-                        if (argv[i][2] == '=') {
-                            s = &argv[i][3];
-                        } else {
-                            s = argv[i+1];
-                            i++;
-                        }
-                        switch (opt->arg_type) {
-                        case OPTION_ARG_TYPE_NUM:
-                            if (!parse_num(s, (unsigned long *)opt->arg, 0, 0)) {
-                                printf("invalid number '%s' for %s\n", s, opt->name);
-                                ret = false;
-                            }
-                            break;
-                        case OPTION_ARG_TYPE_STR:
-                            *opt->arg = s;
-                            break;
-                        }
-                        *opt->arg_set = true;
-                    } else {
-                        switch (opt->arg_type) {
-                        case OPTION_ARG_TYPE_NUM:
-                            *(int *)opt->arg = *(int *)opt->arg + 1;
-                            break;
-                        case OPTION_ARG_TYPE_FLG:
-                            *(bool *)opt->arg = true;
-                            break;
-                        }
-                    }
-                    flag_ok = true;
-                    break;
-                }
-            }
-            if (!flag_ok) {
-                printf("invalid flag '%c'\n", c);
-                ret = false;
-            }
-        } else {
-            if (def_arg) {
-                if (def_arg_set) {
-                    printf("%s already set\n", def_descr);
-                    ret = false;
-                }
-                switch (def_arg_type) {
-                case OPTION_ARG_TYPE_NUM:
-                    if (!parse_num(argv[i], (unsigned long *)def_arg, 0, 0)) {
-                        printf("invalid number '%s' for %s\n", argv[i], def_descr);
-                        ret = false;
-                    }
-                    break;
-                case OPTION_ARG_TYPE_STR:
-                    *def_arg = argv[i];
-                    break;
-                }
-                def_arg_set = true;
-            } else {
-                printf("no default/non-flag arguments supported\n");
-                ret = false;
-            }
-        }
-    }
-    return ret;
-}
-
-//
-// Parse (scan) a number
-//
-bool
-parse_num(char *s, unsigned long *val, char **es, char *delim)
-{
-    bool first = true;
-    int radix = 10;
-    char c;
-    unsigned long result = 0;
-    int digit;
-
-    while (*s == ' ') s++;
-    while (*s) {
-        if (first && (s[0] == '0') && (tolower(s[1]) == 'x')) {
-            radix = 16;
-            s += 2;
-        }
-        first = false;
-        c = *s++;
-        if (_is_hex(c) && ((digit = _from_hex(c)) < radix)) {
-            // Valid digit
-            result = (result * radix) + digit;
-        } else {
-            if (delim != (char *)0) {
-                // See if this character is one of the delimiters
-                char *dp = delim;
-                while (*dp && (c != *dp)) dp++;
-                if (*dp) break;  // Found a good delimiter
-            }
-            return false;  // Malformatted number
-        }
-    }
-    *val = result;
-    if (es != (char **)0) {
-        *es = s;
-    }
-    return true;
-}
-
-bool
-parse_bool(char *s, bool *val)
-{
-    while (*s == ' ') s++;
-    if ((*s == 't') || (*s == 'T')) {
-        *val = true;
-    } else 
-    if ((*s == 'f') || (*s == 'F')) {
-        *val = false;
-    } else {
-        return false;
-    }
-    return true;
-}
-
-
 void
 do_caches(int argc, char *argv[])
 {
@@ -496,22 +215,23 @@ do_help(int argc, char *argv[])
 void
 do_dump(int argc, char *argv[])
 {
+    struct option_info opts[2];
     unsigned long base, len;
+    bool base_set, len_set;
 
-    if (argc < 2) {
+    init_opts(&opts[0], 'b', true, OPTION_ARG_TYPE_NUM, 
+              (void **)&base, (bool *)&base_set, "base address");
+    init_opts(&opts[1], 'l', true, OPTION_ARG_TYPE_NUM, 
+              (void **)&len, (bool *)&len_set, "length");
+    if (!scan_opts(argc, argv, 1, opts, 2, 0, 0, ""))
+    {
+        return;
+    }
+    if (!base_set) {
         printf("Dump what [location]?\n");
         return;
     }
-    if (!parse_num(argv[1], &base, 0, 0)) {
-        printf("Invalid start address: %s\n", argv[1]);
-        return;
-    }
-    if (argc > 2) {
-        if (!parse_num(argv[2], &len, 0, 0)) {
-            printf("Invalid length/end address: %s\n", argv[2]);
-            return;
-        }
-    } else {
+    if (!len_set) {
         len = 32;
     }
     dump_buf((void *)base, len);
--- a/packages/redboot/current/src/misc_funs.c
+++ b/packages/redboot/current/src/misc_funs.c
@@ -64,14 +64,16 @@ strcmp(const char *s1, const char *s2)
     return ((unsigned char)c1 - (unsigned char)c2);
 }
 
-void
+char *
 strcpy(char *s1, const char *s2)
 {
     char c;
+    char *_s1 = s1;
 
     while ((c = *s2++) != '\0')
         *s1++ = c;
     *s1 = '\0';
+    return _s1;
 }
 
 int
@@ -116,15 +118,11 @@ strncmpci(const char *s1, const char *s2
     return 0;
 }
 
-void
-memmove(unsigned char *dst, unsigned char *src, int len)
+int
+memcmp(const void *_dst, const void *_src, size_t len)
 {
-    while (len-- > 0) *dst++ = *src++;
-}
-
-int
-memcmp(const unsigned char *dst, const unsigned char *src, int len)
-{
+    unsigned char *dst = (unsigned char *)_dst;
+    unsigned char *src = (unsigned char *)_src;
     while (len-- > 0) {
         if (*dst++ != *src++) {
             return (*--dst - *--src);
@@ -132,11 +130,3 @@ memcmp(const unsigned char *dst, const u
     }
     return 0;
 }
-
-void
-memset(unsigned char *dst, unsigned char val, int len)
-{
-    while (--len >= 0) {
-        *dst++ = val;
-    }
-}
--- a/packages/redboot/current/src/net/enet.c
+++ b/packages/redboot/current/src/net/enet.c
@@ -74,6 +74,7 @@ void
          */
         if ((pkt = __pktbuf_alloc(ETH_MAX_PKTLEN)) == NULL) {
             printf("__enet_poll: no more buffers\n");
+            __pktbuf_dump();
             while (1) ;
             return;
         }
deleted file mode 100644
--- a/packages/redboot/current/src/net/eth_drv.c
+++ /dev/null
@@ -1,294 +0,0 @@
-//==========================================================================
-//
-//      eth_drv.c
-//
-//      Stand-alone hardware independent networking support for RedBoot
-//
-//==========================================================================
-//####COPYRIGHTBEGIN####
-//                                                                          
-// -------------------------------------------                              
-// The contents of this file are subject to the Red Hat eCos Public License 
-// Version 1.1 (the "License"); you may not use this file except in         
-// compliance with the License.  You may obtain a copy of the License at    
-// http://www.redhat.com/                                                   
-//                                                                          
-// Software distributed under the License is distributed on an "AS IS"      
-// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
-// License for the specific language governing rights and limitations under 
-// the License.                                                             
-//                                                                          
-// The Original Code is eCos - Embedded Configurable Operating System,      
-// released September 30, 1998.                                             
-//                                                                          
-// The Initial Developer of the Original Code is Red Hat.                   
-// Portions created by Red Hat are                                          
-// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
-// All Rights Reserved.                                                     
-// -------------------------------------------                              
-//                                                                          
-//####COPYRIGHTEND####
-//==========================================================================
-//#####DESCRIPTIONBEGIN####
-//
-// Author(s):    gthomas
-// Contributors: gthomas
-// Date:         2000-07-14
-// Purpose:      
-// Description:  
-//              
-// This code is part of RedBoot (tm).
-//
-//####DESCRIPTIONEND####
-//
-//==========================================================================
-
-#include <pkgconf/system.h>
-#include <cyg/infra/cyg_type.h>
-#include <cyg/hal/hal_arch.h>
-#include <cyg/infra/diag.h>
-#include <cyg/hal/drv_api.h>
-#include <eth_drv.h>
-#include <netdev.h>
-
-// High-level ethernet driver
-
-// Interfaces exported to drivers
-
-static void eth_drv_init(struct eth_drv_sc *sc, unsigned char *enaddr);
-static void eth_drv_recv(struct eth_drv_sc *sc, int total_len);
-static void eth_drv_tx_done(struct eth_drv_sc *sc, unsigned long key, int status);
-
-struct eth_drv_funs eth_drv_funs = {eth_drv_init, eth_drv_recv, eth_drv_tx_done};
-
-int net_debug;  // FIXME
-
-unsigned char      __local_enet_addr[ETHER_ADDR_LEN+2];
-struct eth_drv_sc *__local_enet_sc;
-
-//
-// Buffer 'get' support.  The problem is that this function only gets
-// called when some data is required, but packets may arrive on the device
-// at any time.  More particularly, on some devices when data arrive, all
-// of that data needs to be consumed immediately or be lost.  This process
-// is driven by interrupts, which in the stand-along case are simulated by
-// calling the "poll" interface.
-//
-// Thus there will be a pool of buffers, some free and some full, to try
-// and manage this.
-//
-
-#define MAX_ETH_MSG 1540
-#define NUM_ETH_MSG   16
-
-struct eth_msg {
-    struct eth_msg *next, *prev;
-    int len;   // Actual number of bytes in message
-    unsigned char data[MAX_ETH_MSG];
-};
-
-struct eth_msg_hdr {
-    struct eth_msg *first, *last;
-};
-
-static struct eth_msg_hdr eth_msg_free, eth_msg_full;
-static struct eth_msg eth_msgs[NUM_ETH_MSG];
-
-// Simple queue management functions
-
-static void
-eth_drv_msg_put(struct eth_msg_hdr *hdr, struct eth_msg *msg)
-{
-    if (hdr->first != (struct eth_msg *)hdr) {
-        // Something already in queue
-        hdr->last->next = msg;
-        msg->prev = hdr->last;
-        msg->next = (struct eth_msg *)hdr;
-        hdr->last = msg;
-    } else {
-        hdr->first = hdr->last = msg;
-        msg->next = msg->prev = (struct eth_msg *)hdr;
-    }
-}
-
-static struct eth_msg *
-eth_drv_msg_get(struct eth_msg_hdr *hdr)
-{
-    struct eth_msg *msg;
-    if (hdr->first != (struct eth_msg *)hdr) {
-        msg = hdr->first;
-        hdr->first = msg->next;
-        msg->next->prev = (struct eth_msg *)hdr;
-    } else {
-        msg = (struct eth_msg *)NULL;
-    }
-    return msg;
-}
-
-static void
-eth_drv_buffers_init(void)
-{
-    int i;
-    struct eth_msg *msg = eth_msgs;
-
-    eth_msg_full.first = eth_msg_full.last = (struct eth_msg *)&eth_msg_full;
-    eth_msg_free.first = eth_msg_free.last = (struct eth_msg *)&eth_msg_free;
-    for (i = 0;  i < NUM_ETH_MSG;  i++, msg++) {
-        eth_drv_msg_put(&eth_msg_free, msg);
-    }
-}
-
-//
-// This function is called during system initialization to register a
-// network interface with the system.
-//
-static void
-eth_drv_init(struct eth_drv_sc *sc, unsigned char *enaddr)
-{
-    // Set up hardware address
-    memcpy(&sc->sc_arpcom.esa, enaddr, ETHER_ADDR_LEN);
-    memcpy(__local_enet_addr, enaddr, ETHER_ADDR_LEN);
-    __local_enet_sc = sc;
-    eth_drv_start(sc);
-}
-
-//
-// This [internal] function will be called to stop activity on an interface.
-//
-static void
-eth_drv_stop(struct eth_drv_sc *sc)
-{
-    (sc->funs->stop)(sc);
-}
-
-//
-// This [internal] function will be called to start activity on an interface.
-//
-static void
-eth_drv_start(struct eth_drv_sc *sc)
-{
-    // Perform any hardware initialization
-    (sc->funs->start)(sc, (unsigned char *)&sc->sc_arpcom.esa, 0);
-}
-
-//
-// Send a packet of data to the hardware
-//
-void
-eth_drv_write(char *eth_hdr, char *buf, int len)
-{
-   struct eth_drv_sg sg_list[MAX_ETH_DRV_SG];
-   struct eth_drv_sc *sc = __local_enet_sc;
-   int sent = 0;
-   int sg_len = 2;
-
-   sg_list[0].buf = eth_hdr;
-   sg_list[0].len = 14;  // FIXME
-   sg_list[1].buf = buf;
-   sg_list[1].len = len;
-   (sc->funs->send)(sc, sg_list, sg_len, len+14, (unsigned long)&sent);
-   if (net_debug) {
-       printf("Ethernet send:\n");
-       dump_buf(eth_hdr, 14);
-       dump_buf(buf, len);
-   }
-   while (!sent) {
-       (sc->funs->poll)(sc);
-   }
-}
-
-//
-// This function is called from the hardware driver when an output operation
-// has completed - i.e. the packet has been sent.
-//
-static void
-eth_drv_tx_done(struct eth_drv_sc *sc, unsigned long key, int status)
-{
-    *(int *)key = 1;
-}
-
-//
-// Receive one packet of data from the hardware, if available
-//
-int
-eth_drv_read(char *eth_hdr, char *buf, int len)
-{
-    struct eth_drv_sc *sc = __local_enet_sc;
-    struct eth_msg *msg;
-
-    (sc->funs->poll)(sc);  // Give the driver a chance to fetch packets
-    msg = eth_drv_msg_get(&eth_msg_full);
-    if (msg) {
-        memcpy(eth_hdr, msg->data, 14);
-        memcpy(buf, &msg->data[14], msg->len-14);
-        eth_drv_msg_put(&eth_msg_free, msg);
-        return msg->len;
-    } else {
-        return 0;  // No packets available
-    }
-}
-
-//
-// This function is called from a hardware driver to indicate that an input
-// packet has arrived.  The routine will set up appropriate network resources
-// to hold the data and call back into the driver to retrieve the data.
-//
-static void
-eth_drv_recv(struct eth_drv_sc *sc, int total_len)
-{
-    struct eth_drv_sg sg_list[MAX_ETH_DRV_SG];
-    int               sg_len = 0;
-    struct eth_msg *msg;
-    static unsigned char no_pkt[MAX_ETH_MSG];
-    unsigned char *buf;
-
-    msg = eth_drv_msg_get(&eth_msg_free);
-    if (msg) {
-        buf = msg->data;
-    } else {
-        printf("%s: packet of %d bytes dropped\n", __FUNCTION__, total_len);
-        buf = &no_pkt[0];
-    }
-    sg_list[0].buf = buf;
-    sg_list[0].len = total_len;
-    sg_len = 1;
-    (sc->funs->recv)(sc, sg_list, sg_len);
-    if (net_debug) {
-        printf("Ethernet recv:\n");
-        dump_buf(buf, 14);
-        dump_buf(buf+14, total_len-14);
-    }
-    if (msg) {
-        msg->len = total_len;
-        eth_drv_msg_put(&eth_msg_full, msg);
-    } else {
-        dump_buf(sg_list[0].buf, sg_list[0].len);
-    }
-}
-
-//
-// Network initialization
-//
-int
-net_init(void)
-{
-    cyg_netdevtab_entry_t *t;
-
-    // Make sure the recv buffers are set up
-    eth_drv_buffers_init();
-    __pktbuf_init();
-    // Initialize all network devices
-    for (t = &__NETDEVTAB__[0]; t != &__NETDEVTAB_END__; t++) {
-        if (t->init(t)) {
-            t->status = CYG_NETDEVTAB_STATUS_AVAIL;
-        } else {
-            // What to do if device init fails?
-            t->status = 0;  // Device not [currently] available
-        }
-    }
-    if (!__local_enet_sc) {
-        printf("No network interfaces found\n");
-        return -1;
-    }    
-    return 0;
-}
--- a/packages/redboot/current/src/net/pktbuf.c
+++ b/packages/redboot/current/src/net/pktbuf.c
@@ -84,6 +84,21 @@ void
     }
 }
 
+void
+__pktbuf_dump(void)
+{
+    int i;
+    for (i = 0; i < MAX_PKTBUF; i++) {
+        printf("Buf[%d]/%p: buf: %p, len: %d/%d, next: %p\n", 
+               i,
+               &pktbuf_list[i],
+               pktbuf_list[i].buf,
+               pktbuf_list[i].bufsize,
+               pktbuf_list[i].pkt_bytes,
+               pktbuf_list[i].next);
+    }
+    printf("Free list = %p\n", free_list);
+}
 
 /*
  * simple pktbuf allocation
new file mode 100644
--- /dev/null
+++ b/packages/redboot/current/src/parse.c
@@ -0,0 +1,333 @@
+//==========================================================================
+//
+//      parse.c
+//
+//      RedBoot command line parsing routine
+//
+//==========================================================================
+//####COPYRIGHTBEGIN####
+//                                                                          
+// -------------------------------------------                              
+// The contents of this file are subject to the Red Hat eCos Public License 
+// Version 1.1 (the "License"); you may not use this file except in         
+// compliance with the License.  You may obtain a copy of the License at    
+// http://www.redhat.com/                                                   
+//                                                                          
+// Software distributed under the License is distributed on an "AS IS"      
+// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the 
+// License for the specific language governing rights and limitations under 
+// the License.                                                             
+//                                                                          
+// The Original Code is eCos - Embedded Configurable Operating System,      
+// released September 30, 1998.                                             
+//                                                                          
+// The Initial Developer of the Original Code is Red Hat.                   
+// Portions created by Red Hat are                                          
+// Copyright (C) 1998, 1999, 2000 Red Hat, Inc.                             
+// All Rights Reserved.                                                     
+// -------------------------------------------                              
+//                                                                          
+//####COPYRIGHTEND####
+//==========================================================================
+//#####DESCRIPTIONBEGIN####
+//
+// Author(s):    gthomas
+// Contributors: gthomas
+// Date:         2000-07-14
+// Purpose:      
+// Description:  
+//              
+// This code is part of RedBoot (tm).
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <redboot.h>
+#include <cyg/hal/hal_arch.h>
+#include <cyg/hal/hal_intr.h>
+#include <cyg/hal/hal_cache.h>
+#include CYGHWR_MEMORY_LAYOUT_H
+#include <cyg/hal/hal_tables.h>
+
+// Define table boundaries
+extern struct cmd __RedBoot_CMD_TAB__[], __RedBoot_CMD_TAB_END__;
+
+//
+// Scan through an input line and break it into "arguments".  These
+// are space delimited strings.  Return a structure which points to
+// the strings, similar to a Unix program.
+// Note: original input is destroyed by replacing the delimiters with 
+// null ('\0') characters for ease of use.
+//
+struct cmd *
+parse(char *line, int *argc, char **argv)
+{
+    char *cp = line;
+    int indx = 0;
+
+    while (*cp) {
+        // Skip leading spaces
+        while (*cp && *cp == ' ') cp++;
+        if (!*cp) {
+            break;  // Line ended with a string of spaces
+        }
+        argv[indx++] = cp;
+        while (*cp) {
+            if (*cp == ' ') {
+                *cp++ = '\0';
+                break;
+            } else if (*cp == '"') {
+                // Swallow quote, scan till following one
+                if (argv[indx-1] == cp) {
+                    argv[indx-1] = ++cp;
+                }
+                while (*cp && *cp != '"') cp++;
+                if (!*cp) {
+                    printf("Unbalanced string!\n");
+                } else {
+                    *cp++ = '\0';
+                    break;
+                }
+            } else {
+                cp++;
+            }
+        }
+    }
+    *argc = indx;
+    return cmd_search(__RedBoot_CMD_TAB__, &__RedBoot_CMD_TAB_END__, argv[0]);
+}
+
+//
+// Search through a list of commands
+//
+struct cmd *
+cmd_search(struct cmd *tab, struct cmd *tabend, char *arg)
+{
+    int cmd_len;
+    struct cmd *cmd, *cmd2;
+    // Search command table
+    cmd_len = strlen(arg);
+    cmd = tab;
+    while (cmd != tabend) {
+        if (strncmpci(arg, cmd->str, cmd_len) == 0) {
+            if (strlen(cmd->str) > cmd_len) {
+                // Check for ambiguous commands here
+                // Note: If there are commands which are not length-unique
+                // then this check will be invalid.  E.g. "du" and "dump"
+                bool first = true;
+                cmd2 = tab;
+                while (cmd2 != tabend) {
+                    if ((cmd != cmd2) && 
+                        (strncmpci(arg, cmd2->str, cmd_len) == 0)) {
+                        if (first) {
+                            printf("Ambiguous command '%s', choices are: %s", arg, cmd->str);
+                            first = false;
+                        }
+                        printf(" %s", cmd2->str);
+                    }
+                    cmd2++;
+                }
+                if (!first) {
+                    // At least one ambiguity found - fail the lookup
+                    printf("\n");
+                    return (struct cmd *)0;
+                }
+            }
+            return cmd;
+        }
+        cmd++;
+    }
+    return (struct cmd *)0;
+}
+
+void
+cmd_usage(struct cmd *tab, struct cmd *tabend, char *prefix)
+{
+    struct cmd *cmd;
+    printf("Usage:\n"); for (cmd = tab;  cmd != tabend;  cmd++) {
+        printf("  %s%s %s\n", prefix, cmd->str, cmd->usage);
+    }
+}
+
+// Option processing
+
+// Initialize option table entry (required because these entries
+// may have dynamic contents, thus cannot be statically initialized)
+//
+void
+init_opts(struct option_info *opts, char flag, bool takes_arg, 
+          int arg_type, void **arg, bool *arg_set, char *name)
+{
+    opts->flag = flag;
+    opts->takes_arg = takes_arg;
+    opts->arg_type = arg_type,
+    opts->arg = arg;
+    opts->arg_set = arg_set;
+    opts->name = name;
+}
+
+//
+// Scan command line arguments (argc/argv), processing options, etc.
+//
+bool
+scan_opts(int argc, char *argv[], int first, 
+          struct option_info *opts, int num_opts, 
+          void **def_arg, int def_arg_type, char *def_descr)
+{
+    bool ret = true;
+    bool flag_ok;
+    bool def_arg_set = false;
+    int i, j;
+    char c, *s;
+    struct option_info *opt;
+
+    if (def_arg && (def_arg_type == OPTION_ARG_TYPE_STR)) {
+        *def_arg = (char *)0;
+    }
+    opt = opts;
+    for (j = 0;  j < num_opts;  j++, opt++) {
+        if (opt->arg_set) {
+            *opt->arg_set = false;
+        }
+        if (!opt->takes_arg) {
+            switch (opt->arg_type) {
+            case OPTION_ARG_TYPE_NUM:
+                *(int *)opt->arg = 0;
+                break;
+            case OPTION_ARG_TYPE_FLG:
+                *(bool *)opt->arg = false;
+                break;
+            }
+        }
+    }
+    for (i = first;  i < argc;  i++) {
+        if (argv[i][0] == '-') {
+            c = argv[i][1];
+            flag_ok = false;
+            opt = opts;
+            for (j = 0;  j < num_opts;  j++, opt++) {
+                if (c == opt->flag) {
+                    if (opt->arg_set && *opt->arg_set) {
+                        printf("** Error: %s already specified\n", opt->name);
+                        ret = false;
+                    }
+                    if (opt->takes_arg) {
+                        if (argv[i][2] == '=') {
+                            s = &argv[i][3];
+                        } else {
+                            s = argv[i+1];
+                            i++;
+                        }
+                        switch (opt->arg_type) {
+                        case OPTION_ARG_TYPE_NUM:
+                            if (!parse_num(s, (unsigned long *)opt->arg, 0, 0)) {
+                                printf("** Error: invalid number '%s' for %s\n", s, opt->name);
+                                ret = false;
+                            }
+                            break;
+                        case OPTION_ARG_TYPE_STR:
+                            *opt->arg = s;
+                            break;
+                        }
+                        *opt->arg_set = true;
+                    } else {
+                        switch (opt->arg_type) {
+                        case OPTION_ARG_TYPE_NUM:
+                            *(int *)opt->arg = *(int *)opt->arg + 1;
+                            break;
+                        case OPTION_ARG_TYPE_FLG:
+                            *(bool *)opt->arg = true;
+                            break;
+                        }
+                    }
+                    flag_ok = true;
+                    break;
+                }
+            }
+            if (!flag_ok) {
+                printf("** Error: invalid flag '%c'\n", c);
+                ret = false;
+            }
+        } else {
+            if (def_arg) {
+                if (def_arg_set) {
+                    printf("** Error: %s already specified\n", def_descr);
+                    ret = false;
+                }
+                switch (def_arg_type) {
+                case OPTION_ARG_TYPE_NUM:
+                    if (!parse_num(argv[i], (unsigned long *)def_arg, 0, 0)) {
+                        printf("** Error: invalid number '%s' for %s\n", argv[i], def_descr);
+                        ret = false;
+                    }
+                    break;
+                case OPTION_ARG_TYPE_STR:
+                    *def_arg = argv[i];
+                    break;
+                }
+                def_arg_set = true;
+            } else {
+                printf("** Error: no default/non-flag arguments supported\n");
+                ret = false;
+            }
+        }
+    }
+    return ret;
+}
+
+//
+// Parse (scan) a number
+//
+bool
+parse_num(char *s, unsigned long *val, char **es, char *delim)
+{
+    bool first = true;
+    int radix = 10;
+    char c;
+    unsigned long result = 0;
+    int digit;
+
+    while (*s == ' ') s++;
+    while (*s) {
+        if (first && (s[0] == '0') && (tolower(s[1]) == 'x')) {
+            radix = 16;
+            s += 2;
+        }
+        first = false;
+        c = *s++;
+        if (_is_hex(c) && ((digit = _from_hex(c)) < radix)) {
+            // Valid digit
+            result = (result * radix) + digit;
+        } else {
+            if (delim != (char *)0) {
+                // See if this character is one of the delimiters
+                char *dp = delim;
+                while (*dp && (c != *dp)) dp++;
+                if (*dp) break;  // Found a good delimiter
+            }
+            return false;  // Malformatted number
+        }
+    }
+    *val = result;
+    if (es != (char **)0) {
+        *es = s;
+    }
+    return true;
+}
+
+bool
+parse_bool(char *s, bool *val)
+{
+    while (*s == ' ') s++;
+    if ((*s == 't') || (*s == 'T')) {
+        *val = true;
+    } else 
+    if ((*s == 'f') || (*s == 'F')) {
+        *val = false;
+    } else {
+        return false;
+    }
+    return true;
+}
+
--- a/packages/services/memalloc/common/current/ChangeLog
+++ b/packages/services/memalloc/common/current/ChangeLog
@@ -1,3 +1,14 @@
+2000-10-20  Jonathan Larmour  <jlarmour@redhat.com>
+
+	* tests/dlmalloc1.cxx:
+	* tests/dlmalloc2.cxx:
+	* tests/malloc4.cxx:
+	* tests/memfix1.cxx:
+	* tests/memfix2.cxx:
+	* tests/memvar1.cxx:
+	* tests/memvar2.cxx:
+	Make sure default priority constructors have been invoked.
+
 2000-09-14  Jesper Skov  <jskov@redhat.com>
 
 	* tests/realloc.c (main): fix warning.
--- a/packages/services/memalloc/common/current/tests/dlmalloc1.cxx
+++ b/packages/services/memalloc/common/current/tests/dlmalloc1.cxx
@@ -205,6 +205,9 @@ void dlmalloc1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     dlmalloc1_main();
 }
 // EOF dlmalloc1.cxx
--- a/packages/services/memalloc/common/current/tests/dlmalloc2.cxx
+++ b/packages/services/memalloc/common/current/tests/dlmalloc2.cxx
@@ -142,6 +142,9 @@ void dlmalloc2_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     dlmalloc2_main();
 }
 // EOF dlmalloc2.cxx
--- a/packages/services/memalloc/common/current/tests/malloc4.cxx
+++ b/packages/services/memalloc/common/current/tests/malloc4.cxx
@@ -355,6 +355,9 @@ thrfree( CYG_ADDRWORD data )
 externC void
 cyg_start()
 {
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     CYG_TEST_INIT();
     CYG_TEST_INFO("Starting malloc4 test");
 
--- a/packages/services/memalloc/common/current/tests/memfix1.cxx
+++ b/packages/services/memalloc/common/current/tests/memfix1.cxx
@@ -196,6 +196,9 @@ void memfix1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     memfix1_main();
 }
 // EOF memfix1.cxx
--- a/packages/services/memalloc/common/current/tests/memfix2.cxx
+++ b/packages/services/memalloc/common/current/tests/memfix2.cxx
@@ -134,6 +134,9 @@ void memfix2_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     memfix2_main();
 }
 // EOF memfix2.cxx
--- a/packages/services/memalloc/common/current/tests/memvar1.cxx
+++ b/packages/services/memalloc/common/current/tests/memvar1.cxx
@@ -204,6 +204,9 @@ void memvar1_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     memvar1_main();
 }
 // EOF memvar1.cxx
--- a/packages/services/memalloc/common/current/tests/memvar2.cxx
+++ b/packages/services/memalloc/common/current/tests/memvar2.cxx
@@ -142,6 +142,9 @@ void memvar2_main( void )
 externC void
 cyg_start( void )
 { 
+#ifdef CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG
+    cyg_hal_invoke_constructors();
+#endif
     memvar2_main();
 }
 // EOF memvar2.cxx